diff --git a/assets/models.py b/assets/models.py
index 122fdcb2..5bf830bc 100644
--- a/assets/models.py
+++ b/assets/models.py
@@ -44,6 +44,7 @@ class Supplier(models.Model, RevisionMixin):
name = models.CharField(max_length=80)
class Meta:
+ ordering = ['name']
permissions = (
('view_supplier', 'Can view a supplier'),
)
diff --git a/assets/templates/supplier_list.html b/assets/templates/supplier_list.html
index afc6d61d..20ed5974 100644
--- a/assets/templates/supplier_list.html
+++ b/assets/templates/supplier_list.html
@@ -14,7 +14,7 @@
{% render_field form.query|add_class:'form-control' placeholder='Search by Name' style="width: 250px"%}
-
+
@@ -27,8 +27,8 @@
{% for item in object_list %}
-
- | {{ item.name }} |
+
+ | {{ item.name }} |
View
Edit
diff --git a/assets/tests/pages.py b/assets/tests/pages.py
index a6da52ca..a978d7d3 100644
--- a/assets/tests/pages.py
+++ b/assets/tests/pages.py
@@ -124,3 +124,34 @@ class AssetCreate(AssetForm):
@property
def success(self):
return '/create' not in self.driver.current_url
+
+
+class SupplierList(BasePage):
+ URL_TEMPLATE = reverse('supplier_list')
+
+ _supplier_item_locator = (By.CLASS_NAME, 'supplierRow')
+ _search_text_locator = (By.ID, 'id_query')
+ _go_button_locator = (By.ID, 'id_search')
+
+ class SupplierListRow(Region):
+ _name_locator = (By.CLASS_NAME, "supplierName")
+
+ @property
+ def name(self):
+ return self.find_element(*self._name_locator).text
+
+ @property
+ def suppliers(self):
+ return [self.SupplierListRow(self, i) for i in self.find_elements(*self._supplier_item_locator)]
+
+ @property
+ def query(self):
+ return self.find_element(*self._search_text_locator).text
+
+ def set_query(self, queryString):
+ element = self.find_element(*self._search_text_locator)
+ element.clear()
+ element.send_keys(queryString)
+
+ def search(self):
+ self.find_element(*self._go_button_locator).click()
diff --git a/assets/tests/test_assets.py b/assets/tests/test_assets.py
index caa5a763..b9cb6d65 100644
--- a/assets/tests/test_assets.py
+++ b/assets/tests/test_assets.py
@@ -129,6 +129,43 @@ class TestAssetForm(AutoLoginTest):
self.assertEqual(models.Asset.objects.get(asset_id="9000").description, new_description)
+class SupplierListTests(AutoLoginTest):
+ def setUp(self):
+ super().setUp()
+ models.Supplier.objects.create(name="Fullmetal Heavy Industry")
+ models.Supplier.objects.create(name="Acme.")
+ models.Supplier.objects.create(name="TEC PA & Lighting")
+ models.Supplier.objects.create(name="Caterpillar Inc.")
+ models.Supplier.objects.create(name="N.E.R.D")
+ models.Supplier.objects.create(name="Khumalo")
+ models.Supplier.objects.create(name="1984 Incorporated")
+ self.page = pages.SupplierList(self.driver, self.live_server_url).open()
+
+ def test_order(self):
+ names = list(map(lambda x: x.name, self.page.suppliers))
+ self.assertEqual("1984 Incorporated", names[0])
+ self.assertEqual("Acme.", names[1])
+ self.assertEqual("Caterpillar Inc.", names[2])
+ self.assertEqual("Fullmetal Heavy Industry", names[3])
+ self.assertEqual("Khumalo", names[4])
+ self.assertEqual("N.E.R.D", names[5])
+ self.assertEqual("TEC PA & Lighting", names[6])
+
+ def test_search(self):
+ self.page.set_query("TEC")
+ self.page.search()
+ self.assertTrue(len(self.page.suppliers) == 1)
+ self.assertEqual("TEC PA & Lighting", self.page.suppliers[0].name)
+
+ self.page.set_query("")
+ self.page.search()
+ self.assertTrue(len(self.page.suppliers) == 7)
+
+ self.page.set_query("This is not a supplier")
+ self.page.search()
+ self.assertTrue(len(self.page.suppliers) == 0)
+
+
# @tag('slow') TODO: req. Django 3.0
class TestAccessLevels(TestCase):
@override_settings(DEBUG=True)
@@ -269,7 +306,7 @@ class TestSampleDataGenerator(TestCase):
call_command('deleteSampleData')
self.assertTrue(models.Asset.objects.all().count() == 0)
- self.assertTrue(models.Asset.objects.all().count() == 0)
+ self.assertTrue(models.Supplier.objects.all().count() == 0)
def test_production_exception(self):
from django.core.management.base import CommandError
|