Merge lp:~dobey/unity-scope-click/update-harness-tests into lp:unity-scope-click

Proposed by dobey
Status: Merged
Approved by: Marcus Tomlinson
Approved revision: 481
Merged at revision: 488
Proposed branch: lp:~dobey/unity-scope-click/update-harness-tests
Merge into: lp:unity-scope-click
Diff against target: 525 lines (+21/-334)
11 files modified
CMakeLists.txt (+1/-1)
debian/control (+1/-1)
debian/tests/control (+2/-2)
debian/tests/run-tests (+1/-2)
tests/scope-harness/applications/com.ubuntu.developer.webapps.webapp-amazon_webapp-amazon_1.0.10.desktop (+0/-12)
tests/scope-harness/applications/com.ubuntu.dropping-letters_dropping-letters_0.1.2.2.67.desktop (+0/-14)
tests/scope-harness/applications/dialer-app.desktop (+2/-2)
tests/scope-harness/applications/webbrowser-app.desktop (+2/-2)
tests/scope-harness/run-harness.sh (+2/-0)
tests/scope-harness/tests/test_apps.py (+10/-57)
tests/scope-harness/tests/test_store.py (+0/-241)
To merge this branch: bzr merge lp:~dobey/unity-scope-click/update-harness-tests
Reviewer Review Type Date Requested Status
Marcus Tomlinson (community) Approve
unity-api-1-bot continuous-integration Approve
Review via email: mp+303722@code.launchpad.net

Commit message

Update and re-enable the harness tests.
Depend on newer version of python3-scope-harness.

To post a comment you must log in.
Revision history for this message
unity-api-1-bot (unity-api-1-bot) wrote :

PASSED: Continuous integration, rev:476
https://jenkins.canonical.com/unity-api-1/job/lp-unity-scope-click-ci/84/
Executed test runs:
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build/455
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-0-fetch/461
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-1-sourcepkg/release=vivid+overlay/366
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-1-sourcepkg/release=xenial+overlay/366
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-1-sourcepkg/release=yakkety/366
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=vivid+overlay/296
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=vivid+overlay/296/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=xenial+overlay/296
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=xenial+overlay/296/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=yakkety/296
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=yakkety/296/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=vivid+overlay/296
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=vivid+overlay/296/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=xenial+overlay/296
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=xenial+overlay/296/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=yakkety/296
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=yakkety/296/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=vivid+overlay/296
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=vivid+overlay/296/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=xenial+overlay/296
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=xenial+overlay/296/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=yakkety/296
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=yakkety/296/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://jenkins.canonical.com/unity-api-1/job/lp-unity-scope-click-ci/84/rebuild

