Start on new tests

This commit is contained in:
2020-05-11 23:04:13 +01:00
parent 3f48c51aeb
commit e3c1da9d13
13 changed files with 163 additions and 38 deletions

54
RIGS/tests/pages.py Normal file
View File

@@ -0,0 +1,54 @@
from pypom import Page, Region
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver import Chrome
from django.urls import reverse
from PyRIGS.tests import regions
from PyRIGS.tests.pages import BasePage, FormPage
from selenium.common.exceptions import NoSuchElementException
class Index(BasePage):
URL_TEMPLATE = reverse('index')
class Rigboard(BasePage):
URL_TEMPLATE = reverse('rigboard')
_add_item_selector = (By.CSS_SELECTOR, 'a.btn:nth-child(2)')
_event_row_locator = (By.ID, 'event_row')
def add(self):
self.find_element(*self._add_item_selector).click()
class EventListRow(Region):
_event_number_locator = (By.ID, "event_number")
_event_dates_locator = (By.ID, "event_dates")
_event_details_locator = (By.ID, "event_details")
_event_mic_locator = (By.ID, "event_mic")
@property
def id(self):
return self.find_element(*self._event_number_locator).text
@property
def dates(self):
return self.find_element(*self._event_dates_locator).text
@property
def details(self):
return self.find_element(*self._event_details_locator).text
@property
def mic(self):
return self.find_element(*self._event_mic_locator).text
@property
def events(self):
return [self.EventListRow(self, i) for i in self.find_elements(*self._event_row_locator)]
class GenericList(BasePage):
_search_selector = (By.CSS_SELECTOR, 'div.input-group:nth-child(2) > input:nth-child(1)')
_search_go_selector = (By.ID, 'id_search')
_add_item_selector = (By.CSS_SELECTOR, '.btn-success')

12
RIGS/tests/regions.py Normal file
View File

@@ -0,0 +1,12 @@
from pypom import Region
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.remote.webelement import WebElement
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support.select import Select
import datetime
class Header(Region):
def find_link(self, link_text):
return self.driver.find_element_by_partial_link_text(link_text)

View File

@@ -64,19 +64,6 @@ class EventTest(LiveServerTestCase):
self.assertEqual(self.live_server_url + n, self.browser.current_url)
def testRigboardButtons(self):
# Requests address
self.browser.get(self.live_server_url + '/rigboard/')
# Gets redirected to login
self.authenticate('/rigboard/')
# Completes and comes back to rigboard
# Clicks add new
self.browser.find_element_by_partial_link_text("New").click()
self.assertEqual(
self.live_server_url + '/event/create/', self.browser.current_url)
self.browser.get(self.live_server_url + '/rigboard/')
def testRigCreate(self):
# Requests address
self.browser.get(self.live_server_url + '/event/create/')
@@ -1061,7 +1048,6 @@ class TECEventAuthorisationTest(TestCase):
self.assertEqual(self.event.auth_request_to, 'client@functional.test')
self.assertIsNotNone(self.event.auth_request_at)
class SearchTest(LiveServerTestCase):
def setUp(self):
self.profile = models.Profile(

66
RIGS/tests/test_rigs.py Normal file
View File

@@ -0,0 +1,66 @@
from . import pages
from django.core.management import call_command
from django.test import TestCase
from django.test.utils import override_settings
from django.urls import reverse
from urllib.parse import urlparse
from PyRIGS.tests.base import BaseTest, AutoLoginTest
from RIGS import models, urls
from reversion import revisions as reversion
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.ui import WebDriverWait
from PyRIGS.tests.base import animation_is_finished
from PyRIGS.tests import base
from RIGS.tests import regions
from datetime import date, time, datetime, timedelta
from django.utils import timezone
class TestRigboard(AutoLoginTest):
def setUp(self):
super().setUp()
client = models.Person.objects.create(name='Duplicate Test Person', email='duplicate@functional.test')
self.vatrate = models.VatRate.objects.create(start_at='2014-03-05', rate=0.20, comment='test1')
self.testEvent = models.Event.objects.create(name="TE E1", status=models.Event.PROVISIONAL,
start_date=date.today() + timedelta(days=6),
description="start future no end",
purchase_order='TESTPO',
person=client,
auth_request_by=self.profile,
auth_request_at=base.create_datetime(2015, 0o6, 0o4, 10, 00),
auth_request_to="some@email.address")
self.testEvent2 = models.Event.objects.create(name="TE E2", status=models.Event.PROVISIONAL,
start_date=date.today() + timedelta(days=8),
description="start future no end, later",
purchase_order='TESTPO',
person=client,
auth_request_by=self.profile,
auth_request_at=base.create_datetime(2015, 0o6, 0o4, 10, 00),
auth_request_to="some@email.address")
self.page = pages.Rigboard(self.driver, self.live_server_url).open()
def test_buttons(self):
header = regions.Header(self.page, self.driver.find_element(By.CSS_SELECTOR, '.navbar'))
# TODO Switch to checking reversed links (difficult because of arguments)
header.find_link("Rigboard").click()
self.assertEqual(
self.live_server_url + '/rigboard/', self.driver.current_url)
header.find_link("Archive").click()
self.assertEqual(
self.live_server_url + '/event/archive/', self.driver.current_url)
# TODO - This fails for some reason
# header.find_link("New").click()
# self.assertEqual(
# self.live_server_url + '/event/create/', self.driver.current_url)
def test_event_order(self):
self.assertIn(self.testEvent.start_date.strftime('%a %d/%m/%Y'), self.page.events[0].dates)
self.assertIn(self.testEvent2.start_date.strftime('%a %d/%m/%Y'), self.page.events[1].dates)
def test_add_button(self):
self.page.add()
self.assertIn('create', self.driver.current_url)
# Ideally get a response object to assert 200 on