Skip to content

Commit 36e2d21

Browse files
author
Ramya Virajamangala
committed
Added edit title and edit contributors tests
1 parent 9b5d00a commit 36e2d21

File tree

4 files changed

+173
-7
lines changed

4 files changed

+173
-7
lines changed

api/osf_api.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1279,3 +1279,45 @@ def create_registration_resource(registration_guid, resource_type):
12791279
item_id=resource_id,
12801280
item_type='resources',
12811281
)['data']
1282+
1283+
1284+
def update_registration_title(registration_guid, title):
1285+
"""This method updates the title of the given
1286+
registration."""
1287+
session = client.Session(
1288+
api_base_url=settings.API_DOMAIN,
1289+
auth=(settings.REGISTRATIONS_USER, settings.REGISTRATIONS_USER_PASSWORD),
1290+
)
1291+
url = '/v2/registrations/{}/'.format(registration_guid)
1292+
payload = {
1293+
'data': {
1294+
'id': registration_guid,
1295+
'type': 'registrations',
1296+
'attributes': {'title': title},
1297+
}
1298+
}
1299+
session.patch(
1300+
url=url,
1301+
raw_body=json.dumps(payload),
1302+
item_id=registration_guid,
1303+
item_type='registrations',
1304+
)['data']
1305+
1306+
1307+
def delete_registration_contributor(registration_guid, user_name):
1308+
"""This method deletes the given user from the given registration"""
1309+
session = client.Session(
1310+
api_base_url=settings.API_DOMAIN,
1311+
auth=(settings.REGISTRATIONS_USER, settings.REGISTRATIONS_USER_PASSWORD),
1312+
)
1313+
url = '/v2/registrations/{}/contributors/'.format(registration_guid)
1314+
data = session.get(url)['data']
1315+
1316+
for i in range(0, len(data)):
1317+
if user_name in data[i]['embeds']['users']['data']['attributes']['full_name']:
1318+
user_id = data[i]['embeds']['users']['data']['id']
1319+
delete_url = '/v2/registrations/{}/contributors/{}/'.format(
1320+
registration_guid, user_id
1321+
)
1322+
session.delete(delete_url, item_type='users')
1323+
break

pages/registries.py

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -143,22 +143,27 @@ def select_from_dropdown_listbox(self, selection):
143143
class RegistrationMetadataPage(BaseSubmittedRegistrationPage):
144144
url_addition = 'metadata'
145145
identity = Locator(By.CSS_SELECTOR, '[data-test-display-resource-type-general]')
146-
146+
metadata_title = Locator(By.CSS_SELECTOR, '[data-test-display-node-title]')
147147
metadata_description = Locator(
148148
By.CSS_SELECTOR, '[data-test-display-node-description]'
149149
)
150150
edit_metadata_description_button = Locator(
151151
By.CSS_SELECTOR, '[data-test-edit-node-description-button]'
152152
)
153+
save_metadata_title_button = Locator(
154+
By.CSS_SELECTOR, '[data-test-save-node-title-button]'
155+
)
153156
save_metadata_description_button = Locator(
154157
By.CSS_SELECTOR, '[data-test-save-node-description-button]'
155158
)
156159
contributors_list = Locator(By.CSS_SELECTOR, '[data-test-contributors-list]')
157-
contributor_search_button = Locator(By.XPATH, '//input[@class="btn btn-default"]')
160+
contributor_search_button = Locator(
161+
By.CSS_SELECTOR, '[data-test-user-search-button]'
162+
)
158163
add_displayed_contributor_button = Locator(
159164
By.CSS_SELECTOR, '[a.btn.btn-success.contrib-button.btn-mini]'
160165
)
161-
search_input = Locator(By.XPATH, '//input[@class="form-control"]')
166+
search_input = Locator(By.CSS_SELECTOR, '[data-test-user-search-input]')
162167
resource_type = Locator(
163168
By.CSS_SELECTOR, '[data-test-display-resource-type-general]'
164169
)
@@ -183,6 +188,35 @@ def select_from_dropdown_listbox(self, selection):
183188
option.click()
184189
break
185190

191+
rows = GroupLocator(By.CSS_SELECTOR, '[data-test-user-card-main]')
192+
193+
def select_from_table_of_rows(self, selection):
194+
for row in self.rows:
195+
cell = row.find_element(
196+
By.CSS_SELECTOR, '[data-analytics-name="View user"]'
197+
)
198+
if selection in cell.text.strip():
199+
row.find_element(
200+
By.CSS_SELECTOR, '[data-test-add-contributor-button]'
201+
).click()
202+
break
203+
204+
contributors_list = GroupLocator(
205+
By.CSS_SELECTOR, '[data-analytics-name="Contributor name"]'
206+
)
207+
208+
def select_from_list(self, selection):
209+
for contributor in self.contributors_list:
210+
if selection in contributor.text.strip():
211+
return contributor
212+
213+
search_cancel_button = Locator(
214+
By.CSS_SELECTOR, '[data-test-user-search-cancel-button]'
215+
)
216+
add_contributor_finish_button = Locator(
217+
By.CSS_SELECTOR, '[data-test-finish-node-contributor-editing-button]'
218+
)
219+
186220
resource_information_save_button = Locator(
187221
By.CSS_SELECTOR, '[data-test-save-resource-metadata-button]'
188222
)