review: Approve (continuous-integration)
Revision history for this message
unity-api-1-bot (unity-api-1-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
unity-api-1-bot (unity-api-1-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
Marcus Tomlinson (marcustomlinson) wrote :

Looks good

review: Approve
Revision history for this message
unity-api-1-bot (unity-api-1-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
unity-api-1-bot (unity-api-1-bot) wrote :
review: Needs Fixing (continuous-integration)
Revision history for this message
unity-api-1-bot (unity-api-1-bot) wrote :

PASSED: Continuous integration, rev:480
https://jenkins.canonical.com/unity-api-1/job/lp-unity-scope-click-ci/115/
Executed test runs:
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build/815
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-0-fetch/821
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=vivid+overlay/627
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=vivid+overlay/627/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=xenial+overlay/627
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=xenial+overlay/627/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=yakkety/627
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=amd64,release=yakkety/627/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=vivid+overlay/627
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=vivid+overlay/627/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=xenial+overlay/627
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=xenial+overlay/627/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=yakkety/627
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=armhf,release=yakkety/627/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=vivid+overlay/627
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=vivid+overlay/627/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=xenial+overlay/627
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=xenial+overlay/627/artifact/output/*zip*/output.zip
    SUCCESS: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=yakkety/627
        deb: https://jenkins.canonical.com/unity-api-1/job/build-2-binpkg/arch=i386,release=yakkety/627/artifact/output/*zip*/output.zip

Click here to trigger a rebuild:
https://jenkins.canonical.com/unity-api-1/job/lp-unity-scope-click-ci/115/rebuild

review: Approve (continuous-integration)
Revision history for this message
Marcus Tomlinson (marcustomlinson) wrote :

Ack

review: Approve
Revision history for this message
Marcus Tomlinson (marcustomlinson) wrote :

Ack (Removal of store tests)

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2016-08-23 20:18:12 +0000
3+++ CMakeLists.txt 2016-10-03 13:42:53 +0000
4@@ -75,7 +75,7 @@
5
6 # Custom targets for the tests
7 add_custom_target (test
8- DEPENDS test-click-scope test-apps-scope test-libclickscope
9+ DEPENDS test-click-scope test-apps-scope test-libclickscope test-integration-harness
10 )
11
12 add_custom_target (test-disabled
13
14=== modified file 'data/departments.db'
15Binary files data/departments.db 2016-06-22 20:41:06 +0000 and data/departments.db 2016-10-03 13:42:53 +0000 differ
16=== modified file 'debian/control'
17--- debian/control 2016-09-22 15:32:09 +0000
18+++ debian/control 2016-10-03 13:42:53 +0000
19@@ -27,7 +27,7 @@
20 pkg-config,
21 python3-all:native,
22 python3-fixtures,
23- python3-scope-harness,
24+ python3-scope-harness (>= 0.5.8),
25 python3-testtools,
26 xvfb,
27 ubuntu-download-manager,
28
29=== modified file 'debian/tests/control'
30--- debian/tests/control 2015-03-31 21:48:34 +0000
31+++ debian/tests/control 2016-10-03 13:42:53 +0000
32@@ -1,10 +1,10 @@
33 Tests: run-tests
34-Restrictions: build-needed allow-stderr
35+Restrictions: allow-stderr
36 Depends: @,
37 click,
38 dpkg-dev,
39 python3-all,
40 python3-fixtures,
41- python3-scope-harness,
42+ python3-scope-harness (>= 0.5.8),
43 python3-testtools,
44 xvfb,
45
46=== modified file 'debian/tests/run-tests'
47--- debian/tests/run-tests 2016-02-10 17:07:17 +0000
48+++ debian/tests/run-tests 2016-10-03 13:42:53 +0000
49@@ -7,5 +7,4 @@
50 export PYTHONPATH=$PYTHONPATH:`pwd`/tests/common
51 export SCOPE_DIR=/usr/lib/`dpkg-architecture -qDEB_HOST_MULTIARCH`/unity-scopes
52
53-# Temporarily disabled due to flakiness of harness: LP: #1532358
54-#exec tests/scope-harness/run-harness.sh `pwd`/tests/scope-harness
55+exec tests/scope-harness/run-harness.sh `pwd`/tests/scope-harness
56
57=== removed file 'tests/scope-harness/applications/com.ubuntu.developer.webapps.webapp-amazon_webapp-amazon_1.0.10.desktop'
58--- tests/scope-harness/applications/com.ubuntu.developer.webapps.webapp-amazon_webapp-amazon_1.0.10.desktop 2015-04-03 18:33:10 +0000
59+++ tests/scope-harness/applications/com.ubuntu.developer.webapps.webapp-amazon_webapp-amazon_1.0.10.desktop 1970-01-01 00:00:00 +0000
60@@ -1,12 +0,0 @@
61-[Desktop Entry]
62-Type=Application
63-Terminal=false
64-Exec=aa-exec-click -p com.ubuntu.developer.webapps.webapp-amazon_webapp-amazon_1.0.10 -- webapp-container --enable-back-forward --webappUrlPatterns=https?://www.amazon.com/*,https?://s.amazon-adsystem.com/* http://www.amazon.com/gp/aw %u
65-Name=Amazon
66-Icon=/custom/click/.click/users/@all/com.ubuntu.developer.webapps.webapp-amazon/./amazon.png
67-X-Ubuntu-Touch=true
68-X-Ubuntu-Single-Instance=true
69-X-Ubuntu-Default-Department-ID=internet
70-Path=/custom/click/.click/users/@all/com.ubuntu.developer.webapps.webapp-amazon
71-X-Ubuntu-Old-Icon=./amazon.png
72-X-Ubuntu-Application-ID=com.ubuntu.developer.webapps.webapp-amazon_webapp-amazon_1.0.10
73
74=== removed file 'tests/scope-harness/applications/com.ubuntu.dropping-letters_dropping-letters_0.1.2.2.67.desktop'
75--- tests/scope-harness/applications/com.ubuntu.dropping-letters_dropping-letters_0.1.2.2.67.desktop 2015-04-03 18:33:10 +0000
76+++ tests/scope-harness/applications/com.ubuntu.dropping-letters_dropping-letters_0.1.2.2.67.desktop 1970-01-01 00:00:00 +0000
77@@ -1,14 +0,0 @@
78-[Desktop Entry]
79-Version=1.0
80-Type=Application
81-Icon=/custom/click/.click/users/@all/com.ubuntu.dropping-letters/./dropping-letters.png
82-Terminal=false
83-Name=Dropping Letters
84-Exec=aa-exec-click -p com.ubuntu.dropping-letters_dropping-letters_0.1.2.2.67 -- qmlscene -qt5 ./dropping-letters.qml
85-X-Ubuntu-Touch=true
86-X-Ubuntu-StageHint=SideStage
87-X-Ubuntu-Default-Department-ID=puzzles
88-
89-Path=/custom/click/.click/users/@all/com.ubuntu.dropping-letters
90-X-Ubuntu-Old-Icon=./dropping-letters.png
91-X-Ubuntu-Application-ID=com.ubuntu.dropping-letters_dropping-letters_0.1.2.2.67
92
93=== modified file 'tests/scope-harness/applications/dialer-app.desktop'
94--- tests/scope-harness/applications/dialer-app.desktop 2015-04-03 18:33:10 +0000
95+++ tests/scope-harness/applications/dialer-app.desktop 2016-10-03 13:42:53 +0000
96@@ -189,13 +189,13 @@
97 Keywords[ug]=تېلېفون ;Dialer;Dial;چاقىرىش;Keypad
98 Keywords[uk]=Phone;Dialer;Dial;Call;Keypad;телефон;набирання;номер;дзвінок;виклик;кнопки
99 Keywords[zh_TW]=Phone;Dialer;Dial;Call;Keypad;手機;通話;撥打;
100-Exec=dialer-app %u
101+Exec=/bin/true
102 Terminal=false
103 Icon=/usr/share/dialer-app/assets/dialer-app.png
104 MimeType=x-scheme-handler/contact;x-scheme-handler/call
105 X-Ubuntu-Touch=true
106 X-Ubuntu-StageHint=SideStage
107 X-Ubuntu-Single-Instance=true
108-X-Ubuntu-Default-Department-ID=accessories
109+X-Ubuntu-Default-Department-ID=communication
110 X-Ubuntu-Splash-Show-Header=true
111 X-Screenshot=/usr/share/dialer-app/assets/dialer-app-screenshot.png
112
113=== modified file 'tests/scope-harness/applications/webbrowser-app.desktop'
114--- tests/scope-harness/applications/webbrowser-app.desktop 2015-04-03 18:33:10 +0000
115+++ tests/scope-harness/applications/webbrowser-app.desktop 2016-10-03 13:42:53 +0000
116@@ -6,13 +6,13 @@
117 Keywords=Internet;WWW;Browser;Web;Explorer
118 Type=Application
119 Icon=/usr/share/webbrowser-app/webbrowser-app.png
120-Exec=webbrowser-app %u
121+Exec=/bin/true
122 Terminal=false
123 Categories=Network;WebBrowser;
124 MimeType=text/html;text/xml;application/xhtml+xml;x-scheme-handler/http;x-scheme-handler/https;
125 X-Ubuntu-Touch=true
126 X-Ubuntu-Gettext-Domain=webbrowser-app
127 X-Ubuntu-Single-Instance=true
128-X-Ubuntu-Default-Department-ID=web-browsers
129+X-Ubuntu-Default-Department-ID=accessories
130 X-Screenshot=/usr/share/webbrowser-app/screenshot.png
131 X-Ubuntu-Splash-Color=#FFFFFF
132
133=== modified file 'tests/scope-harness/run-harness.sh'
134--- tests/scope-harness/run-harness.sh 2015-04-03 19:06:58 +0000
135+++ tests/scope-harness/run-harness.sh 2016-10-03 13:42:53 +0000
136@@ -37,6 +37,8 @@
137 # Copy departments db
138 cp -a ${SOURCE_DIR}/../../data/departments.db ${TEMP_DIR}/cache/click-departments.db
139
140+# Set XDG_DATA_DIRS to /dev/null to avoid system installed apps
141+export XDG_DATA_DIRS=/dev/null
142 export XDG_DATA_HOME=${TEMP_DIR}
143 export XDG_CACHE_HOME=${TEMP_DIR}/cache
144 export XDG_CONFIG_HOME=${TEMP_DIR}/config
145
146=== modified file 'tests/scope-harness/tests/test_apps.py'
147--- tests/scope-harness/tests/test_apps.py 2015-12-08 16:19:07 +0000
148+++ tests/scope-harness/tests/test_apps.py 2016-10-03 13:42:53 +0000
149@@ -65,11 +65,11 @@
150 # Check first apps of every category
151 match = (
152 CategoryListMatcher()
153- .has_exactly(3)
154+ .has_at_least(1)
155 .mode(CategoryListMatcherMode.BY_ID)
156 .category(
157 CategoryMatcher("predefined")
158- .has_at_least(1)
159+ .has_at_least(2)
160 .mode(CategoryMatcherMode.BY_URI)
161 .result(
162 ResultMatcher("application:///dialer-app.desktop")
163@@ -77,26 +77,6 @@
164 .property('installed', True)
165 )
166 )
167- .category(
168- CategoryMatcher("local")
169- .has_at_least(1)
170- .mode(CategoryMatcherMode.STARTS_WITH)
171- .result(
172- ResultMatcher('application:///' +
173- 'com.ubuntu.developer.webapps.' +
174- 'webapp-amazon_webapp-amazon.*')
175- .properties({'installed': True, 'version': '1.0.10'})
176- .title('Amazon')
177- )
178- )
179- .category(
180- CategoryMatcher("store")
181- .has_at_least(1)
182- .mode(CategoryMatcherMode.BY_URI)
183- .result(
184- ResultMatcher('scope://com.canonical.scopes.clickstore.*')
185- )
186- )
187 .match(self.view.categories)
188 )
189 self.assertMatchResult(match)
190@@ -119,19 +99,19 @@
191 .is_root(True) \
192 .is_hidden(False) \
193 .child(ChildDepartmentMatcher('communication')) \
194- .child(ChildDepartmentMatcher('games')) \
195+ .child(ChildDepartmentMatcher('accessories')) \
196 .match(departments)
197 self.assertMatchResult(match)
198
199 def test_department_browsing(self):
200 self.view.search_query = ''
201
202- departments = self.view.browse_department('games')
203+ departments = self.view.browse_department('accessories')
204
205 match = DepartmentMatcher() \
206 .has_exactly(0) \
207 .mode(DepartmentMatcherMode.STARTS_WITH) \
208- .label('Games') \
209+ .label('Utilities') \
210 .all_label('') \
211 .parent_id('') \
212 .parent_label('All') \
213@@ -144,29 +124,16 @@
214 # so should be exactly 2
215 res_match = (
216 CategoryListMatcher()
217- .has_at_least(2)
218+ .has_at_least(1)
219 .mode(CategoryListMatcherMode.BY_ID)
220 .category(
221 CategoryMatcher("local")
222 .has_at_least(1)
223 .mode(CategoryMatcherMode.STARTS_WITH)
224 .result(
225- ResultMatcher('application:///' +
226- 'com.ubuntu.dropping-letters' +
227- '_dropping-letters.*')
228- .art('/custom/click/.click/users/@all/'
229- 'com.ubuntu.dropping-letters/./dropping-letters.png')
230- .properties({'installed': True, 'version': '0.1.2.2.67'})
231- .title('Dropping Letters')
232- )
233- )
234- .category(
235- CategoryMatcher("store")
236- .has_at_least(1)
237- .mode(CategoryMatcherMode.BY_URI)
238- .result(
239- ResultMatcher('scope://' +
240- 'com.canonical.scopes.clickstore.*dep=games')
241+ ResultMatcher('application:///webbrowser-app.desktop')
242+ .art('/usr/share/webbrowser-app/webbrowser-app.png')
243+ .title('Browser')
244 )
245 )
246 .match(self.view.categories)
247@@ -196,31 +163,17 @@
248 # so should be exactly 2
249 res_match = (
250 CategoryListMatcher()
251- .has_at_least(2)
252+ .has_at_least(1)
253 .mode(CategoryListMatcherMode.BY_ID)
254 .category(
255 CategoryMatcher("local")
256 .has_at_least(1)
257 .mode(CategoryMatcherMode.STARTS_WITH)
258 .result(
259- ResultMatcher('application:///webbrowser-app.desktop')
260- .title('Browser')
261- )
262- .result(
263 ResultMatcher('application:///dialer-app.desktop')
264 .title('Phone')
265 )
266 )
267- .category(
268- CategoryMatcher("store")
269- .has_at_least(1)
270- .mode(CategoryMatcherMode.BY_URI)
271- .result(
272- ResultMatcher(
273- 'scope://' +
274- 'com.canonical.scopes.clickstore.*dep=communication')
275- )
276- )
277 .match(self.view.categories)
278 )
279 self.assertMatchResult(res_match)
280
281=== removed file 'tests/scope-harness/tests/test_store.py'
282--- tests/scope-harness/tests/test_store.py 2015-12-08 16:19:07 +0000
283+++ tests/scope-harness/tests/test_store.py 1970-01-01 00:00:00 +0000
284@@ -1,241 +0,0 @@
285-# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-
286-#
287-# Copyright (C) 2015 Canonical Ltd.
288-#
289-# This program is free software; you can redistribute it and/or modify
290-# it under the terms of the GNU General Public License version 3, as published
291-# by the Free Software Foundation.
292-#
293-# This program is distributed in the hope that it will be useful,
294-# but WITHOUT ANY WARRANTY; without even the implied warranty of
295-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
296-# GNU General Public License for more details.
297-#
298-# You should have received a copy of the GNU General Public License
299-# along with this program. If not, see <http://www.gnu.org/licenses/>.
300-
301-import os
302-import testtools
303-
304-from . import ScopeTestBase
305-from scope_harness import (
306- CategoryListMatcher,
307- CategoryListMatcherMode,
308- CategoryMatcher,
309- CategoryMatcherMode,
310- ChildDepartmentMatcher,
311- DepartmentMatcher,
312- DepartmentMatcherMode,
313- Parameters,
314- PreviewColumnMatcher,
315- PreviewMatcher,
316- PreviewView,
317- PreviewWidgetMatcher,
318- ResultMatcher,
319- ScopeHarness,
320-)
321-
322-
323-class StoreTest(ScopeTestBase):
324- def setUp(self):
325- super().setUp()
326- scope_dir = os.environ.get('SCOPE_DIR', None)
327- self.harness = self.launch_scope(scope_dir)
328- self.view = self.harness.results_view
329- self.view.active_scope = 'com.canonical.scopes.clickstore'
330-
331- def launch_scope(self, scope_dir=None):
332- """Find the scope and launch it."""
333- if scope_dir is None:
334- return ScopeHarness.new_from_scope_list(Parameters([
335- "com.canonical.scopes.clickstore.ini"
336- ]))
337- else:
338- scope_path = os.path.join(
339- scope_dir, 'clickstore',
340- 'com.canonical.scopes.clickstore.ini')
341- return ScopeHarness.new_from_scope_list(Parameters([
342- scope_path
343- ]))
344-
345- def test_surfacing_results(self):
346- self.view.browse_department('')
347- self.view.search_query = ''
348- cpi_base = os.environ["U1_SEARCH_BASE_URL"]
349-
350- # Check first apps of every category
351- match = (
352- CategoryListMatcher()
353- .has_exactly(4)
354- .mode(CategoryListMatcherMode.BY_ID)
355- .category(CategoryMatcher("app-of-the-week")
356- .has_at_least(1))
357- .category(
358- CategoryMatcher("top-apps")
359- .has_at_least(1)
360- .mode(CategoryMatcherMode.STARTS_WITH)
361- .result(
362- ResultMatcher(
363- cpi_base +
364- '/api/v1/package/' +
365- 'com.ubuntu.developer.bobo1993324.udropcabin')
366- .properties(
367- {
368- 'installed': False,
369- 'version': '0.2.1',
370- 'price': 0.0,
371- 'price_area': 'FREE',
372- 'rating': '☆ 4.2'
373- })
374- .title('uDropCabin')
375- .subtitle('Zhang Boren')
376- )
377- )
378- .category(
379- CategoryMatcher("our-favorite-games")
380- .has_at_least(1)
381- .mode(CategoryMatcherMode.BY_URI)
382- .result(ResultMatcher(
383- cpi_base + '/api/v1/package/' +
384- 'com.ubuntu.developer.andrew-hayzen.volleyball2d'))
385- )
386- .category(CategoryMatcher("travel-apps")
387- .has_at_least(1))
388- .match(self.view.categories)
389- )
390- self.assertMatchResult(match)
391-
392- def test_surfacing_departments(self):
393- self.view.search_query = ''
394-
395- departments = self.view.browse_department('')
396-
397- self.assertTrue(self.view.has_departments)
398-
399- match = DepartmentMatcher() \
400- .mode(DepartmentMatcherMode.STARTS_WITH) \
401- .id('') \
402- .label('All') \
403- .all_label('') \
404- .parent_id('') \
405- .parent_label('') \
406- .is_root(True) \
407- .is_hidden(False) \
408- .child(ChildDepartmentMatcher('books-comics')) \
409- .child(ChildDepartmentMatcher('business')) \
410- .child(ChildDepartmentMatcher('communication')) \
411- .child(ChildDepartmentMatcher('developer-tools')) \
412- .child(ChildDepartmentMatcher('education')) \
413- .child(ChildDepartmentMatcher('entertainment')) \
414- .child(ChildDepartmentMatcher('finance')) \
415- .child(ChildDepartmentMatcher('food-drink')) \
416- .child(ChildDepartmentMatcher('games')) \
417- .child(ChildDepartmentMatcher('graphics')) \
418- .child(ChildDepartmentMatcher('health-fitness')) \
419- .child(ChildDepartmentMatcher('lifestyle')) \
420- .child(ChildDepartmentMatcher('media-video')) \
421- .child(ChildDepartmentMatcher('medical')) \
422- .child(ChildDepartmentMatcher('music-audio')) \
423- .child(ChildDepartmentMatcher('news-magazines')) \
424- .child(ChildDepartmentMatcher('personalisation')) \
425- .child(ChildDepartmentMatcher('productivity')) \
426- .child(ChildDepartmentMatcher('reference')) \
427- .child(ChildDepartmentMatcher('science-engineering')) \
428- .child(ChildDepartmentMatcher('shopping')) \
429- .child(ChildDepartmentMatcher('social-networking')) \
430- .child(ChildDepartmentMatcher('sports')) \
431- .child(ChildDepartmentMatcher('travel-local')) \
432- .child(ChildDepartmentMatcher('universal-accessaccessibility')) \
433- .child(ChildDepartmentMatcher('accessories')) \
434- .child(ChildDepartmentMatcher('weather')) \
435- .match(departments)
436- self.assertMatchResult(match)
437-
438- def test_department_browsing(self):
439- self.view.search_query = ''
440-
441- departments = self.view.browse_department('games')
442-
443- match = DepartmentMatcher() \
444- .has_exactly(0) \
445- .mode(DepartmentMatcherMode.STARTS_WITH) \
446- .label('Games') \
447- .all_label('') \
448- .parent_id('') \
449- .parent_label('All') \
450- .is_root(False) \
451- .is_hidden(False) \
452- .match(departments)
453- self.assertMatchResult(match)
454-
455- res_match = (
456- CategoryListMatcher()
457- .has_exactly(3)
458- .mode(CategoryListMatcherMode.BY_ID).category(
459- CategoryMatcher("top-games")
460- .has_at_least(1))
461- .category(CategoryMatcher("__all-scopes__")
462- .has_at_least(1))
463- .category(CategoryMatcher("__all-apps__")
464- .has_at_least(1))
465- .match(self.view.categories)
466- )
467- self.assertMatchResult(res_match)
468-
469- @testtools.skip('Fails only under adt-run.')
470- def test_uninstalled_app_preview(self):
471- self.view.browse_department('')
472- self.view.search_query = 'Calendar'
473-
474- pview = self.view.categories[0].results[0].tap()
475- self.assertIsInstance(pview, PreviewView)
476-
477- match = PreviewColumnMatcher().column(
478- PreviewMatcher()
479- .widget(PreviewWidgetMatcher("hdr"))
480- .widget(
481- PreviewWidgetMatcher("buttons")
482- .type("actions")
483- .data(
484- {
485- "actions": [
486- {
487- 'download_sha512': '2fa658804e63da1869037cd' +
488- '9bc74b792875404f03b6c6449271ae5244688ff42a' +
489- '4524712ccb748ab9004344cccddd59063f3d3a4af8' +
490- '99a3cc6f64ddc1a27072b',
491- "download_url": 'https://' +
492- 'public.apps.ubuntu.com/download/' +
493- 'com.ubuntu/calendar/' +
494- 'com.ubuntu.calendar_0.4.572_all.click',
495- "id": "install_click",
496- "label": "Install"
497- }
498- ],
499- "online_account_details": {
500- "login_failed_action": 1,
501- "login_passed_action": 3,
502- "provider_name": "ubuntuone",
503- "scope_id": "",
504- "service_name": "ubuntuone",
505- "service_type": "ubuntuone"
506- }
507- }
508- )
509- )
510- .widget(PreviewWidgetMatcher("screenshots")
511- .type('gallery'))
512- .widget(PreviewWidgetMatcher("summary")
513- .type('text'))
514- .widget(PreviewWidgetMatcher("other_metadata")
515- .type('table'))
516- .widget(PreviewWidgetMatcher("updates_table")
517- .type('table'))
518- .widget(PreviewWidgetMatcher("whats_new")
519- .type('text'))
520- .widget(PreviewWidgetMatcher("reviews_title")
521- .type('text'))
522- .widget(PreviewWidgetMatcher("summary")
523- .type('reviews'))
524- ).match(pview.widgets)
525- self.assertMatchResult(match)

Subscribers

People subscribed via source and target branches

to all changes: