-
Notifications
You must be signed in to change notification settings - Fork 8
Expand file tree
/
Copy pathregistries.py
More file actions
176 lines (126 loc) · 5.84 KB
/
registries.py
File metadata and controls
176 lines (126 loc) · 5.84 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
from urllib.parse import urljoin
from selenium.webdriver.common.by import By
import settings
from base.locators import ComponentLocator, Locator
from components.navbars import RegistriesNavbar
from pages.base import GuidBasePage, OSFBasePage
class BaseRegistriesPage(OSFBasePage):
base_url = settings.OSF_HOME + '/registries/'
url_addition = ''
navbar = ComponentLocator(RegistriesNavbar)
def __init__(self, driver, verify=False, provider=None):
self.provider = provider
if provider:
self.provider_id = provider['id']
self.provider_name = provider['attributes']['name']
super().__init__(driver, verify)
@property
def url(self):
"""Set the URL based on the provider"""
if self.provider and self.provider_id != 'osf':
return urljoin(self.base_url, self.provider_id) + '/' + self.url_addition
return self.base_url + self.url_addition
class RegistriesLandingPage(BaseRegistriesPage):
identity = Locator(
By.CSS_SELECTOR, '[data-test-registries-list-paragraph]', settings.LONG_TIMEOUT
)
search_box = Locator(By.ID, 'search')
class BrandedRegistriesDiscoverPage(BaseRegistriesPage):
url_addition = 'discover'
identity = Locator(
By.CSS_SELECTOR, 'div[data-analytics-scope="Registries Discover page"]'
)
search_input = Locator(By.ID, 'search-input')
loading_indicator = Locator(By.CSS_SELECTOR, '.ball-scale', settings.LONG_TIMEOUT)
class BaseSubmittedRegistrationPage(GuidBasePage):
base_url = settings.OSF_HOME
url_addition = ''
def __init__(self, driver, verify=False, guid=''):
# Set the cookie that prevents the New Feature popover from appearing on
# submitted registration pages since this popover can get in the way of other
# actions.
driver.add_cookie({'name': 'metadataFeaturePopover', 'value': '1'})
super().__init__(driver, verify, guid)
@property
def url(self):
return self.base_url + '/' + self.guid + '/' + self.url_addition
class RegistrationDetailPage(BaseSubmittedRegistrationPage):
"""This is the Registration Overview Page"""
identity = Locator(By.CSS_SELECTOR, '[data-test-registration-title]')
loading_indicator = Locator(By.CSS_SELECTOR, '.ball-scale', settings.LONG_TIMEOUT)
class RegistrationFileListPage(BaseSubmittedRegistrationPage):
url_addition = 'files'
identity = Locator(By.CSS_SELECTOR, '[data-test-file-providers-list]')
file_list_button = Locator(By.CSS_SELECTOR, '[data-test-file-list-link]')
loading_indicator = Locator(By.CSS_SELECTOR, '.ball-scale')
first_file_link = Locator(By.CSS_SELECTOR, '[data-analytics-name="Open file"]')
class RegistrationFileDetailPage(GuidBasePage):
identity = Locator(By.CSS_SELECTOR, '[data-test-file-renderer')
class RegistrationResourcesPage(BaseSubmittedRegistrationPage):
url_addition = 'resources'
identity = Locator(By.CSS_SELECTOR, '[data-test-add-resource-section]')
class RegistrationMetadataPage(BaseSubmittedRegistrationPage):
url_addition = 'metadata'
identity = Locator(By.CSS_SELECTOR, '[data-test-edit-resource-metadata-button]')
loading_indicator = Locator(By.CSS_SELECTOR, '.ball-scale')
class RegistrationAddNewPage(BaseRegistriesPage):
url_addition = 'new'
identity = Locator(
By.CSS_SELECTOR, 'form[data-test-new-registration-form]', settings.LONG_TIMEOUT
)
@property
def url(self):
"""Have to override the url for the Add New Page since this page does
include 'osf' in the url for OSF Registries
"""
if self.provider is None:
self.provider_id = 'osf'
return urljoin(self.base_url, self.provider_id) + '/' + self.url_addition
class RegistriesModerationSubmittedPage(BaseRegistriesPage):
url_addition = 'moderation/submitted'
identity = Locator(By.CSS_SELECTOR, '[data-test-submissions-type]')
no_registrations_message = Locator(
By.CSS_SELECTOR, '[data-test-registration-list-none]'
)
class RegistriesModerationPendingPage(BaseRegistriesPage):
url_addition = 'moderation/pending'
identity = Locator(By.CSS_SELECTOR, '[data-test-submissions-type]')
no_registrations_message = Locator(
By.CSS_SELECTOR, '[data-test-registration-list-none]'
)
class RegistriesModerationModeratorsPage(BaseRegistriesPage):
url_addition = 'moderation/moderators'
identity = Locator(By.CSS_SELECTOR, '[data-test-moderator-row]')
class RegistriesModerationSettingsPage(BaseRegistriesPage):
url_addition = 'moderation/settings'
identity = Locator(By.CSS_SELECTOR, '[data-test-subscription-list]')
class BaseRegistrationDraftPage(BaseRegistriesPage):
base_url = settings.OSF_HOME + '/registries/drafts/'
url_addition = ''
def __init__(self, driver, verify=False, draft_id=''):
self.draft_id = draft_id
super().__init__(driver, verify)
@property
def url(self):
return self.base_url + self.draft_id + '/' + self.url_addition
class DraftRegistrationMetadataPage(BaseRegistrationDraftPage):
url_addition = 'metadata'
identity = Locator(
By.CSS_SELECTOR, 'div[data-test-metadata-title]', settings.LONG_TIMEOUT
)
class DraftRegistrationGenericPage(BaseRegistrationDraftPage):
def __init__(self, driver, verify=False, draft_id='', url_addition=''):
self.draft_id = draft_id
self.url_addition = url_addition
super().__init__(driver, verify, draft_id)
identity = Locator(
By.CSS_SELECTOR, 'div[data-analytics-scope="Registries"]', settings.LONG_TIMEOUT
)
page_heading = Locator(By.CSS_SELECTOR, 'h2[data-test-page-heading]')
class DraftRegistrationReviewPage(BaseRegistrationDraftPage):
url_addition = 'review'
identity = Locator(
By.CSS_SELECTOR,
'[data-test-toggle-anchor-nav-button]',
settings.LONG_TIMEOUT,
)