Fix crew test

This commit is contained in:
2021-02-15 16:12:25 +00:00
parent 59a9fd5bb4
commit e14e250896
3 changed files with 41 additions and 24 deletions

View File

@@ -10,13 +10,6 @@ jobs:
build: build:
if: "!contains(github.event.head_commit.message, '[ci skip]')" if: "!contains(github.event.head_commit.message, '[ci skip]')"
runs-on: ubuntu-latest runs-on: ubuntu-latest
strategy:
matrix:
python: [3.9]
experimental: [false]
include:
- python: 3.10.0-alpha.5
experimental: true
continue-on-error: ${{ matrix.experimental }} continue-on-error: ${{ matrix.experimental }}
env: env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
@@ -35,7 +28,7 @@ jobs:
- name: Set up Python - name: Set up Python
uses: actions/setup-python@v2 uses: actions/setup-python@v2
with: with:
python-version: ${{ matrix.python }} python-version: 3.9
- name: Cache python deps - name: Cache python deps
uses: actions/cache@v2 uses: actions/cache@v2
with: with:
@@ -53,7 +46,7 @@ jobs:
pipenv run python manage.py makemigrations --check --dry-run pipenv run python manage.py makemigrations --check --dry-run
pipenv run python manage.py collectstatic --noinput pipenv run python manage.py collectstatic --noinput
- name: Run Tests - name: Run Tests
run: pipenv run pytest --cov -n auto run: pipenv run pytest -n auto --cov
- uses: actions/upload-artifact@v2 - uses: actions/upload-artifact@v2
if: failure() if: failure()
with: with:

View File

@@ -279,7 +279,7 @@ class CreateEventChecklist(FormPage):
class EditEventChecklist(CreateEventChecklist): class EditEventChecklist(CreateEventChecklist):
URL_TEMPLATE = '/event/checklist/{pk}/edit' URL_TEMPLATE = '/event/checklist/{pk}/edit'
_vehicle_row_locator = ('xpath', "//tr[@id[starts-with(., 'vehicle') and not(contains(.,'new'))]]") _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'))]]") _crew_row_locator = ('xpath', "//tr[@id[starts-with(., 'crew') and not(contains(.,'new'))]]")
@property @property
def vehicles(self): def vehicles(self):
@@ -297,6 +297,32 @@ class EditEventChecklist(CreateEventChecklist):
def vehicle(self): def vehicle(self):
return regions.BootstrapSelectElement(self, self.root.find_element(*self._select_locator)) return regions.BootstrapSelectElement(self, self.root.find_element(*self._select_locator))
@property
def crew(self):
return [self.CrewRow(self, el) for el in self.find_elements(*self._crew_row_locator)]
class CrewRow(Region):
_select_locator = ('xpath', ".//div[contains(@class,'bootstrap-select')]/..")
_start_time_locator = ('xpath', ".//input[@name[starts-with(., 'start') and not(contains(.,'new'))]]")
_end_time_locator = ('xpath', ".//input[@name[starts-with(., 'end') and not(contains(.,'new'))]]")
_role_locator = ('xpath', ".//input[@name[starts-with(., 'role') and not(contains(.,'new'))]]")
@property
def crewmember(self):
return regions.BootstrapSelectElement(self, self.root.find_element(*self._select_locator))
@property
def start_time(self):
return regions.DateTimePicker(self, self.root.find_element(*self._start_time_locator))
@property
def end_time(self):
return regions.DateTimePicker(self, self.root.find_element(*self._end_time_locator))
@property
def role(self):
return regions.TextBox(self, self.root.find_element(*self._role_locator))
@property @property
def success(self): def success(self):
return 'edit' not in self.driver.current_url return 'edit' not in self.driver.current_url

View File

@@ -748,29 +748,27 @@ def test_ec_create_vehicle(logged_in_browser, live_server, admin_user, checklist
assert vehicle_name == vehicle.vehicle assert vehicle_name == vehicle.vehicle
# FIXME # TODO Test validation of end before start
@pytest.mark.xfail(run=False)
def test_ec_create_crew(logged_in_browser, live_server, admin_user, checklist): 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 = pages.EditEventChecklist(logged_in_browser.driver, live_server.url, pk=checklist.pk).open()
page.add_crew() page.add_crew()
assert len(page.crew) == 1
role = "MIC" role = "MIC"
crew_select = base_regions.BootstrapSelectElement(page, logged_in_browser.find_by_xpath('//tr[@id="crew_-1"]//div[contains(@class, "bootstrap-select")]')[0]) start_time = timezone.make_aware(datetime.datetime(2015, 1, 1, 9, 0))
start_time = base_regions.DateTimePicker(page, logged_in_browser.find_by_xpath('//*[@name="start_-1"]')[0]) end_time = timezone.make_aware(datetime.datetime(2015, 1, 1, 10, 30))
end_time = base_regions.DateTimePicker(page, logged_in_browser.find_by_xpath('//*[@name="end_-1"]')[0]) crew = page.crew[0]
crew.crewmember.search(admin_user.first_name)
start_time.set_value(timezone.make_aware(datetime.datetime(2015, 1, 1, 9, 0))) crew.role.set_value(role)
# TODO Test validation of end before start crew.start_time.set_value(start_time)
end_time.set_value(timezone.make_aware(datetime.datetime(2015, 1, 1, 10, 30))) crew.end_time.set_value(end_time)
crew_select.search(admin_user.name)
logged_in_browser.find_by_xpath('//*[@name="role_-1"]').send_keys(role)
page.submit() page.submit()
assert page.success assert page.success
checklist.refresh_from_db() # Check data is correct
crew_obj = models.EventChecklistCrew.objects.get(checklist=checklist.pk) crew_obj = models.EventChecklistCrew.objects.get(checklist=checklist.pk)
assert admin_user.pk == crew_obj.crewmember.pk assert admin_user.pk == crew_obj.crewmember.pk
assert role == crew_obj.role assert role == crew_obj.role
assert start_time == crew_obj.start
assert end_time == crew_obj.end
@screenshot_failure_cls @screenshot_failure_cls