From 7af1c13ac55eeb9b38a9990a62ac8aeda433c026 Mon Sep 17 00:00:00 2001 From: Laurent Luce Date: Fri, 9 Oct 2015 11:29:03 -0400 Subject: [PATCH] Add to_dict method to EntityFormatter. Change-Id: Ie1228e1f50af8c6c31f7772d3393e845cb899f63 Closes-Bug: #1485619 --- barbicanclient/formatter.py | 4 ++ barbicanclient/tests/test_formatter.py | 59 ++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 barbicanclient/tests/test_formatter.py diff --git a/barbicanclient/formatter.py b/barbicanclient/formatter.py index 5cc35f05..2f4e1d09 100644 --- a/barbicanclient/formatter.py +++ b/barbicanclient/formatter.py @@ -48,3 +48,7 @@ class EntityFormatter(object): for name, value in zip(self.columns, data): table.add_row((name, value)) return table.get_string(fields=('Field', 'Value')) + + def to_dict(self): + columns, data = self._get_formatted_entity() + return dict((key, value) for (key, value) in zip(columns, data)) diff --git a/barbicanclient/tests/test_formatter.py b/barbicanclient/tests/test_formatter.py new file mode 100644 index 00000000..7f293679 --- /dev/null +++ b/barbicanclient/tests/test_formatter.py @@ -0,0 +1,59 @@ +import testtools + +from barbicanclient import formatter + + +class EntityFormatter(formatter.EntityFormatter): + + columns = ("Column A", + "Column B", + "Column C") + + def _get_formatted_data(self): + data = (self._attr_a, + self._attr_b, + self._attr_c) + return data + + +class Entity(EntityFormatter): + + def __init__(self, attr_a, attr_b, attr_c): + self._attr_a = attr_a + self._attr_b = attr_b + self._attr_c = attr_c + + +class TestFormatter(testtools.TestCase): + + def test_should_get_list_objects(self): + entity_1 = Entity('test_attr_a_1', 'test_attr_b_1', 'test_attr_c_1') + entity_2 = Entity('test_attr_a_2', 'test_attr_b_2', 'test_attr_c_2') + columns, data = EntityFormatter._list_objects([entity_1, entity_2]) + self.assertEqual(columns, ('Column A', 'Column B', 'Column C')) + self.assertEqual([e for e in data], + [('test_attr_a_1', 'test_attr_b_1', 'test_attr_c_1'), + ('test_attr_a_2', 'test_attr_b_2', 'test_attr_c_2')]) + + def test_should_get_list_objects_empty(self): + columns, data = EntityFormatter._list_objects([]) + self.assertEqual(columns, []) + self.assertEqual([e for e in data], []) + + def test_should_get_str(self): + entity = Entity('test_attr_a_1', 'test_attr_b_1', 'test_attr_c_1') + self.assertEqual(str(entity), + '+----------+---------------+\n' + '| Field | Value |\n' + '+----------+---------------+\n' + '| Column A | test_attr_a_1 |\n' + '| Column B | test_attr_b_1 |\n' + '| Column C | test_attr_c_1 |\n' + '+----------+---------------+') + + def test_should_to_dict(self): + entity = Entity('test_attr_a_1', 'test_attr_b_1', 'test_attr_c_1') + self.assertEqual(entity.to_dict(), + {'Column A': 'test_attr_a_1', + 'Column B': 'test_attr_b_1', + 'Column C': 'test_attr_c_1'})