From c9ea1bb75d26c267d5e5c4471f07921efb888c6b Mon Sep 17 00:00:00 2001 From: Arona Date: Sun, 24 May 2020 19:24:51 +0100 Subject: [PATCH] pep8 --- PyRIGS/tests/base.py | 6 ++- PyRIGS/tests/regions.py | 1 + PyRIGS/urls.py | 3 +- RIGS/finance.py | 6 +-- RIGS/tests/pages.py | 32 +++++++------ RIGS/tests/test_functional.py | 2 + RIGS/tests/test_rigs.py | 74 +++++++++++++++-------------- assets/views.py | 1 + users/tests/test_users.py | 1 - versioning/tests/test_versioning.py | 5 +- 10 files changed, 72 insertions(+), 59 deletions(-) diff --git a/PyRIGS/tests/base.py b/PyRIGS/tests/base.py index 67430ef4..33e634a2 100644 --- a/PyRIGS/tests/base.py +++ b/PyRIGS/tests/base.py @@ -7,9 +7,11 @@ import pytz from datetime import date, time, datetime, timedelta from django.conf import settings + def create_datetime(year, month, day, hour, min): - tz = pytz.timezone(settings.TIME_ZONE) - return tz.localize(datetime(year, month, day, hour, min)).astimezone(pytz.utc) + tz = pytz.timezone(settings.TIME_ZONE) + return tz.localize(datetime(year, month, day, hour, min)).astimezone(pytz.utc) + def create_browser(): options = webdriver.ChromeOptions() diff --git a/PyRIGS/tests/regions.py b/PyRIGS/tests/regions.py index 33179ee5..119f22c4 100644 --- a/PyRIGS/tests/regions.py +++ b/PyRIGS/tests/regions.py @@ -149,6 +149,7 @@ class DateTimePicker(Region): self.root.send_keys(Keys.TAB) self.root.send_keys(time) + class SingleSelectPicker(Region): @property def value(self): diff --git a/PyRIGS/urls.py b/PyRIGS/urls.py index b42cfa75..4e859361 100644 --- a/PyRIGS/urls.py +++ b/PyRIGS/urls.py @@ -8,7 +8,8 @@ from django.views.decorators.clickjacking import xframe_options_exempt from django.contrib.auth.views import LoginView from registration.backends.default.views import RegistrationView from PyRIGS.decorators import permission_required_with_403 -import RIGS, users +import RIGS +import users from PyRIGS import views urlpatterns = [ diff --git a/RIGS/finance.py b/RIGS/finance.py index 477b2608..8ce1582f 100644 --- a/RIGS/finance.py +++ b/RIGS/finance.py @@ -83,7 +83,7 @@ class InvoicePrint(generic.View): response = HttpResponse(content_type='application/pdf') response['Content-Disposition'] = "filename=Invoice %05d - N%05d | %s.pdf" % ( - invoice.pk, invoice.event.pk, escapedEventName) + invoice.pk, invoice.event.pk, escapedEventName) response.write(pdfData) return response @@ -176,8 +176,8 @@ class InvoiceWaiting(generic.ListView): # @todo find a way to select items events = self.model.objects.filter( ( - Q(start_date__lte=datetime.date.today(), end_date__isnull=True) | # Starts before with no end - Q(end_date__lte=datetime.date.today()) # Has end date, finishes before + Q(start_date__lte=datetime.date.today(), end_date__isnull=True) | # Starts before with no end + Q(end_date__lte=datetime.date.today()) # Has end date, finishes before ) & Q(invoice__isnull=True) & # Has not already been invoiced Q(is_rig=True) # Is a rig (not non-rig) diff --git a/RIGS/tests/pages.py b/RIGS/tests/pages.py index b993aa62..38fe9349 100644 --- a/RIGS/tests/pages.py +++ b/RIGS/tests/pages.py @@ -9,6 +9,7 @@ from PyRIGS.tests.pages import BasePage, FormPage from selenium.common.exceptions import NoSuchElementException from selenium.webdriver.support import expected_conditions as EC + class Index(BasePage): URL_TEMPLATE = reverse('index') @@ -47,34 +48,35 @@ class Rigboard(BasePage): @property def events(self): return [self.EventListRow(self, i) for i in self.find_elements(*self._event_row_locator)] - + class EventDetail(BasePage): URL_TEMPLATE = 'event/{event_id}' - + # TODO Refactor into regions to match template fragmentation _event_name_selector = (By.XPATH, '//h1') _person_panel_selector = (By.XPATH, '//div[contains(text(), "Contact Details")]/..') _name_selector = (By.XPATH, '//dt[text()="Person"]/following-sibling::dd[1]') _email_selector = (By.XPATH, '//dt[text()="Email"]/following-sibling::dd[1]') _phone_selector = (By.XPATH, '//dt[text()="Phone Number"]/following-sibling::dd[1]') - + @property def event_name(self): return self.find_element(*self._event_name_selector).text - + @property def name(self): return self.find_element(*self._person_panel_selector).find_element(*self._name_selector).text - + @property def email(self): return self.find_element(*self._person_panel_selector).find_element(*self._email_selector).text - + @property def phone(self): return self.find_element(*self._person_panel_selector).find_element(*self._phone_selector).text + class CreateEvent(FormPage): URL_TEMPLATE = reverse('event_create') @@ -88,7 +90,7 @@ class CreateEvent(FormPage): _add_person_selector = (By.XPATH, '//a[@data-target="#id_person" and contains(@href, "add")]') _add_item_selector = (By.XPATH, '//button[contains(@class, "item-add")]') - + _event_table_selector = (By.ID, 'item-table') _warning_selector = (By.XPATH, '/html/body/div[1]/div[1]') @@ -115,11 +117,11 @@ class CreateEvent(FormPage): def item_row(self, ID): return rigs_regions.ItemRow(self, self.find_element(By.ID, "item-" + ID)) - + @property def item_table(self): return self.find_element(*self._event_table_selector) - + @property def warning(self): return self.find_element(*self._warning_selector).text @@ -153,25 +155,27 @@ class CreateEvent(FormPage): @property def success(self): return '/create' not in self.driver.current_url - + + class DuplicateEvent(CreateEvent): URL_TEMPLATE = 'event/{event_id}/duplicate' _submit_locator = (By.XPATH, '/html/body/div[1]/form/div/div[5]/div/button') - + @property def success(self): return '/duplicate' not in self.driver.current_url - + + class EditEvent(CreateEvent): URL_TEMPLATE = 'event/{event_id}/edit' _submit_locator = (By.XPATH, '/html/body/div[1]/form/div/div[5]/div/button') - + @property def success(self): return '/edit' not in self.driver.current_url + 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') - diff --git a/RIGS/tests/test_functional.py b/RIGS/tests/test_functional.py index cd228df4..0bb63d78 100644 --- a/RIGS/tests/test_functional.py +++ b/RIGS/tests/test_functional.py @@ -28,6 +28,7 @@ from django.conf import settings import sys + class IcalTest(LiveServerTestCase): def setUp(self): self.all_events = set(range(1, 18)) @@ -415,6 +416,7 @@ 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( diff --git a/RIGS/tests/test_rigs.py b/RIGS/tests/test_rigs.py index 31466f2e..732cbf14 100644 --- a/RIGS/tests/test_rigs.py +++ b/RIGS/tests/test_rigs.py @@ -20,19 +20,20 @@ from django.utils import timezone from selenium.webdriver.common.action_chains import ActionChains from django.db import transaction + class BaseRigboardTest(AutoLoginTest): def setUp(self): self.vatrate = models.VatRate.objects.create(start_at='2014-03-05', rate=0.20, comment='test1') super().setUp() self.client = models.Person.objects.create(name='Rigboard Test Person', email='rigboard@functional.test') 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=self.client, - auth_request_by=self.profile, - auth_request_at=base.create_datetime(2015, 0o6, 0o4, 10, 00), - auth_request_to="some@email.address") + start_date=date.today() + timedelta(days=6), + description="start future no end", + purchase_order='TESTPO', + person=self.client, + auth_request_by=self.profile, + auth_request_at=base.create_datetime(2015, 0o6, 0o4, 10, 00), + auth_request_to="some@email.address") item1 = models.EventItem( event=self.testEvent, @@ -50,7 +51,7 @@ class BaseRigboardTest(AutoLoginTest): order=2, ).save() self.wait = WebDriverWait(self.driver, 5) - + def select_event_type(self, event_type): self.wait.until(animation_is_finished()) self.assertFalse(self.page.is_expanded) @@ -58,17 +59,18 @@ class BaseRigboardTest(AutoLoginTest): self.wait.until(animation_is_finished()) self.assertTrue(self.page.is_expanded) + class TestRigboard(BaseRigboardTest): def setUp(self): super().setUp() 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=self.client, - auth_request_by=self.profile, - auth_request_at=base.create_datetime(2015, 0o6, 0o4, 10, 00), - auth_request_to="some@email.address") + start_date=date.today() + timedelta(days=8), + description="start future no end, later", + purchase_order='TESTPO', + person=self.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): @@ -163,10 +165,10 @@ class TestEventCreate(BaseRigboardTest): self.assertEqual(self.page.person_selector.options[1].name, person_name) # TODO - + def test_date_validation(self): self.select_event_type("Rig") - + self.page.person_selector.toggle() self.assertTrue(self.page.person_selector.is_open) self.page.person_selector.search(self.client.name) @@ -184,17 +186,17 @@ class TestEventCreate(BaseRigboardTest): self.assertFalse(self.page.success) self.assertIn("can't finish before it has started", self.page.errors["General form errors"][0]) self.wait.until(animation_is_finished()) - - #end time before start + + # end time before start self.page.start_date = datetime.date(2020, 1, 1) self.page.start_time = datetime.time(10) self.page.end_time = datetime.time(9) - + # Expected to fail self.page.submit() self.assertFalse(self.page.success) self.assertIn("can't finish before it has started", self.page.errors["General form errors"][0]) - + # Fix it self.page.end_time = datetime.time(23) @@ -283,18 +285,18 @@ class TestEventCreate(BaseRigboardTest): def test_subhire_creation(self): pass - + class TestEventDuplicate(BaseRigboardTest): def setUp(self): super().setUp() self.page = pages.DuplicateEvent(self.driver, self.live_server_url, event_id=self.testEvent.pk).open() - + def test_rig_duplicate(self): table = self.page.item_table self.assertIn("Test Item 1", table.text) self.assertIn("Test Item 2", table.text) - + # Check the info message is visible self.assertIn("Event data duplicated but not yet saved", self.page.warning) @@ -311,10 +313,10 @@ class TestEventDuplicate(BaseRigboardTest): modal.submit() self.wait.until(animation_is_finished()) - # Attempt to save + # Attempt to save ActionChains(self.driver).move_to_element(table).perform() self.page.submit() - + # TODO Rewrite when EventDetail page is implemented newEvent = models.Event.objects.latest('pk') @@ -359,16 +361,16 @@ class TestEventDuplicate(BaseRigboardTest): self.assertIn("Test Item 1", table.text) self.assertIn("Test Item 2", table.text) self.assertNotIn("Test Item 3", table.text) - - + + class TestEventEdit(BaseRigboardTest): def setUp(self): super().setUp() self.page = pages.EditEvent(self.driver, self.live_server_url, event_id=self.testEvent.pk).open() - + def test_rig_edit(self): self.page.name = "Edited Event" - + modal = self.page.add_event_item() self.wait.until(animation_is_finished()) # See modal has opened @@ -382,25 +384,25 @@ class TestEventEdit(BaseRigboardTest): modal.submit() self.wait.until(animation_is_finished()) - # Attempt to save + # Attempt to save ActionChains(self.driver).move_to_element(self.page.item_table).perform() self.page.submit() - + self.assertTrue(self.page.success) - + self.page = pages.EventDetail(self.driver, self.live_server_url, event_id=self.testEvent.pk).open() self.assertIn(self.page.event_name, self.testEvent.name) self.assertEqual(self.page.name, self.testEvent.person.name) # Check the new items are visible table = self.page.item_table self.assertIn("Test Item 3", table.text) - - + + class TestEventDetail(BaseRigboardTest): def setUp(self): super().setUp() self.page = pages.EventDetail(self.driver, self.live_server_url, event_id=self.testEvent.pk).open() - + def test_rig_detail(self): self.assertIn("N%05d | %s" % (self.testEvent.pk, self.testEvent.name), self.page.event_name) self.assertEqual(person.name, self.page.name) diff --git a/assets/views.py b/assets/views.py index a43511e4..54d19c84 100644 --- a/assets/views.py +++ b/assets/views.py @@ -300,6 +300,7 @@ class ActivityTable(versioning.ActivityTable): return context + class CableTypeList(generic.ListView): model = models.CableType template_name = 'cable_type_list.html' diff --git a/users/tests/test_users.py b/users/tests/test_users.py index a938aa9a..75c83a48 100644 --- a/users/tests/test_users.py +++ b/users/tests/test_users.py @@ -185,4 +185,3 @@ class UserRegistrationTest(LiveServerTestCase): self.assertEqual(profileObject.email, 'test@example.com') # All is well - diff --git a/versioning/tests/test_versioning.py b/versioning/tests/test_versioning.py index e13a2bbc..3d3de74f 100644 --- a/versioning/tests/test_versioning.py +++ b/versioning/tests/test_versioning.py @@ -194,6 +194,8 @@ class RIGSVersionTestCase(TestCase): self.assertTrue(diffs[0].new is None) # Unit Tests + + class TestVersioningViews(TestCase): @classmethod def setUpTestData(cls): @@ -273,5 +275,4 @@ class TestVersioningViews(TestCase): self.assertEqual(response.status_code, 200) -#Functional Tests - +# Functional Tests