diff options
| author | John L. Villalovos <john.l.villalovos@intel.com> | 2015-05-11 10:00:20 -0700 |
|---|---|---|
| committer | John L. Villalovos <john.l.villalovos@intel.com> | 2015-05-28 10:28:57 -0700 |
| commit | 30b01689f4bc4bede543024e2c44a745be822049 (patch) | |
| tree | f7ac09b7468c9720db957c9520ac7f1f6ec614b5 /ironicclient/tests/unit/v1/test_resource_fields.py | |
| parent | 2ce7fd2e58a35533a1f277c05703bdd718010a3f (diff) | |
| download | python-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.py | 81 |
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']) |
