~elopio/gallery-app/revert_workaround-1302706-click_toolbar_button_failure

« back to all changes in this revision

Viewing changes to tests/autopilot/gallery_app/emulators/photo_viewer.py

  • Committer: Leo Arias
  • Date: 2015-05-15 08:05:23 UTC
  • mfrom: (954.1.241 gallery-app)
  • Revision ID: leo.arias@canonical.com-20150515080523-i2of3vr8h7dioj59
Now the toolbar object is not needed at all.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
# -*- Mode: Python; coding: utf-8; indent-tabs-mode: nil; tab-width: 4 -*-
2
 
# Copyright 2012 Canonical
 
2
# Copyright 2012-2015 Canonical
3
3
#
4
4
# This program is free software: you can redistribute it and/or modify it
5
5
# under the terms of the GNU General Public License version 3, as published
6
6
# by the Free Software Foundation.
7
7
 
8
 
from gallery_utils import GalleryUtils
 
8
import logging
 
9
 
 
10
import autopilot.logging
 
11
import ubuntuuitoolkit
 
12
 
 
13
from gallery_app.emulators import main_screen
 
14
from gallery_app.emulators.gallery_utils import(
 
15
    GalleryAppException,
 
16
    GalleryUtils
 
17
)
 
18
 
 
19
 
 
20
logger = logging.getLogger(__name__)
 
21
 
 
22
 
 
23
class PopupPhotoViewer(ubuntuuitoolkit.UbuntuUIToolkitCustomProxyObjectBase):
 
24
 
 
25
    @autopilot.logging.log_action(logger.info)
 
26
    def delete_current_photo(self, confirm=True):
 
27
        header = self.get_root_instance().select_single(
 
28
            main_screen.MainScreen).get_header()
 
29
        header.click_action_button("deleteButton")
 
30
        if confirm:
 
31
            self.confirm_delete_photo()
 
32
        else:
 
33
            self.cancel_delete_photo()
 
34
 
 
35
    @autopilot.logging.log_action(logger.debug)
 
36
    def confirm_delete_photo(self):
 
37
        self._click_delete_dialog_button("Yes")
 
38
 
 
39
    def _click_delete_dialog_button(self, name):
 
40
        delete_dialog = self._get_delete_dialog()
 
41
        button = delete_dialog.wait_select_single(
 
42
            "Button", objectName="deletePhotoDialog" + name, visible=True)
 
43
        self.pointing_device.click_object(button)
 
44
        delete_dialog.wait_until_destroyed()
 
45
 
 
46
    def _get_delete_dialog(self):
 
47
        delete_dialog = self.get_root_instance().wait_select_single(
 
48
            objectName="deletePhotoDialog")
 
49
        delete_dialog.visible.wait_for(True)
 
50
        delete_dialog.opacity.wait_for(1)
 
51
        return delete_dialog
 
52
 
 
53
    @autopilot.logging.log_action(logger.debug)
 
54
    def cancel_delete_photo(self):
 
55
        self._click_delete_dialog_button('No')
9
56
 
10
57
 
11
58
class PhotoViewer(GalleryUtils):
12
59
 
13
60
    def __init__(self, app):
 
61
        super(PhotoViewer, self).__init__(self)
14
62
        self.app = app
15
63
 
16
 
    def get_delete_dialog(self):
17
 
        """Returns the photo viewer delete dialog."""
18
 
        return self.app.wait_select_single("Dialog",
19
 
                                           objectName="deletePhotoDialog")
20
 
 
21
 
    def delete_dialog_shown(self):
22
 
        dialog = self.app.select_many("Dialog",
23
 
                                      objectName="deletePhotoDialog")
24
 
        return len(dialog) >= 1
25
 
 
26
64
    def get_popup_album_picker(self):
27
65
        """Returns the photo viewer album pickers."""
28
66
        return self.app.wait_select_single("PopupAlbumPicker",
29
67
                                           objectName="popupAlbumPicker")
30
68
 
31
 
    def get_share_dialog(self):
32
 
        """Returns the photo viewer share dialog."""
33
 
        return self.app.wait_select_single("SharePopover",
34
 
                                           objectName="sharePopover")
35
 
 
36
 
    def get_photo_edit_dialog(self):
 
69
    def get_content_peer_picker_cancel_button(self):
 
70
        """Returns the ContentPeerPicker cancel button."""
 
71
        return self.get_share_peer_picker().wait_select_single(
 
72
            "Button",
 
73
            objectName="contentPeerPickerCancelButton",
 
74
            visible=True)
 
75
 
 
76
    def get_share_peer_picker(self):
 
77
        """Returns the photo viewer share picker."""
 
78
        return self.app.wait_select_single("ContentPeerPicker10",
 
79
                                           objectName="sharePicker",
 
80
                                           visible=True)
 
81
 
 
82
    def get_photo_editor(self):
37
83
        """Returns the photo edit dialog."""
38
 
        return self.app.wait_select_single("EditPopover",
39
 
                                           objectName="editPopover")
 
84
        return self.app.wait_select_single("PhotoEditor")
 
85
 
 
86
    def get_revert_to_original_dialog(self):
 
87
        """Returns the revert to original dialog."""
 
88
        return self.app.wait_select_single("Dialog",
 
89
                                           objectName="revertPromptDialog")
 
90
 
 
91
    def get_cancel_revert_to_original_button(self):
 
92
        """Returns the revert to original cancel button."""
 
93
        return self.get_revert_to_original_dialog().wait_select_single(
 
94
            "Button",
 
95
            objectName="cancelRevertButton",
 
96
            visible=True)
 
97
 
 
98
    def get_confirm_revert_to_original_button(self):
 
