98
MATCHER_P4(HintPropertiesMatch, title, art, uri, overlay, "")
100
return arg.contains("title") && arg["title"] == unity::scopes::Variant(title) &&
101
arg.contains("art") && arg["art"] == unity::scopes::Variant(art) &&
102
arg.contains("uri") && arg["uri"] == unity::scopes::Variant(uri) &&
103
arg.contains("overlay-color") && arg["overlay-color"] == unity::scopes::Variant(overlay);
98
107
class TestQueryFixture : public ::testing::Test
106
115
, category(std::make_shared<FakeCategory>("fake-container", "fake-container", "Application", unity::scopes::CategoryRenderer()))
107
116
, hidden(new testing::NiceMock<MockHiddenApps>())
108
117
, blacklist(new testing::NiceMock<MockBlacklist>())
118
, data_dir("/some/fake/path")
124
134
EXPECT_CALL(reply, register_category("fake-container", "fake-container", "Application", testing::_)).WillOnce(testing::Return(category));
137
void expect_hint_registry(QString const& query = "")
141
EXPECT_CALL(reply, register_category("hint", "Get more apps from the store", "", testing::_)).WillOnce(testing::Return(category));
145
EXPECT_CALL(reply, register_category("hint", QString("Search for '%1' in the store").arg(query).toStdString(), "", testing::_))
146
.WillOnce(testing::Return(category));
149
auto full_scope = QString("scope://%1?q=%2")
150
.arg(QString::fromStdString(STORE_SCOPE_FULL_NAME))
151
.arg(QString(QUrl::toPercentEncoding(query, QByteArray{}, QByteArray{"."})))
153
EXPECT_CALL(reply, push(testing::Matcher<unity::scopes::CategorisedResult const&>(HintPropertiesMatch("Install X Apps", data_dir+"/store.svg", full_scope, "transparent"))))
154
.WillOnce(testing::Return(true));
127
157
void expect_push(std::string title, std::string art, std::string description, std::string appId, bool success = true)
129
159
EXPECT_CALL(reply, push(testing::Matcher<unity::scopes::CategorisedResult const&>(ResultPropertiesMatch(title, art, description, appId)))).WillOnce(testing::Return(success));
160
191
expect_push_libreoffice();
161
192
expect_push_linux();
162
193
expect_push_library();
194
expect_hint_registry();
164
196
Query query(canned_query, metadata, []() {
165
197
return FakeLibertine::make_fake(LIBERTINE_OUTPUT_WITH_APPS);
166
}, hidden, blacklist);
198
}, hidden, blacklist, data_dir);
167
199
query.run(proxy);
173
205
expect_registry();
174
206
expect_push_libreoffice();
207
expect_hint_registry("li.*office");
175
208
canned_query.set_query_string("li.*office");
177
210
Query query(canned_query, metadata, []() {
178
211
return FakeLibertine::make_fake(LIBERTINE_OUTPUT_WITH_APPS);
179
}, hidden, blacklist);
212
}, hidden, blacklist, data_dir);
180
213
query.run(proxy);
198
231
expect_registry();
199
232
expect_push_linux();
200
233
expect_push_library();
234
expect_hint_registry();
202
236
EXPECT_CALL(*blacklist, app_is_blacklisted(QString("libreoffice"), "fake-container"))
203
237
.WillRepeatedly(testing::Return(true));
205
239
Query query(canned_query, metadata, []() {
206
240
return FakeLibertine::make_fake(LIBERTINE_OUTPUT_WITH_APPS);
207
}, hidden, blacklist);
241
}, hidden, blacklist, data_dir);
208
242
query.run(proxy);
242
277
Query query(canned_query, metadata, []() {
243
278
return FakeLibertine::make_fake(LIBERTINE_OUTPUT_WITH_APPS);
244
}, hidden, blacklist);
279
}, hidden, blacklist, data_dir);
245
280
query.run(proxy);
249
TEST_F(TestQueryFixture, showsHintWhenAllAppsFiltered)
284
TEST_F(TestQueryFixture, showsHintInHiddenDepartmentWhenAllAppsFiltered)
251
286
expect_registry();
253
288
EXPECT_CALL(reply, register_category("hint", "", "", testing::_)).WillOnce(testing::Return(category));
254
289
EXPECT_CALL(reply, push(testing::Matcher<unity::scopes::CategorisedResult const&>(ResultTitleMatch(Query::ALL_RESULTS_FILTERED_HINT)))).WillOnce(testing::Return(true));
256
EXPECT_CALL(*hidden, app_is_hidden(testing::_)).WillRepeatedly(testing::Return(true));
291
EXPECT_CALL(*hidden, app_is_hidden(QString("fake-container/library")))
292
.WillRepeatedly(testing::Return(true));
293
EXPECT_CALL(*hidden, empty())
294
.WillOnce(testing::Return(false));
296
canned_query.set_department_id(HIDDEN_DEPT_ID);
297
canned_query.set_query_string("li.*office");
258
299
Query query(canned_query, metadata, []() {
259
300
return FakeLibertine::make_fake(LIBERTINE_OUTPUT_WITH_APPS);
260
}, hidden, blacklist);
301
}, hidden, blacklist, data_dir);
261
302
query.run(proxy);
265
TEST_F(TestQueryFixture, showsHintWhenNoAppsInContainer)
306
TEST_F(TestQueryFixture, showsHintInHiddenDepartmentWhenNoApps)
267
308
expect_registry();
269
310
EXPECT_CALL(reply, register_category("hint", "", "", testing::_)).WillOnce(testing::Return(category));
270
311
EXPECT_CALL(reply, push(testing::Matcher<unity::scopes::CategorisedResult const&>(ResultTitleMatch(Query::NO_RESULTS_HINT)))).WillOnce(testing::Return(true));
313
EXPECT_CALL(*hidden, app_is_hidden(QString("fake-container/library")))
314
.WillRepeatedly(testing::Return(true));
315
EXPECT_CALL(*hidden, empty())
316
.WillOnce(testing::Return(false));
318
canned_query.set_department_id(HIDDEN_DEPT_ID);
272
320
Query query(canned_query, metadata, []() {
273
321
return FakeLibertine::make_fake("");
274
}, hidden, blacklist);
322
}, hidden, blacklist, data_dir);
277
325
} // anonymous namespace