summaryrefslogtreecommitdiff
path: root/ironicclient/tests/unit/v1/test_resource_fields.py
diff options
context:
space:
mode:
authorJohn L. Villalovos <john.l.villalovos@intel.com>2015-05-11 10:00:20 -0700
committerJohn L. Villalovos <john.l.villalovos@intel.com>2015-05-28 10:28:57 -0700
commit30b01689f4bc4bede543024e2c44a745be822049 (patch)
treef7ac09b7468c9720db957c9520ac7f1f6ec614b5 /ironicclient/tests/unit/v1/test_resource_fields.py
parent2ce7fd2e58a35533a1f277c05703bdd718010a3f (diff)
downloadpython-ironicclient-30b01689f4bc4bede543024e2c44a745be822049.tar.gz
Refactor resource_fields.py
Refactor the resource_fields.py file to remove some (but not all) of the duplication that is occurring. * Created a class Resource to contain the fields and label values * Added test cases for the new Resource class * Use the new Resource class to hold data for Chassis, Node, and Ports. * Have logic to support a 'sort_fields' and 'sort_labels' property which removes fields/labels which can not be used for sorting. Change-Id: I846517a3714b1a86ef7ed7f52e911376e1915bb5
Diffstat (limited to 'ironicclient/tests/unit/v1/test_resource_fields.py')
-rw-r--r--ironicclient/tests/unit/v1/test_resource_fields.py81
1 files changed, 50 insertions, 31 deletions
diff --git a/ironicclient/tests/unit/v1/test_resource_fields.py b/ironicclient/tests/unit/v1/test_resource_fields.py
index a826b8c..4c8d259 100644
--- a/ironicclient/tests/unit/v1/test_resource_fields.py
+++ b/ironicclient/tests/unit/v1/test_resource_fields.py
@@ -17,34 +17,53 @@ import testtools
from ironicclient.v1 import resource_fields
-class ResourceFieldsTest(testtools.TestCase):
-
- def test_chassis_fields(self):
- self.assertEqual(
- len(resource_fields.CHASSIS_FIELDS),
- len(resource_fields.CHASSIS_FIELD_LABELS))
-
- def test_chassis_list_fields(self):
- self.assertEqual(
- len(resource_fields.CHASSIS_LIST_FIELDS),
- len(resource_fields.CHASSIS_LIST_FIELD_LABELS))
-
- def test_node_fields(self):
- self.assertEqual(
- len(resource_fields.NODE_FIELDS),
- len(resource_fields.NODE_FIELD_LABELS))
-
- def test_node_list_fields(self):
- self.assertEqual(
- len(resource_fields.NODE_LIST_FIELDS),
- len(resource_fields.NODE_LIST_FIELD_LABELS))
-
- def test_port_fields(self):
- self.assertEqual(
- len(resource_fields.PORT_FIELDS),
- len(resource_fields.PORT_FIELD_LABELS))
-
- def test_port_list_fields(self):
- self.assertEqual(
- len(resource_fields.PORT_LIST_FIELDS),
- len(resource_fields.PORT_LIST_FIELD_LABELS))
+class ResourceTest(testtools.TestCase):
+ def setUp(self):
+ super(ResourceTest, self).setUp()
+ self._saved_ids = resource_fields.Resource.FIELDS
+ resource_fields.Resource.FIELDS = {
+ 'item1': 'ITEM1',
+ '2nd_item': 'A second item',
+ 'item_3': 'Third item',
+ }
+
+ def tearDown(self):
+ super(ResourceTest, self).tearDown()
+ resource_fields.Resource.FIELDS = self._saved_ids
+
+ def test_fields_single_value(self):
+ # Make sure single value is what we expect
+ foo = resource_fields.Resource(['item1'])
+ self.assertEqual(('item1',), foo.fields)
+ self.assertEqual(('ITEM1',), foo.labels)
+ self.assertEqual(('item1',), foo.sort_fields)
+ self.assertEqual(('ITEM1',), foo.sort_labels)
+
+ def test_fields_multiple_value_order(self):
+ # Make sure order is maintained
+ foo = resource_fields.Resource(['2nd_item', 'item1'])
+ self.assertEqual(('2nd_item', 'item1'), foo.fields)
+ self.assertEqual(('A second item', 'ITEM1'), foo.labels)
+ self.assertEqual(('2nd_item', 'item1'), foo.sort_fields)
+ self.assertEqual(('A second item', 'ITEM1'), foo.sort_labels)
+
+ def test_sort_excluded(self):
+ # Test excluding of fields for sort purposes
+ foo = resource_fields.Resource(['item_3', 'item1', '2nd_item'],
+ sort_excluded=['item1'])
+ self.assertEqual(('item_3', '2nd_item'), foo.sort_fields)
+ self.assertEqual(('Third item', 'A second item'), foo.sort_labels)
+
+ def test_sort_excluded_unknown(self):
+ # Test sort_excluded value not in the field_ids
+ self.assertRaises(
+ ValueError,
+ resource_fields.Resource,
+ ['item_3', 'item1', '2nd_item'],
+ sort_excluded=['item1', 'foo'])
+
+ def test_unknown_field_id(self):
+ self.assertRaises(
+ KeyError,
+ resource_fields.Resource,
+ ['item1', 'unknown_id'])