99
        """Returns the revert to original confirm button."""
 
100
        return self.get_revert_to_original_dialog().wait_select_single(
 
101
            "Button",
 
102
            objectName="confirmRevertButton",
 
103
            visible=True)
40
104
 
41
105
    def get_photo_component(self):
42
106
        # Was using a list index (lp:1247711). Still needs fixing, I'm not
43
107
        # convinced this is a suitable way to select the correct item.
44
108
        return self.app.wait_select_single(
45
 
            "ZoomablePhotoComponent",
46
 
            ownerName="photoViewerDelegate",
47
 
            objectName="openedPhoto0"
 
109
            "SingleMediaViewer",
 
110
            objectName="openedMedia0"
48
111
        )
49
112
 
50
113
    def get_photos_list(self):
51
114
        return self.app.wait_select_single("MediaListView")
52
115
 
53
 
    def get_crop_menu_item(self):
 
116
    def get_editor_actions_bar(self):
 
117
        """Returns the actions bar for the editor."""
 
118
        return self.app.select_single("ActionsBar",
 
119
                                      objectName="editorActionsBar")
 
120
 
 
121
    def get_editor_action_button_by_text(self, button_text):
 
122
        """Returns the action button from the editor by text."""
 
123
        actions_bar = self.get_editor_actions_bar()
 
124
        buttons = actions_bar.select_many('AbstractButton')
 
125
        for button in buttons:
 
126
            if str(button.text) == button_text:
 
127
                return button
 
128
        raise GalleryAppException(
 
129
            'Editor action button {} could not be found'.format(button_text))
 
130
 
 
131
    def get_crop_action_button(self):
54
132
        """Returns the crop item of the edit dialog."""
55
 
        return self.app.select_single("Standard", objectName="cropListItem")
 
133
        return self.get_editor_action_button_by_text("Crop")
56
134
 
57
 
    def get_rotate_menu_item(self):
 
135
    def get_rotate_action_button(self):
58
136
        """Returns the rotate item of the edit dialog."""
59
 
        return self.app.select_single("Standard", objectName="rotateListItem")
 
137
        return self.get_editor_action_button_by_text("Rotate")
60
138
 
61
139
    def get_undo_menu_item(self):
62
140
        """Returns the undo item of the edit dialog."""
66
144
        """Returns the redo item of the edit dialog."""
67
145
        return self.app.select_single("Standard", objectName="redoListItem")
68
146
 
69
 
    def get_revert_menu_item(self):
 
147
    def get_revert_action_button(self):
70
148
        """Returns the revert to original menu item in the edit dialog."""
71
 
        return self.app.select_single("Standard", objectName="revertListItem")
 
149
        return self.get_editor_action_button_by_text("Revert to Original")
72
150
 
73
151
    def get_auto_enhance_menu_item(self):
74
152
        """Returns the 'auto enhance' menu item in the edit dialog."""
75
153
        return self.app.select_single("Standard", objectName='enhanceListItem')
76
154
 
77
 
    def get_delete_popover_delete_item(self):
78
 
        """Returns the delete button of the delete popover."""
79
 
        return self.app.select_single("Button",
80
 
                                      objectName="deletePhotoDialogYes",
81
 
                                      visible=True)
82
 
 
83
155
    def get_delete_popover_cancel_item(self):
84
156
        """Returns the cancel button of the delete popover."""
85
 
        return self.app.select_single("Button",
86
 
                                      objectName="deletePhotoDialogNo",
87
 
                                      visible=True)
 
157
        return self.app.wait_select_single("Button",
 
158
                                           objectName="deletePhotoDialogNo",
 
159
                                           visible=True)
88
160
 
89
161
    def get_opened_photo(self):
90
162
        """Returns the first opened photo."""
91
 
        return self.app.wait_select_single("ZoomablePhotoComponent",
92
 
                                           objectName="openedPhoto0")
 
163
        return self.app.wait_select_single("SingleMediaViewer",
 
164
                                           objectName="openedMedia0")
93
165
 
94
166
    def get_crop_interactor(self):
95
167
        """Returns the crop interactor."""
116
188
        """Returns the edit preview."""
117
189
        return self.app.wait_select_single("EditPreview",
118
190
                                           objectName="editPreview")
 
191
 
 
192
    def _click_item(self, item):
 
193
        self.pointing_device.click_object(item)
 
194
 
 
195
    def click_rotate_button(self):
 
196
        rotate_item = self.get_rotate_action_button()
 
197
        self._click_item(rotate_item)
 
198
 
 
199
    def click_crop_button(self):
 
200
        crop_item = self.get_crop_action_button()
 
201
        self._click_item(crop_item)
 
202
 
 
203
    def click_undo_item(self):
 
204
        undo_item = self.get_undo_menu_item()
 
205
        self._click_item(undo_item)
 
206
 
 
207
    def click_redo_item(self):
 
208
        redo_item = self.get_redo_menu_item()
 
209
        self._click_item(redo_item)
 
210
 
 
211
    def click_revert_button(self):
 
212
        revert_item = self.get_revert_action_button()
 
213
        self._click_item(revert_item)
 
214
 
 
215
    def click_cancel_revert_button(self):
 
216
        cancel_item = self.get_cancel_revert_to_original_button()
 
217
        self._click_item(cancel_item)
 
218
 
 
219
    def click_confirm_revert_button(self):
 
220
        confirm_item = self.get_confirm_revert_to_original_button()
 
221
        self._click_item(confirm_item)
 
222
 
 
223
    def click_enhance_item(self):
 
224
        enhance_item = self.get_auto_enhance_menu_item()
 
225
        self._click_item(enhance_item)