More regions for checklist interaction tests

This commit is contained in:
2021-02-14 22:50:22 +00:00
parent c02e2e6bbf
commit 6c9e360927
7 changed files with 236 additions and 24 deletions

View File

@@ -276,9 +276,28 @@ class CreateEventChecklist(FormPage):
return '{event_id}' not in self.driver.current_url
class EditEventChecklist(CreateEventChecklist, **url_kwargs):
URL_TEMPLATE = reverse('ec_edit', url_kwargs['pk'])
class EditEventChecklist(CreateEventChecklist):
URL_TEMPLATE = '/event/checklist/{pk}/edit'
_vehicle_row_locator = ('xpath', "//tr[@id[starts-with(., 'vehicle') and not(contains(.,'new'))]]")
_crew_row_locator = ('xpath', "//tr[@id[starts-with(., 'crew') and not(contains(. 'new'))]]")
@property
def vehicles(self):
return [
self.VehicleRow(self, el) for el in self.find_elements(*self._vehicle_row_locator)
]
class VehicleRow(Region):
_name_locator = ('xpath', "//input[@id[starts-with(., 'vehicle')]")
_select_locator = ('xpath', "//div[contains(@class, 'bootstrap-select')]")
@property
def name(self):
return regions.TextBox(self, *_name_locator)
@property
def vehicle(self):
return regions.BootstrapSelect(self, self.find_element(*self._select_locator))
class GenericList(BasePage):
_search_selector = (By.CSS_SELECTOR, 'div.input-group:nth-child(2) > input:nth-child(1)')

View File

@@ -737,16 +737,14 @@ def test_ec_create_medium(logged_in_browser, live_server, admin_user, medium_ra)
def test_ec_create_vehicle(logged_in_browser, live_server, admin_user, checklist):
page = pages.EditEventChecklist(logged_in_browser.driver, live_server.url, pk=checklist.pk).open()
page.add_vehicle()
assert len(page.vehicles) == 1
vehicle_name = 'Brian'
logged_in_browser.driver.find_element(By.XPATH, '//*[@name="vehicle_-1"]').send_keys(vehicle_name)
region = base_regions.BootstrapSelectElement(page, logged_in_browser.find_by(By.XPATH, '//tr[@id="vehicles_-1"]//div[contains(@class, "bootstrap-select")]'))
region.search(profile.name)
page.vehicles[0].name = vehicle_name
page.vehicles[0].vehicle.search(admin_user.name)
page.submit()
assert page.success
# Check data is correct
checklist.refresh_from_db()
vehicle = models.EventChecklistVehicle.objects.get(checklist=checklist.pk)
assert vehicle_name == vehicle.vehicle
@@ -755,15 +753,15 @@ def test_ec_create_crew(logged_in_browser, live_server, admin_user, checklist):
page = pages.EditEventChecklist(logged_in_browser.driver, live_server.url, pk=checklist.pk).open()
page.add_crew()
role = "MIC"
crew_select = base_regions.BootstrapSelectElement(page, logged_in_browser.find_by(By.XPATH, '//tr[@id="crew_-1"]//div[contains(@class, "bootstrap-select")]'))
start_time = base_regions.DateTimePicker(page, logged_in_browser.find_by(By.XPATH, '//*[@name="start_-1"]'))
end_time = base_regions.DateTimePicker(page, logged_in_browser.find_by(By.XPATH, '//*[@name="end_-1"]'))
crew_select = base_regions.BootstrapSelectElement(page, logged_in_browser.find_by_xpath('//tr[@id="crew_-1"]//div[contains(@class, "bootstrap-select")]')[0])
start_time = base_regions.DateTimePicker(page, logged_in_browser.find_by_xpath('//*[@name="start_-1"]')[0])
end_time = base_regions.DateTimePicker(page, logged_in_browser.find_by_xpath('//*[@name="end_-1"]')[0])
start_time.set_value(timezone.make_aware(datetime.datetime(2015, 1, 1, 9, 0)))
# TODO Test validation of end before start
end_time.set_value(timezone.make_aware(datetime.datetime(2015, 1, 1, 10, 30)))
crew_select.search(admin_user.name)
logged_in_browser.driver.find_element(By.XPATH, '//*[@name="role_-1"]').send_keys(role)
logged_in_browser.find_by_xpath('//*[@name="role_-1"]').send_keys(role)
page.submit()
assert page.success