Merge lp:~dobey/unity-scope-click/require-both into lp:unity-scope-click

Proposed by dobey
Status: Merged
Approved by: dobey
Approved revision: 453
Merged at revision: 457
Proposed branch: lp:~dobey/unity-scope-click/require-both
Merge into: lp:unity-scope-click
Diff against target: 99 lines (+40/-13)
3 files modified
libclickscope/click/preview.cpp (+19/-12)
libclickscope/click/preview.h (+2/-1)
libclickscope/tests/test_preview.cpp (+19/-0)
To merge this branch: bzr merge lp:~dobey/unity-scope-click/require-both
Reviewer Review Type Date Requested Status
Paweł Stołowski (community) Needs Fixing
Antti Kaijanmäki (community) Approve
PS Jenkins bot continuous-integration Pending
Review via email: mp+295511@code.launchpad.net

Commit message

Don't specify that only 'rating' as required for reviews.

To post a comment you must log in.
Revision history for this message
Antti Kaijanmäki (kaijanmaki) wrote :

LGTM.

review: Approve
Revision history for this message
Paweł Stołowski (stolowski) wrote :

30 + Review existing_review;
31 if (has_reviewed) {

Review will not get initialized here and if has_reviewed is false it may have random id in review.id != 0 check inside createRatingWidget. Please change it to "Review existing_review {}" or initialize it to sane defaults manually.

Otherwise looks good.

review: Needs Fixing

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'libclickscope/click/preview.cpp'
2--- libclickscope/click/preview.cpp 2016-05-25 16:20:04 +0000
3+++ libclickscope/click/preview.cpp 2016-05-31 17:24:38 +0000
4@@ -848,6 +848,21 @@
5 return future.get();
6 }
7
8+scopes::PreviewWidget InstalledPreview::createRatingWidget(const click::Review& review) const
9+{
10+ scopes::PreviewWidget rating("rating", "rating-input");
11+
12+ if (review.id != 0) {
13+ qDebug() << "Review for current user already exists, review id:" << review.id;
14+ rating = scopes::PreviewWidget(std::to_string(review.id), "rating-edit"); // pass review id via widget id
15+ rating.add_attribute_value("review", scopes::Variant(review.review_text));
16+ rating.add_attribute_value("rating", scopes::Variant(review.rating));
17+ rating.add_attribute_value("author", scopes::Variant(review.reviewer_name));
18+ }
19+
20+ return rating;
21+}
22+
23 void InstalledPreview::run(unity::scopes::PreviewReplyProxy const& reply)
24 {
25 const bool force_cache = (metadata.internet_connectivity() == scopes::QueryMetadata::ConnectivityStatus::Disconnected);
26@@ -935,21 +950,13 @@
27 scopes::PreviewWidgetList review_input;
28 bool has_reviewed = reviews.size() > 0 && reviews.front().reviewer_username == userid;
29
30+ Review existing_review;
31+ existing_review.id = 0;
32 if (has_reviewed) {
33- auto existing_review = reviews.front();
34+ existing_review = reviews.front();
35 reviews.pop_front();
36- qDebug() << "Review for current user already exists, review id:" << existing_review.id;
37- scopes::PreviewWidget rating(std::to_string(existing_review.id), "rating-edit"); // pass review id via widget id
38- rating.add_attribute_value("required", scopes::Variant("rating"));
39- rating.add_attribute_value("review", scopes::Variant(existing_review.review_text));
40- rating.add_attribute_value("rating", scopes::Variant(existing_review.rating));
41- rating.add_attribute_value("author", scopes::Variant(existing_review.reviewer_name));
42- review_input.push_back(rating);
43- } else {
44- scopes::PreviewWidget rating("rating", "rating-input");
45- rating.add_attribute_value("required", scopes::Variant("rating"));
46- review_input.push_back(rating);
47 }
48+ review_input.push_back(createRatingWidget(existing_review));
49 cachedWidgets.push(review_input);
50 cachedWidgets.layout.appendToColumn(cachedWidgets.layout.singleColumn.column1, review_input);
51 cachedWidgets.layout.appendToColumn(cachedWidgets.layout.twoColumns.column1, review_input);
52
53=== modified file 'libclickscope/click/preview.h'
54--- libclickscope/click/preview.h 2016-05-25 16:20:04 +0000
55+++ libclickscope/click/preview.h 2016-05-31 17:24:38 +0000
56@@ -261,11 +261,12 @@
57
58 void run(unity::scopes::PreviewReplyProxy const& reply) override;
59
60-protected:
61 void getApplicationUri(const Manifest& manifest, std::function<void(const std::string&)> callback);
62 std::string get_consumer_key();
63 scopes::PreviewWidgetList createButtons(const std::string& uri,
64 const click::Manifest& manifest);
65+ scopes::PreviewWidget createRatingWidget(const click::Review& review) const;
66+
67 private:
68 scopes::ActionMetadata metadata;
69 CachedPreviewWidgets cachedWidgets;
70
71=== modified file 'libclickscope/tests/test_preview.cpp'
72--- libclickscope/tests/test_preview.cpp 2016-04-27 14:06:29 +0000
73+++ libclickscope/tests/test_preview.cpp 2016-05-31 17:24:38 +0000
74@@ -584,6 +584,25 @@
75 ASSERT_EQ(get_action_from_widgets(widgets, 0, 1), "uninstall_click");
76 }
77
78+TEST_F(InstalledPreviewTest, testReviewWidgetIsNew) {
79+ click::InstalledPreview preview(result, metadata, client, pay_package, depts);
80+ click::Review existing_review;
81+ existing_review.id = 0;
82+ auto widget = preview.createRatingWidget(existing_review);
83+ ASSERT_EQ(widget.widget_type(), "rating-input");
84+}
85+
86+TEST_F(InstalledPreviewTest, testReviewWidgetIsEdit) {
87+ click::InstalledPreview preview(result, metadata, client, pay_package, depts);
88+ click::Review existing_review;
89+ existing_review.id = 123456789;
90+ existing_review.rating = 2.625f;
91+ existing_review.review_text = "Mediocre at best.";
92+ existing_review.reviewer_name = "reviewbot";
93+ auto widget = preview.createRatingWidget(existing_review);
94+ ASSERT_EQ(widget.widget_type(), "rating-edit");
95+}
96+
97 class FakeCancelPurchasePreview : public click::CancelPurchasePreview {
98 public:
99 FakeCancelPurchasePreview(const unity::scopes::Result& result, bool installed)

Subscribers

People subscribed via source and target branches

to all changes: