~dpniel/ubuntu-calendar-app/ScrollView2

« back to all changes in this revision

Viewing changes to tests/autopilot/calendar_app/__init__.py

  • Committer: Kunal Parmar
  • Date: 2015-05-28 13:56:12 UTC
  • mfrom: (652 trunk)
  • mto: This revision was merged to the branch mainline in revision 665.
  • Revision ID: pkunal.parmar@gmail.com-20150528135612-wlojg16l0sme5yv0
mergeĀ fromĀ trunk

Show diffs side-by-side

added added

removed removed

Lines of Context:
28
28
from testtools.matchers import GreaterThan
29
29
 
30
30
from calendar_app import data
 
31
from datetime import date
31
32
 
32
33
 
33
34
logger = logging.getLogger(__name__)
141
142
        header.click_action_button('neweventbutton')
142
143
        return self.wait_select_single(NewEvent, objectName='newEventPage')
143
144
 
 
145
    @autopilot.logging.log_action(logger.info)
 
146
    def go_to_calendar_choice_popup(self):
 
147
        """Open the calendar chioce popup.
 
148
 
 
149
        :return: CalendaChoicePopup.
 
150
 
 
151
        """
 
152
        header = self.get_header()
 
153
        header.click_action_button('calendarsbutton')
 
154
        return self.wait_select_single(
 
155
            CalendarChoicePopup, objectName="calendarchoicepopup")
 
156
 
144
157
    def set_picker(self, field, mode, value):
145
158
        # open picker
146
159
        self.pointing_device.click_object(field)
161
174
    def get_event_view(self, parent_object=None):
162
175
        if parent_object is None:
163
176
            parent_object = self
164
 
        return parent_object.select_single("EventView")
 
177
        return parent_object.wait_select_single("EventView")
165
178
 
166
179
    def get_event_details(self, parent_object=None):
167
180
        if parent_object is None:
168
181
            parent_object = self
169
 
        return parent_object.select_single(EventDetails,
170
 
                                           objectName='eventDetails')
 
182
        return parent_object.wait_select_single(EventDetails,
 
183
                                                objectName='eventDetails')
171
184
 
172
185
    def get_month_view(self, parent_object=None):
173
186
        if parent_object is None:
174
187
            parent_object = self
175
 
        return parent_object.select_single(MonthView,
176
 
                                           objectName='monthViewPage')
 
188
        return parent_object.wait_select_single(MonthView,
 
189
                                                objectName='monthViewPage')
177
190
 
178
191
    def get_year_view(self, parent_object=None):
179
192
        if parent_object is None:
180
193
            parent_object = self
181
 
        return parent_object.select_single(YearView, objectName='yearViewPage')
 
194
        return parent_object.wait_select_single(YearView,
 
195
                                                objectName='yearViewPage')
182
196
 
183
197
    def get_day_view(self, parent_object=None):
184
198
        if parent_object is None:
185
199
            parent_object = self
186
 
        return parent_object.select_single(DayView, objectName='dayViewPage')
 
200
        return parent_object.wait_select_single(DayView,
 
201
                                                objectName='dayViewPage')
187
202
 
188
203
    def get_week_view(self, parent_object=None):
189
204
        if parent_object is None:
190
205
            parent_object = self
191
 
        return parent_object.select_single(WeekView, objectName='weekViewPage')
 
206
        return parent_object.wait_select_single(WeekView,
 
207
                                                objectName='weekViewPage')
192
208
 
193
209
    def get_agenda_view(self, parent_object=None):
194
210
        if parent_object is None:
195
211
            parent_object = self
196
 
        return parent_object.select_single(AgendaView, objectName='AgendaView')
 
212
        return parent_object.wait_select_single(AgendaView,
 
213
                                                objectName='AgendaView')
197
214
 
198
215
    def get_label_with_text(self, text, root=None):
199
216
        if root is None:
218
235
 
219
236
    def safe_swipe_view(self, direction, view, date):
220
237
        """
221
 
        direction: direction to swip
 
238
        direction: direction to swipe
222
239
        view: the view you are swiping against
223
240
        date: a function object of the view
224
241
        """
275
292
        local = utc.astimezone(tz.tzlocal())
276
293
        return local
277
294
 
 
295
    @autopilot.logging.log_action(logger.info)
 
296
    def get_header(self):
 
297
        return self.wait_select_single(
 
298
            "AppHeader", objectName="MainView_Header")
 
299
 
 
300
    def press_header_todaybutton(self):
 
301
        header = self.get_header()
 
302
        header.click_action_button('todaybutton')
 
303
 
 
304
    @autopilot.logging.log_action(logger.info)
 
305
    def get_color_picker_dialog(self):
 
306
        return self.wait_select_single(
 
307
            "ColorPickerDialog", objectName="colorPickerDialog")
 
308
 
 
309
    @autopilot.logging.log_action(logger.info)
 
310
    def press_header_custombackbutton(self):
 
311
        header = self.get_header()
 
312
        header.click_custom_back_button()
 
313
 
278
314
 
279
315
class YearView(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
280
316
 
427
463
                sorteddays.insert(0, day)
428
464
        return sorteddays
429
465
 
 
466
    @autopilot.logging.log_action(logger.info)
 
467
    def get_current_headerdatecomponent(self, now):
 
468
        today = datetime.date(now.year, now.month, now.day)
 
469
        header_date_components = self.select_many('HeaderDateComponent')
 
470
        for header in header_date_components:
 
471
            header_date = datetime.date(header.date.datetime.year,
 
472
                                        header.date.datetime.month,
 
473
                                        header.date.datetime.day)
 
474
            if header_date == today:
 
475
                return header
 
476
 
430
477
 
431
478
class MonthView(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
432
479
 
583
630
        return event_details_page.edit()
584
631
 
585
632
    @autopilot.logging.log_action(logger.info)
586
 
    def get_day_header(self, day=None):
 
633
    def get_timeline_header_component(self, day):
587
634
        """Return the dayheader for a given day. If no day is given,
588
635
        return the current day.
589
636
 
590
 
        :param day: A datetime object matching the header
 
637
        :param day:  day in date(year, month, day) format
591
638
        :return: The day header object
592
639
        """
593
640
        if day:
594
641
            headers = self.select_many('TimeLineHeaderComponent')
595
642
            for header in headers:
596
 
                if header.startDay.datetime == day:
597
 
                    day_header = header
598
 
                    break
599
 
        else:
600
 
            # just grab the current day
601
 
            day_header = self.wait_select_single(
602
 
                'TimeLineHeaderComponent', isCurrentItem=True)
603
 
 
604
 
        if not(day_header):
605
 
            raise CalendarException('Day Header not found for %s' % day)
606
 
        return day_header
 
643
                header_date = date(header.startDay.datetime.year,
 
644
                                   header.startDay.datetime.month,
 
645
                                   header.startDay.datetime.day)
 
646
                if header_date == day:
 
647
                    return header
 
648
 
 
649
        else:
 
650
            raise CalendarException('Day Header not found for %s' % day)
 
651
 
 
652
    @autopilot.logging.log_action(logger.info)
 
653
    def get_timeline_header(self, day):
 
654
        """Return the dayheader for a given day.
 
655
 
 
656
        :param day:  day in date(year, month, day) format
 
657
        :return: The day header object
 
658
        """
 
659
        if day:
 
660
            headers = self.select_many('TimeLineHeader')
 
661
            for header in headers:
 
662
                header_date = date(header.startDay.datetime.year,
 
663
                                   header.startDay.datetime.month,
 
664
                                   header.startDay.datetime.day)
 
665
                if header_date == day:
 
666
                    return header
 
667
 
 
668
        else:
 
669
            raise CalendarException('Day Header not found for %s' % day)
 
670
 
 
671
    @autopilot.logging.log_action(logger.info)
 
672
    def get_daylabel(self, today):
 
673
        current_day_header = self.get_timeline_header_component(today)
 
674
        return current_day_header.wait_select_single(
 
675
            'Label', objectName='dayLabel')
 
676
 
 
677
    @autopilot.logging.log_action(logger.info)
 
678
    def get_datelabel(self, today):
 
679
        current_day_header = self.get_timeline_header_component(today)
 
680
        return current_day_header.wait_select_single(
 
681
            'Label', objectName='dateLabel')
 
682
 
 
683
    @autopilot.logging.log_action(logger.info)
 
684
    def get_weeknumer(self, today):
 
685
        current_day_header = self.get_timeline_header(today)
 
686
        return current_day_header.wait_select_single(
 
687
            'Label', objectName='weeknumber')
 
688
 
 
689
    @autopilot.logging.log_action(logger.info)
 
690
    def get_scrollHour(self):
 
691
        return self.wait_select_single(
 
692
            'TimeLineBaseComponent', objectName='DayComponent-0').scrollHour
 
693
 
 
694
    @autopilot.logging.log_action(logger.info)
 
695
    def get_weeknumber(self):
 
696
        return self._get_timeline_base().weekNumber
 
697
 
 
698
    def check_loading_spinnger(self):
 
699
        timelinebasecomponent = self.get_active_timelinebasecomponent()
 
700
        loading_spinner = timelinebasecomponent.wait_select_single(
 
701
            "ActivityIndicator")
 
702
        loading_spinner.running.wait_for(False)
 
703
 
 
704
    def _get_timeline_base(self):
 
705
        return self.select_single("TimeLineBaseComponent", isActive=True)
 
706
 
 
707
    @autopilot.logging.log_action(logger.info)
 
708
    def get_active_timelinebasecomponent(self):
 
709
        timelinebase_components = self.select_many(("TimeLineBaseComponent"))
 
710
        for component in timelinebase_components:
 
711
            if component.isActive:
 
712
                return component
607
713
 
608
714
 
609
715
class AgendaView(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
922
1028
        delete_button = self.select_single(
923
1029
            'Button', objectName='deleteEventButton')
924
1030
        self.pointing_device.click_object(delete_button)
 
1031
 
 
1032
 
 
1033
class CalendarChoicePopup(
 
1034
        ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
 
1035
 
 
1036
    """Autopilot helper for the Calendar Choice Popup."""
 
1037
 
 
1038
    @autopilot.logging.log_action(logger.debug)
 
1039
    def press_check_box_button(self):
 
1040
        """ press check box button to select or unselect it """
 
1041
        calendar = self._get_calendar()
 
1042
        check_box = calendar.wait_select_single(
 
1043
            "CheckBox", objectName="checkBox")
 
1044
        self.pointing_device.click_object(check_box)
 
1045
        check_box.checked.wait_for(False)
 
1046
 
 
1047
    def _get_calendar(self):
 
1048
        calendarItems = self.select_many("Standard", objectName="calendarItem")
 
1049
        for item in calendarItems:
 
1050
            if item.select_single(
 
1051
                    "Label", objectName="calendarName").text == "Personal":
 
1052
                    return item
 
1053
 
 
1054
    @autopilot.logging.log_action(logger.debug)
 
1055
    def get_checkbox_status(self):
 
1056
        """ press check box button to select or unselect it """
 
1057
        calendar = self._get_calendar()
 
1058
        return calendar.wait_select_single(
 
1059
            "CheckBox", objectName="checkBox").checked
 
1060
 
 
1061
    @autopilot.logging.log_action(logger.debug)
 
1062
    def get_calendar_color(self):
 
1063
        """ get calendar color """
 
1064
        calendar = self._get_calendar()
 
1065
        return calendar.select_single(
 
1066
            "QQuickRectangle", objectName="calendarColorCode").color
 
1067
 
 
1068
    @autopilot.logging.log_action(logger.debug)
 
1069
    def open_color_picker_dialog(self):
 
1070
        """ press color rectangle to open calendar color picker"""
 
1071
        calendar = self._get_calendar()
 
1072
        color_rectangle = calendar.wait_select_single(
 
1073
            "QQuickRectangle", objectName="calendarColorCode")
 
1074
        self.pointing_device.click_object(color_rectangle)
 
1075
 
 
1076
 
 
1077
class ColorPickerDialog(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
 
1078
    """Autopilot helper for the Color Picker Dialog."""
 
1079
 
 
1080
    @autopilot.logging.log_action(logger.debug)
 
1081
    def change_calendar_color(self, new_color):
 
1082
        new_color_circle = self.wait_select_single(
 
1083
            "QQuickRectangle", objectName=new_color)
 
1084
        self.pointing_device.click_object(new_color_circle)