tests/test_metadata.py

Lines changed: 87 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -493,11 +493,37 @@ def registration_metadata_page(self, driver):
493493
registration_metadata_page.goto()
494494
return registration_metadata_page
495495

496-
def test_edit_metadata_description(self, driver, registration_metadata_page, fake):
497-
"""This test verifies that the registration metadata field
498-
description is editable and changes are saved."""
496+
@pytest.fixture()
497+
def registration_guid(self):
498+
registration_guid = osf_api.get_registration_by_title(
499+
'Selenium Registration for Metadata tests'
500+
)
501+
return registration_guid
502+
503+
def test_edit_metadata_title_and_description(
504+
self, driver, registration_metadata_page, fake, registration_guid
505+
):
506+
"""This test verifies that the registration metadata title
507+
and description fields are editable and changes are saved."""
499508

509+
new_title = fake.sentence(nb_words=2)
500510
new_description = fake.sentence(nb_words=4)
511+
original_title = 'Selenium Registration for Metadata tests'
512+
513+
WebDriverWait(driver, 5).until(
514+
EC.element_to_be_clickable(
515+
(By.CSS_SELECTOR, '[data-test-edit-node-title-button]')
516+
)
517+
).click()
518+
title_input = driver.find_element_by_css_selector(
519+
'[data-test-title-field] textarea'
520+
)
521+
title_input.clear()
522+
title_input.send_keys(new_title)
523+
registration_metadata_page.save_metadata_title_button.click()
524+
assert new_title == utils.clean_text(
525+
registration_metadata_page.metadata_title.text
526+
)
501527

502528
WebDriverWait(driver, 5).until(
503529
EC.element_to_be_clickable(
@@ -511,7 +537,64 @@ def test_edit_metadata_description(self, driver, registration_metadata_page, fak
511537
description_input.clear()
512538
description_input.send_keys(new_description)
513539
registration_metadata_page.save_metadata_description_button.click()
514-
assert new_description == registration_metadata_page.metadata_description.text
540+
assert new_description == utils.clean_text(
541+
registration_metadata_page.metadata_description.text
542+
)
543+
osf_api.update_registration_title(
544+
registration_guid=registration_guid, title=original_title
545+
)
546+
547+
def test_edit_contributors(
548+
self, session, driver, registration_metadata_page, registration_guid
549+
):
550+
"""This test verifies that user can add/remove
551+
contributors to registration metadata."""
552+
553+
if settings.DOMAIN == 'test':
554+
new_user = 'Selenium Test User (Do Not Use)'
555+
elif settings.DOMAIN == 'prod':
556+
new_user = 'OSF Tester1'
557+
else:
558+
new_user = 'Selenium Staging'
559+
560+
# Delete the user if its already exists
561+
osf_api.delete_registration_contributor(
562+
registration_guid=registration_guid, user_name=new_user
563+
)
564+
registration_metadata_page.goto_with_reload()
565+
566+
WebDriverWait(driver, 5).until(
567+
EC.element_to_be_clickable(
568+
(By.CSS_SELECTOR, '[data-test-edit-node-contributors-button]')
569+
)
570+
).click()
571+
572+
registration_metadata_page.search_input.click()
573+
registration_metadata_page.search_input.send_keys(new_user)
574+
registration_metadata_page.contributor_search_button.click()
575+
576+
# Get the row number for the user from the search table
577+
WebDriverWait(driver, 5).until(
578+
EC.visibility_of_element_located(
579+
(
580+
By.CSS_SELECTOR,
581+
'[data-test-user-card]',
582+
)
583+
)
584+
)
585+
586+
registration_metadata_page.select_from_table_of_rows(new_user)
587+
registration_metadata_page.search_cancel_button.click()
588+
registration_metadata_page.add_contributor_finish_button.click()
589+
590+
WebDriverWait(driver, 5).until(
591+
EC.visibility_of_element_located(
592+
(By.CSS_SELECTOR, '[data-test-contributors-list]')
593+
)
594+
)
595+
596+
user = registration_metadata_page.select_from_list(new_user)
597+
assert new_user in user.text.strip()
515598

516599
def test_edit_resource_information(self, driver, registration_metadata_page):
517600
"""This test verifies that user can add/remove

utils.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -261,3 +261,10 @@ def read_data_from_table(driver, table_path, check_match, item_match=None):
261261
return i, datalist
262262

263263
return rlen, datalist
264+
265+
266+
def clean_text(stringvalue):
267+
clean_text = stringvalue.strip()
268+
clean_text = clean_text.replace('\n', ' ')
269+
clean_text = ' '.join(clean_text.split())
270+
return clean_text

0 commit comments

Comments
 (0)