36
36
def _move_pointer_around(self):
37
37
"""Helper method to move the pointer around, to assure selector is opened"""
38
self.assertThat(lambda: self.main_window.select_single('ComposerSheet', objectName='SettingsSheet'), Eventually(Not(Is(None))))
38
self.assertThat(lambda: self.main_window.select_single('ComposerSheet', objectName='SettingsSheet'),
39
Eventually(Not(Is(None))))
39
40
sheet = self.main_window.select_single('ComposerSheet', objectName='SettingsSheet')
40
41
self.pointing_device.move_to_object(sheet)
42
43
def _check_units(self, units):
43
44
"""Checks selected units by values from the first location tab"""
44
self.assertThat(lambda: self.main_window.select_many('QQuickText', objectName='CurrentTempText'), Eventually(Not(Is(None))))
45
self.assertThat(lambda: self.main_window.select_many('QQuickText', objectName='CurrentTempText'),
46
Eventually(Not(Is(None))))
45
47
current_location_tab = self.main_window.select_single(
46
48
'LocationTab', visible=True)
47
49
today_item = current_location_tab.select_single(
48
50
'QQuickItem', focus=True)
49
51
today_temp = today_item.select_single(
50
52
'QQuickText', objectName='CurrentTempText')
53
today_temp_scale = today_item.select_single(
54
'QQuickText', objectName='CurrentTempScale')
51
55
tomorrow_item = today_item.get_parent().get_children_by_type(
52
56
'QQuickItem', focus=False, z=1)
53
57
tomorrow_temp = tomorrow_item[0].select_single(
54
58
'QQuickText', objectName='CurrentTempText')
55
59
if units == "imperial":
56
self.assertThat(today_temp.text, Eventually(Equals(u'57')))
57
self.assertThat(tomorrow_temp.text, Eventually(Equals(u'69')))
60
self.assertThat(today_temp_scale.text, Eventually(Equals(u'°F')))
61
self.assertThat(today_temp.text, Eventually(Equals(u'26')))
62
self.assertThat(tomorrow_temp.text, Eventually(Equals(u'23')))
59
self.assertThat(today_temp.text, Eventually(Equals(u'14')))
60
self.assertThat(tomorrow_temp.text, Eventually(Equals(u'21')))
64
self.assertThat(today_temp_scale.text, Eventually(Equals(u'°C')))
65
self.assertThat(today_temp.text, Eventually(Equals(u'-3')))
66
self.assertThat(tomorrow_temp.text, Eventually(Equals(u'-5')))
62
68
def _check_wind_units(self, wind_units):
63
69
"""Checks selected units by values from the first location tab"""
64
self.assertThat(lambda: self.main_window.select_many('WeatherDetailComponent', objectName='WindSpeedValue')[0], Eventually(Not(Is(None))))
70
self.assertThat(lambda: self.main_window.select_many('WeatherDetailComponent', objectName='WindSpeedValue')[0],
71
Eventually(Not(Is(None))))
65
72
current_location_tab = self.main_window.select_single(
66
73
'LocationTab', visible=True)
67
74
focused_item = current_location_tab.select_single(
68
75
'QQuickItem', focus=True)
69
76
wind_component = focused_item.select_single(
70
77
'WeatherDetailComponent', objectName='WindSpeedValue')
71
self.assertThat(lambda: wind_component.select_single('QQuickText', objectName='WeatherDetailUnit'), Eventually(Not(Is(None))))
78
self.assertThat(lambda: wind_component.select_single('QQuickText', objectName='WeatherDetailUnit'),
79
Eventually(Not(Is(None))))
72
80
wind_unit = wind_component.select_single('QQuickText', objectName='WeatherDetailUnit')
73
self.assertThat(lambda: wind_component.select_single('QQuickText', objectName='WeatherDetailValue'), Eventually(Not(Is(None))))
81
self.assertThat(lambda: wind_component.select_single('QQuickText', objectName='WeatherDetailValue'),
82
Eventually(Not(Is(None))))
74
83
wind_value = wind_component.select_single('QQuickText', objectName='WeatherDetailValue')
75
84
if wind_units == "mph":
76
self.assertThat(wind_unit.text, Eventually(Equals(u'mph SE')))
77
self.assertThat(wind_value.text, Eventually(Equals(u'9')))
85
self.assertThat(wind_unit.text, Eventually(Equals(u'mph ESE')))
86
self.assertThat(wind_value.text, Eventually(Equals(u'49')))
79
self.assertThat(wind_unit.text, Eventually(Equals(u'km/h SE')))
80
self.assertThat(wind_value.text, Eventually(Equals(u'15')))
88
self.assertThat(wind_unit.text, Eventually(Equals(u'km/h ESE')))
89
self.assertThat(wind_value.text, Eventually(Equals(u'22')))
82
91
def _check_precipitation_units(self, pre_units):
83
92
"""Checks selected units by values from the first location tab"""
84
self.assertThat(lambda: self.main_window.select_many('WeatherDetailComponent', objectName='PrecipitationValue')[0], Eventually(Not(Is(None))))
93
self.assertThat(lambda: self.main_window.select_many('WeatherDetailComponent', objectName='PrecipitationValue')[0],
94
Eventually(Not(Is(None))))
85
95
current_location_tab = self.main_window.select_single(
86
96
'LocationTab', visible=True)
87
97
focused_item = current_location_tab.select_single(
88
98
'QQuickItem', focus=True)
89
99
component = focused_item.select_single(
90
100
'WeatherDetailComponent', objectName='PrecipitationValue')
91
self.assertThat(lambda: component.select_many('QQuickText', objectName='WeatherDetailUnit'), Eventually(Not(Is(None))))
101
self.assertThat(lambda: component.select_many('QQuickText', objectName='WeatherDetailUnit'),
102
Eventually(Not(Is(None))))
92
103
unit = component.select_single('QQuickText', objectName='WeatherDetailUnit')
93
self.assertThat(lambda: component.select_single('QQuickText', objectName='WeatherDetailValue'), Eventually(Not(Is(None))))
104
self.assertThat(lambda: component.select_single('QQuickText', objectName='WeatherDetailValue'),
105
Eventually(Not(Is(None))))
94
106
value = component.select_single('QQuickText', objectName='WeatherDetailValue')
95
107
if pre_units == "in":
96
108
self.assertThat(unit.text, Eventually(Equals(u'in')))
97
109
self.assertThat(value.text, Eventually(Equals(u'0.18')))
99
111
self.assertThat(unit.text, Eventually(Equals(u'mm')))
100
self.assertThat(value.text, Eventually(Equals(u'4.5')))
112
self.assertThat(value.text, Eventually(Equals(u'0.5')))
114
def _check_service(self, service):
115
"""Checks selected units weather data service from the first location tab"""
116
self.assertThat(lambda: self.main_window.select_many('TabFooter', objectName='TabFooter')[0],
117
Eventually(Not(Is(None))))
118
current_location_tab = self.main_window.select_single('LocationTab', visible=True)
119
self.assertThat(lambda: current_location_tab.select_single('TabFooter', objectName='TabFooter'),
120
Eventually(Not(Is(None))))
121
self.assertThat(lambda: current_location_tab.select_single('QQuickImage', objectName='DataProviderLogo'),
122
Eventually(Not(Is(None))))
124
focused_item = current_location_tab.select_single('QQuickItem', focus=True)
125
tab_footer = current_location_tab.select_single('TabFooter', objectName='TabFooter')
126
provider_logo = current_location_tab.select_single('QQuickImage', objectName='DataProviderLogo')
127
if service == "weatherchannel":
128
self.assertThat(tab_footer.visible, Eventually(Equals(True)))
129
self.assertThat(provider_logo.visible, Eventually(Equals(False)))
130
elif service == "openweathermap":
131
self.assertThat(tab_footer.visible, Eventually(Equals(False)))
132
self.assertThat(provider_logo.visible, Eventually(Equals(True)))
102
134
def test_switch_scale(self):
103
135
"""Tests switching the scale in the settings"""
303
344
self.assertThat(load_indicator.running, Eventually(Equals(False)))
304
345
self._check_precipitation_units('mm')
347
def test_switch_service(self):
348
"""Tests switching the scale in the settings"""
349
# first check metric values and open the settings sheet
350
self._check_service('weatherchannel')
351
self._open_settings_sheet()
353
# open the value selector
354
self.assertThat(lambda: self.main_window.select_single('OptionSelector', objectName='ServiceSelector'), Eventually(Not(Is(None))))
355
units_selector = self.main_window.select_single('OptionSelector', objectName="ServiceSelector")
356
self.assertThat(units_selector.selectedIndex, Eventually(Equals(0)))
357
self.assertThat(lambda: units_selector.select_many('ShapeItem')[1], Eventually(Not(Is(None))))
358
current_option = units_selector.select_many('ShapeItem')[1]
359
self.pointing_device.click_object(current_option)
361
# choose second option, openweathermap
362
self._move_pointer_around()
363
self.assertThat(lambda: units_selector.select_many('ShapeItem')[2], Eventually(Not(Is(None))))
364
second_option = units_selector.select_many('ShapeItem')[2]
365
self.pointing_device.click_object(second_option)
366
self.assertThat(units_selector.selectedIndex, Eventually(Equals(1)))
368
# check if precipitation units selector appears
369
self.assertThat(lambda: self.main_window.select_single('OptionSelector',
370
objectName='PrecipitationUnitsSelector'), Eventually(Not(Is(None))))
371
units_selector = self.main_window.select_single('OptionSelector',
372
objectName="PrecipitationUnitsSelector")
373
self.assertThat(units_selector.visible, Eventually(Equals(1)))
374
self._click_sheet_confirm()
376
# wait for reload and check the used service
377
load_indicator = self.main_window.select_single('ActivityIndicator', objectName='LoadingSpinner')
378
self.assertThat(load_indicator.running, Eventually(Equals(False)))
379
self._check_service('openweathermap')
381
# switch back to metric values again
382
self._open_settings_sheet()
383
self.assertThat(lambda: self.main_window.select_single('OptionSelector', objectName='ServiceSelector'), Eventually(Not(Is(None))))
384
units_selector = self.main_window.select_single('OptionSelector', objectName="ServiceSelector")
385
self.assertThat(units_selector.selectedIndex, Eventually(Equals(1)))
386
self.assertThat(lambda: units_selector.select_many('ShapeItem')[2], Eventually(Not(Is(None))))
387
current_option = units_selector.select_many('ShapeItem')[2]
388
self.pointing_device.click_object(current_option)
389
# while it's opened, units_selector returns false
390
# self.assertThat(units_selector.expanded, Eventually(Equals(True)))
393
self._move_pointer_around()
394
self.assertThat(lambda: units_selector.select_many('ShapeItem')[1], Eventually(Not(Is(None))))
395
first_option = units_selector.select_single(
396
'OptionSelectorDelegate', objectName='twcOption')
397
self.pointing_device.click_object(first_option)
398
self.assertThat(units_selector.selectedIndex, Eventually(Equals(0)))
400
# check if precipitation units selector disappears and confirm
401
self.assertThat(lambda: self.main_window.select_single('OptionSelector',
402
objectName='PrecipitationUnitsSelector'), Eventually(Not(Is(None))))
403
units_selector = self.main_window.select_single('OptionSelector',
404
objectName="PrecipitationUnitsSelector")
405
self.assertThat(units_selector.visible, Eventually(Equals(0)))
406
self._click_sheet_confirm()
408
# wait for reload and check the metric values again
409
load_indicator = self.main_window.select_single('ActivityIndicator', objectName='LoadingSpinner')
410
self.assertThat(load_indicator.running, Eventually(Equals(False)))
411
self._check_service('weatherchannel')