mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-28 19:02:16 +00:00
Add supplier create/edit tests
This commit is contained in:
@@ -9,7 +9,7 @@ from PyRIGS.tests.pages import BasePage, FormPage
|
|||||||
import pdb
|
import pdb
|
||||||
|
|
||||||
|
|
||||||
class AssetListPage(BasePage):
|
class AssetList(BasePage):
|
||||||
URL_TEMPLATE = '/assets/asset/list'
|
URL_TEMPLATE = '/assets/asset/list'
|
||||||
|
|
||||||
_asset_item_locator = (By.CLASS_NAME, 'assetRow')
|
_asset_item_locator = (By.CLASS_NAME, 'assetRow')
|
||||||
@@ -155,3 +155,32 @@ class SupplierList(BasePage):
|
|||||||
|
|
||||||
def search(self):
|
def search(self):
|
||||||
self.find_element(*self._go_button_locator).click()
|
self.find_element(*self._go_button_locator).click()
|
||||||
|
|
||||||
|
|
||||||
|
class SupplierForm(FormPage):
|
||||||
|
_submit_locator = (By.CLASS_NAME, 'btn-success')
|
||||||
|
form_items = {
|
||||||
|
'name': (regions.TextBox, (By.ID, 'id_name')),
|
||||||
|
}
|
||||||
|
|
||||||
|
def submit(self):
|
||||||
|
previous_errors = self.errors
|
||||||
|
self.find_element(*self._submit_locator).click()
|
||||||
|
self.wait.until(lambda x: self.errors != previous_errors or self.success)
|
||||||
|
|
||||||
|
|
||||||
|
class SupplierCreate(SupplierForm):
|
||||||
|
URL_TEMPLATE = reverse('supplier_create')
|
||||||
|
|
||||||
|
@property
|
||||||
|
def success(self):
|
||||||
|
return '/create' not in self.driver.current_url
|
||||||
|
|
||||||
|
|
||||||
|
class SupplierEdit(SupplierForm):
|
||||||
|
# TODO This should be using reverse
|
||||||
|
URL_TEMPLATE = '/assets/supplier/{supplier_id}/edit'
|
||||||
|
|
||||||
|
@property
|
||||||
|
def success(self):
|
||||||
|
return '/edit' not in self.driver.current_url
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ from selenium.webdriver.common.keys import Keys
|
|||||||
import datetime
|
import datetime
|
||||||
|
|
||||||
|
|
||||||
class AssetListTests(AutoLoginTest):
|
class TestAssetList(AutoLoginTest):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
sound = models.AssetCategory.objects.create(name="Sound")
|
sound = models.AssetCategory.objects.create(name="Sound")
|
||||||
@@ -26,7 +26,7 @@ class AssetListTests(AutoLoginTest):
|
|||||||
models.Asset.objects.create(asset_id="10", description="Working Mic", status=working, category=sound, date_acquired=datetime.date(2020, 2, 1))
|
models.Asset.objects.create(asset_id="10", description="Working Mic", status=working, category=sound, date_acquired=datetime.date(2020, 2, 1))
|
||||||
models.Asset.objects.create(asset_id="2", description="A light", status=working, category=lighting, date_acquired=datetime.date(2020, 2, 1))
|
models.Asset.objects.create(asset_id="2", description="A light", status=working, category=lighting, date_acquired=datetime.date(2020, 2, 1))
|
||||||
models.Asset.objects.create(asset_id="C1", description="The pearl", status=broken, category=lighting, date_acquired=datetime.date(2020, 2, 1))
|
models.Asset.objects.create(asset_id="C1", description="The pearl", status=broken, category=lighting, date_acquired=datetime.date(2020, 2, 1))
|
||||||
self.page = pages.AssetListPage(self.driver, self.live_server_url).open()
|
self.page = pages.AssetList(self.driver, self.live_server_url).open()
|
||||||
|
|
||||||
def test_default_statuses_applied(self):
|
def test_default_statuses_applied(self):
|
||||||
# Only the working stuff should be shown initially
|
# Only the working stuff should be shown initially
|
||||||
@@ -129,7 +129,7 @@ class TestAssetForm(AutoLoginTest):
|
|||||||
self.assertEqual(models.Asset.objects.get(asset_id="9000").description, new_description)
|
self.assertEqual(models.Asset.objects.get(asset_id="9000").description, new_description)
|
||||||
|
|
||||||
|
|
||||||
class SupplierListTests(AutoLoginTest):
|
class TestSupplierList(AutoLoginTest):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
super().setUp()
|
super().setUp()
|
||||||
models.Supplier.objects.create(name="Fullmetal Heavy Industry")
|
models.Supplier.objects.create(name="Fullmetal Heavy Industry")
|
||||||
@@ -141,6 +141,7 @@ class SupplierListTests(AutoLoginTest):
|
|||||||
models.Supplier.objects.create(name="1984 Incorporated")
|
models.Supplier.objects.create(name="1984 Incorporated")
|
||||||
self.page = pages.SupplierList(self.driver, self.live_server_url).open()
|
self.page = pages.SupplierList(self.driver, self.live_server_url).open()
|
||||||
|
|
||||||
|
# Should be sorted alphabetically
|
||||||
def test_order(self):
|
def test_order(self):
|
||||||
names = list(map(lambda x: x.name, self.page.suppliers))
|
names = list(map(lambda x: x.name, self.page.suppliers))
|
||||||
self.assertEqual("1984 Incorporated", names[0])
|
self.assertEqual("1984 Incorporated", names[0])
|
||||||
@@ -166,6 +167,50 @@ class SupplierListTests(AutoLoginTest):
|
|||||||
self.assertTrue(len(self.page.suppliers) == 0)
|
self.assertTrue(len(self.page.suppliers) == 0)
|
||||||
|
|
||||||
|
|
||||||
|
class TestSupplierCreateAndEdit(AutoLoginTest):
|
||||||
|
def setUp(self):
|
||||||
|
super().setUp()
|
||||||
|
self.supplier = models.Supplier.objects.create(name="Fullmetal Heavy Industry")
|
||||||
|
|
||||||
|
def test_supplier_create(self):
|
||||||
|
self.page = pages.SupplierCreate(self.driver, self.live_server_url).open()
|
||||||
|
|
||||||
|
self.page.name = "Optican Health Supplies"
|
||||||
|
self.page.submit()
|
||||||
|
self.assertTrue(self.page.success)
|
||||||
|
|
||||||
|
def test_supplier_edit(self):
|
||||||
|
self.page = pages.SupplierEdit(self.driver, self.live_server_url, supplier_id=self.supplier.pk).open()
|
||||||
|
|
||||||
|
self.assertEquals("Fullmetal Heavy Industry", self.page.name)
|
||||||
|
new_name = "Cyberdyne Systems"
|
||||||
|
self.page.name = new_name
|
||||||
|
self.page.submit()
|
||||||
|
self.assertTrue(self.page.success)
|
||||||
|
|
||||||
|
|
||||||
|
class TestSupplierValidation(TestCase):
|
||||||
|
@classmethod
|
||||||
|
def setUpTestData(cls):
|
||||||
|
cls.profile = rigsmodels.Profile.objects.create(username="SupplierValidationTest", email="SVT@test.com", is_superuser=True, is_active=True, is_staff=True)
|
||||||
|
cls.supplier = models.Supplier.objects.create(name="Gadgetron Corporation")
|
||||||
|
|
||||||
|
def setUp(self):
|
||||||
|
self.profile.set_password('testuser')
|
||||||
|
self.profile.save()
|
||||||
|
self.assertTrue(self.client.login(username=self.profile.username, password='testuser'))
|
||||||
|
|
||||||
|
def test_create(self):
|
||||||
|
url = reverse('supplier_create')
|
||||||
|
response = self.client.post(url)
|
||||||
|
self.assertFormError(response, 'form', 'name', 'This field is required.')
|
||||||
|
|
||||||
|
def test_edit(self):
|
||||||
|
url = reverse('supplier_update', kwargs={'pk': self.supplier.pk})
|
||||||
|
response = self.client.post(url, {'name': ""})
|
||||||
|
self.assertFormError(response, 'form', 'name', 'This field is required.')
|
||||||
|
|
||||||
|
|
||||||
# @tag('slow') TODO: req. Django 3.0
|
# @tag('slow') TODO: req. Django 3.0
|
||||||
class TestAccessLevels(TestCase):
|
class TestAccessLevels(TestCase):
|
||||||
@override_settings(DEBUG=True)
|
@override_settings(DEBUG=True)
|
||||||
|
|||||||
Reference in New Issue
Block a user