mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-17 05:22:16 +00:00
Start on new tests
This commit is contained in:
54
RIGS/tests/pages.py
Normal file
54
RIGS/tests/pages.py
Normal 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
12
RIGS/tests/regions.py
Normal 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)
|
||||
@@ -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
66
RIGS/tests/test_rigs.py
Normal 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
|
||||
Reference in New Issue
Block a user