mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-25 17:32:16 +00:00
Port/fix asset tests
This commit is contained in:
@@ -18,18 +18,23 @@ def status(db):
|
|||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def test_cable(db, category, status):
|
def cable_type(db):
|
||||||
connector = models.Connector.objects.create(description="16A IEC", current_rating=16, voltage_rating=240, num_pins=3)
|
connector = models.Connector.objects.create(description="16A IEC", current_rating=16, voltage_rating=240, num_pins=3)
|
||||||
cable_type = models.CableType.objects.create(circuits=11, cores=3, plug=connector, socket=connector)
|
cable_type = models.CableType.objects.create(circuits=11, cores=3, plug=connector, socket=connector)
|
||||||
cable = models.Asset.objects.create(asset_id="9666", description="125A -> Jack", comments="The cable from Hell...", status=status, category=category, date_acquired=datetime.date(2006, 6, 6), is_cable=True, cable_type=cable_type, length=10, csa="1.5")
|
yield cable_type
|
||||||
yield cable
|
|
||||||
connector.delete()
|
connector.delete()
|
||||||
cable_type.delete()
|
cable_type.delete()
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def test_cable(db, category, status, cable_type):
|
||||||
|
cable = models.Asset.objects.create(asset_id="9666", description="125A -> Jack", comments="The cable from Hell...", status=status, category=category, date_acquired=datetime.date(2006, 6, 6), is_cable=True, cable_type=cable_type, length=10, csa="1.5", salvage_value=50)
|
||||||
|
yield cable
|
||||||
cable.delete()
|
cable.delete()
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def test_asset(db, category, status):
|
def test_asset(db, category, status):
|
||||||
asset, created = models.Asset.objects.get_or_create(asset_id="91991", description="Spaceflower", status=status, category=category, date_acquired=datetime.date(1991, 12, 26))
|
asset, created = models.Asset.objects.get_or_create(asset_id="91991", description="Spaceflower", status=status, category=category, date_acquired=datetime.date(1991, 12, 26), salvage_value=100)
|
||||||
yield asset
|
yield asset
|
||||||
asset.delete()
|
asset.delete()
|
||||||
|
|||||||
@@ -94,6 +94,55 @@ class TestAssetList(AutoLoginTest):
|
|||||||
self.assertEqual("10", asset_ids[1])
|
self.assertEqual("10", asset_ids[1])
|
||||||
|
|
||||||
|
|
||||||
|
def test_cable_create(logged_in_browser, admin_user, live_server, test_asset, category, status, cable_type):
|
||||||
|
page = pages.AssetCreate(logged_in_browser.driver, live_server.url).open()
|
||||||
|
wait = WebDriverWait(logged_in_browser.driver, 20)
|
||||||
|
page.description = str(cable_type)
|
||||||
|
page.category = category.name
|
||||||
|
page.status = status.name
|
||||||
|
page.serial_number = "MELON-MELON-MELON"
|
||||||
|
page.comments = "You might need that"
|
||||||
|
page.salvage_value = "666"
|
||||||
|
page.is_cable = True
|
||||||
|
|
||||||
|
assert logged_in_browser.driver.find_element(By.ID, 'cable-table').is_displayed()
|
||||||
|
wait.until(animation_is_finished())
|
||||||
|
page.cable_type = str(cable_type)
|
||||||
|
page.length = 10
|
||||||
|
page.csa = "1.5"
|
||||||
|
|
||||||
|
page.submit()
|
||||||
|
assert page.success
|
||||||
|
|
||||||
|
|
||||||
|
def test_asset_edit(logged_in_browser, admin_user, live_server, test_asset):
|
||||||
|
page = pages.AssetEdit(logged_in_browser.driver, live_server.url, asset_id=test_asset.asset_id).open()
|
||||||
|
|
||||||
|
assert logged_in_browser.driver.find_element(By.ID, 'id_asset_id').get_attribute('readonly') is not None
|
||||||
|
|
||||||
|
new_description = "Big Shelf"
|
||||||
|
page.description = new_description
|
||||||
|
|
||||||
|
page.submit()
|
||||||
|
assert page.success
|
||||||
|
|
||||||
|
assert models.Asset.objects.get(asset_id=test_asset.asset_id).description == new_description
|
||||||
|
|
||||||
|
|
||||||
|
def test_asset_duplicate(logged_in_browser, admin_user, live_server, test_asset):
|
||||||
|
page = pages.AssetDuplicate(logged_in_browser.driver, live_server.url, asset_id=test_asset.asset_id).open()
|
||||||
|
|
||||||
|
assert test_asset.asset_id != page.asset_id
|
||||||
|
assert test_asset.description == page.description
|
||||||
|
assert test_asset.status.name == page.status
|
||||||
|
assert test_asset.category.name == page.category
|
||||||
|
assert test_asset.date_acquired == page.date_acquired.date()
|
||||||
|
|
||||||
|
page.submit()
|
||||||
|
assert page.success
|
||||||
|
assert models.Asset.objects.last().description == test_asset.description
|
||||||
|
|
||||||
|
|
||||||
@screenshot_failure_cls
|
@screenshot_failure_cls
|
||||||
class TestAssetForm(AutoLoginTest):
|
class TestAssetForm(AutoLoginTest):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
@@ -160,50 +209,6 @@ class TestAssetForm(AutoLoginTest):
|
|||||||
# This one is important as it defaults to today's date
|
# This one is important as it defaults to today's date
|
||||||
self.assertEqual(asset.date_acquired, acquired)
|
self.assertEqual(asset.date_acquired, acquired)
|
||||||
|
|
||||||
def test_cable_create(self):
|
|
||||||
self.page.description = "IEC -> IEC"
|
|
||||||
self.page.category = "Health & Safety"
|
|
||||||
self.page.status = "O.K."
|
|
||||||
self.page.serial_number = "MELON-MELON-MELON"
|
|
||||||
self.page.comments = "You might need that"
|
|
||||||
self.page.is_cable = True
|
|
||||||
|
|
||||||
self.assertTrue(self.driver.find_element_by_id('cable-table').is_displayed())
|
|
||||||
self.wait.until(animation_is_finished())
|
|
||||||
self.page.cable_type = "IEC → IEC"
|
|
||||||
self.page.socket = "IEC"
|
|
||||||
self.page.length = 10
|
|
||||||
self.page.csa = "1.5"
|
|
||||||
|
|
||||||
self.page.submit()
|
|
||||||
self.assertTrue(self.page.success)
|
|
||||||
|
|
||||||
def test_asset_edit(self):
|
|
||||||
self.page = pages.AssetEdit(self.driver, self.live_server_url, asset_id=self.parent.asset_id).open()
|
|
||||||
|
|
||||||
self.assertIsNotNone(self.driver.find_element_by_id('id_asset_id').get_attribute('readonly'))
|
|
||||||
|
|
||||||
new_description = "Big Shelf"
|
|
||||||
self.page.description = new_description
|
|
||||||
|
|
||||||
self.page.submit()
|
|
||||||
self.assertTrue(self.page.success)
|
|
||||||
|
|
||||||
self.assertEqual(models.Asset.objects.get(asset_id=self.parent.asset_id).description, new_description)
|
|
||||||
|
|
||||||
def test_asset_duplicate(self):
|
|
||||||
self.page = pages.AssetDuplicate(self.driver, self.live_server_url, asset_id=self.parent.asset_id).open()
|
|
||||||
|
|
||||||
self.assertNotEqual(self.parent.asset_id, self.page.asset_id)
|
|
||||||
self.assertEqual(self.parent.description, self.page.description)
|
|
||||||
self.assertEqual(self.parent.status.name, self.page.status)
|
|
||||||
self.assertEqual(self.parent.category.name, self.page.category)
|
|
||||||
self.assertEqual(self.parent.date_acquired, self.page.date_acquired.date())
|
|
||||||
|
|
||||||
self.page.submit()
|
|
||||||
self.assertTrue(self.page.success)
|
|
||||||
self.assertEqual(models.Asset.objects.last().description, self.parent.description)
|
|
||||||
|
|
||||||
|
|
||||||
@screenshot_failure_cls
|
@screenshot_failure_cls
|
||||||
class TestSupplierList(AutoLoginTest):
|
class TestSupplierList(AutoLoginTest):
|
||||||
@@ -283,6 +288,28 @@ def test_audit_search(logged_in_browser, live_server, test_asset):
|
|||||||
assert logged_in_browser.is_text_present("Asset with that ID does not exist!")
|
assert logged_in_browser.is_text_present("Asset with that ID does not exist!")
|
||||||
|
|
||||||
|
|
||||||
|
def test_audit_success(logged_in_browser, admin_user, live_server, test_asset):
|
||||||
|
page = pages.AssetAuditList(logged_in_browser.driver, live_server.url).open()
|
||||||
|
wait = WebDriverWait(logged_in_browser.driver, 20)
|
||||||
|
page.set_query(test_asset.asset_id)
|
||||||
|
page.search()
|
||||||
|
wait.until(ec.visibility_of_element_located((By.ID, 'modal')))
|
||||||
|
# Now do it properly
|
||||||
|
page.modal.description = new_desc = "A BIG hammer"
|
||||||
|
page.modal.submit()
|
||||||
|
logged_in_browser.driver.implicitly_wait(4)
|
||||||
|
wait.until(animation_is_finished())
|
||||||
|
submit_time = timezone.now()
|
||||||
|
# Check data is correct
|
||||||
|
test_asset.refresh_from_db()
|
||||||
|
assert test_asset.description in new_desc
|
||||||
|
# Make sure audit 'log' was filled out
|
||||||
|
assert admin_user.initials == test_asset.last_audited_by.initials
|
||||||
|
assert_times_almost_equal(submit_time, test_asset.last_audited_at)
|
||||||
|
# Check we've removed it from the 'needing audit' list
|
||||||
|
assert test_asset.asset_id not in page.assets
|
||||||
|
|
||||||
|
|
||||||
@screenshot_failure_cls
|
@screenshot_failure_cls
|
||||||
class TestAssetAudit(AutoLoginTest):
|
class TestAssetAudit(AutoLoginTest):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
@@ -293,14 +320,14 @@ class TestAssetAudit(AutoLoginTest):
|
|||||||
self.connector = models.Connector.objects.create(description="Trailer Socket", current_rating=1,
|
self.connector = models.Connector.objects.create(description="Trailer Socket", current_rating=1,
|
||||||
voltage_rating=40, num_pins=13)
|
voltage_rating=40, num_pins=13)
|
||||||
models.Asset.objects.create(asset_id="1", description="Trailer Cable", status=self.status,
|
models.Asset.objects.create(asset_id="1", description="Trailer Cable", status=self.status,
|
||||||
category=self.category, date_acquired=datetime.date(2020, 2, 1))
|
category=self.category, date_acquired=datetime.date(2020, 2, 1), salvage_value=10)
|
||||||
models.Asset.objects.create(asset_id="11", description="Trailerboard", status=self.status,
|
models.Asset.objects.create(asset_id="11", description="Trailerboard", status=self.status,
|
||||||
category=self.category, date_acquired=datetime.date(2020, 2, 1))
|
category=self.category, date_acquired=datetime.date(2020, 2, 1), salvage_value=10)
|
||||||
models.Asset.objects.create(asset_id="111", description="Erms", status=self.status, category=self.category,
|
models.Asset.objects.create(asset_id="111", description="Erms", status=self.status, category=self.category,
|
||||||
date_acquired=datetime.date(2020, 2, 1))
|
date_acquired=datetime.date(2020, 2, 1), salvage_value=10)
|
||||||
self.asset = models.Asset.objects.create(asset_id="1111", description="A hammer", status=self.status,
|
self.asset = models.Asset.objects.create(asset_id="1111", description="A hammer", status=self.status,
|
||||||
category=self.category,
|
category=self.category,
|
||||||
date_acquired=datetime.date(2020, 2, 1))
|
date_acquired=datetime.date(2020, 2, 1), salvage_value=10)
|
||||||
self.page = pages.AssetAuditList(self.driver, self.live_server_url).open()
|
self.page = pages.AssetAuditList(self.driver, self.live_server_url).open()
|
||||||
self.wait = WebDriverWait(self.driver, 20)
|
self.wait = WebDriverWait(self.driver, 20)
|
||||||
|
|
||||||
@@ -316,25 +343,6 @@ class TestAssetAudit(AutoLoginTest):
|
|||||||
self.driver.implicitly_wait(4)
|
self.driver.implicitly_wait(4)
|
||||||
self.assertIn("This field is required.", self.page.modal.errors["Description"])
|
self.assertIn("This field is required.", self.page.modal.errors["Description"])
|
||||||
|
|
||||||
def test_audit_success(self):
|
|
||||||
self.page.set_query(self.asset.asset_id)
|
|
||||||
self.page.search()
|
|
||||||
self.wait.until(ec.visibility_of_element_located((By.ID, 'modal')))
|
|
||||||
# Now do it properly
|
|
||||||
self.page.modal.description = new_desc = "A BIG hammer"
|
|
||||||
self.page.modal.submit()
|
|
||||||
self.driver.implicitly_wait(4)
|
|
||||||
self.wait.until(animation_is_finished())
|
|
||||||
submit_time = timezone.now()
|
|
||||||
# Check data is correct
|
|
||||||
self.asset.refresh_from_db()
|
|
||||||
self.assertEqual(self.asset.description, new_desc)
|
|
||||||
# Make sure audit 'log' was filled out
|
|
||||||
self.assertEqual(self.profile.initials, self.asset.last_audited_by.initials)
|
|
||||||
assert_times_almost_equal(submit_time, self.asset.last_audited_at)
|
|
||||||
# Check we've removed it from the 'needing audit' list
|
|
||||||
self.assertNotIn(self.asset.asset_id, self.page.assets)
|
|
||||||
|
|
||||||
def test_audit_list(self):
|
def test_audit_list(self):
|
||||||
self.assertEqual(models.Asset.objects.filter(last_audited_at=None).count(), len(self.page.assets))
|
self.assertEqual(models.Asset.objects.filter(last_audited_at=None).count(), len(self.page.assets))
|
||||||
asset_row = self.page.assets[0]
|
asset_row = self.page.assets[0]
|
||||||
|
|||||||
@@ -31,7 +31,6 @@ class AssetList(LoginRequiredMixin, generic.ListView):
|
|||||||
model = models.Asset
|
model = models.Asset
|
||||||
template_name = 'asset_list.html'
|
template_name = 'asset_list.html'
|
||||||
paginate_by = 40
|
paginate_by = 40
|
||||||
ordering = ['-pk']
|
|
||||||
hide_hidden_status = True
|
hide_hidden_status = True
|
||||||
|
|
||||||
def get_initial(self):
|
def get_initial(self):
|
||||||
@@ -327,7 +326,6 @@ class CableTypeCreate(generic.CreateView):
|
|||||||
context = super().get_context_data(**kwargs)
|
context = super().get_context_data(**kwargs)
|
||||||
context["create"] = True
|
context["create"] = True
|
||||||
context["page_title"] = "Create Cable Type"
|
context["page_title"] = "Create Cable Type"
|
||||||
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
@@ -343,7 +341,6 @@ class CableTypeUpdate(generic.UpdateView):
|
|||||||
context = super().get_context_data(**kwargs)
|
context = super().get_context_data(**kwargs)
|
||||||
context["edit"] = True
|
context["edit"] = True
|
||||||
context["page_title"] = f"Edit Cable Type {self.object}"
|
context["page_title"] = f"Edit Cable Type {self.object}"
|
||||||
|
|
||||||
return context
|
return context
|
||||||
|
|
||||||
def get_success_url(self):
|
def get_success_url(self):
|
||||||
|
|||||||
Reference in New Issue
Block a user