def test_set_with_json_object(self): self._container.container = {Container(), Container(), Container()} actual = dumpd(self._container) self.assertIsInstance(actual[Container.CONTAINER_FIELD_NAME], list) expected = [dumpd(item) for item in self._container.container] self.assertListEqual(expected, actual[Container.CONTAINER_FIELD_NAME])
def test_dict_with_not_serializable_object(self): self._container.container = { "key1": NotSerializableObject(), "key2": NotSerializableObject() } with self.assertRaises(TypeError): dumpd(self._container)
def test_dict_with_json_object_without_fields(self): self._container.container = { "key1": JSONObjectWithoutFields(), "key2": JSONObjectWithoutFields() } with self.assertRaises(ConfigurationError): dumpd(self._container)
def test_dict_with_json_object(self): self._container.container = { "key1": Container(), "key2": Container() } actual = dumpd(self._container) for key, value in actual[Container.CONTAINER_FIELD_NAME].items(): self.assertIsInstance(value, dict) expected = { key: dumpd(self._container.container[key]) for key in self._container.container.keys() } self.assertDictEqual(expected, actual[Container.CONTAINER_FIELD_NAME])
def test_list_with_dict(self): self._container.container = [{"key1": "", "key2": None}, {"key1": 1, "key2": 1.123}] actual = dumpd(self._container) self.assertIsInstance(actual[Container.CONTAINER_FIELD_NAME], list) for index, item in enumerate(actual[Container.CONTAINER_FIELD_NAME]): self.assertDictEqual(item, self._container.container[index])
def test_date(self): date = datetime.date.today() self._container.container = date actual = dumpd(self._container) expected = date.strftime(JSONEncoder.DATE_FORMAT) self.assertEqual(expected, actual[Container.CONTAINER_FIELD_NAME])
def test_with_naive_datetime(self): dt = datetime.datetime.now() self._container.container = dt actual = dumpd(self._container) expected = dt.strftime(JSONEncoder.DATETIME_FORMAT) self.assertEqual(expected, actual[Container.CONTAINER_FIELD_NAME])
def _datetime_timezone_helper(self, timezone_name, utc_offset): dt = datetime.datetime.now(tz.gettz(timezone_name)) self._container.container = dt actual = dumpd(self._container) expected = dt.strftime(JSONEncoder.DATETIME_TZ_FORMAT) self.assertEqual(expected, actual[Container.CONTAINER_FIELD_NAME]) self.assertTrue(actual[Container.CONTAINER_FIELD_NAME].endswith(utc_offset))
def test_list_with_set(self): self._container.container = [set([]), {1, 2, 3}] actual = dumpd(self._container) self.assertIsInstance(actual[Container.CONTAINER_FIELD_NAME], list) expected = [list(item) for item in self._container.container] self.assertListEqual(expected, actual[Container.CONTAINER_FIELD_NAME])
def test_tuple_with_bool(self): self._container.container = (False, False, False) actual = dumpd(self._container) self.assertIsInstance(actual[Container.CONTAINER_FIELD_NAME], list) expected = list(self._container.container) self.assertListEqual(expected, actual[Container.CONTAINER_FIELD_NAME])
def test_inheritance(self): self._container.container = ExtendedCar() actual = dumpd(self._container) self.assertIsInstance(actual[Container.CONTAINER_FIELD_NAME], dict) self.assertIn(ExtendedCar.FIELD_MAX_SPEED_NAME, actual[Container.CONTAINER_FIELD_NAME].keys()) self.assertIn(ExtendedCar.FIELD_MODEL_NAME_NAME, actual[Container.CONTAINER_FIELD_NAME].keys()) self.assertIn(ExtendedCar.FIELD_HORSEPOWER_NAME, actual[Container.CONTAINER_FIELD_NAME].keys())
def test_set_with_float(self): self._container.container = {1.1, 2.1337, 3.42, 12.9999} actual = dumpd(self._container) self.assertIsInstance(actual[Container.CONTAINER_FIELD_NAME], list) expected = list(self._container.container) self.assertListEqual(expected, actual[Container.CONTAINER_FIELD_NAME])
def test_set_with_str(self): self._container.container = {"some string", "string", "another string", "ayyyyyy"} actual = dumpd(self._container) self.assertIsInstance(actual[Container.CONTAINER_FIELD_NAME], list) expected = list(self._container.container) self.assertListEqual(expected, actual[Container.CONTAINER_FIELD_NAME])
def test_empty_set(self): self._container.container = set([]) actual = dumpd(self._container) self.assertIsInstance(actual[Container.CONTAINER_FIELD_NAME], list) expected = list(self._container.container) self.assertListEqual(expected, actual[Container.CONTAINER_FIELD_NAME])
def test_tuple_with_float(self): self._container.container = (1.123, 2.123, 3.1337) actual = dumpd(self._container) self.assertIsInstance(actual[Container.CONTAINER_FIELD_NAME], list) expected = list(self._container.container) self.assertListEqual(expected, actual[Container.CONTAINER_FIELD_NAME])
def test_set_with_date(self): self._container.container = {datetime.date.today()} actual = dumpd(self._container) self.assertIsInstance(actual[Container.CONTAINER_FIELD_NAME], list) expected = [item.strftime(JSONEncoder.DATE_FORMAT) for item in self._container.container] self.assertListEqual(expected, actual[Container.CONTAINER_FIELD_NAME])
def test_tuple_with_naive_datetime(self): self._container.container = [datetime.datetime.now(), datetime.datetime.now() - datetime.timedelta(hours=3)] actual = dumpd(self._container) self.assertIsInstance(actual[Container.CONTAINER_FIELD_NAME], list) expected = [item.strftime(JSONEncoder.DATETIME_FORMAT) for item in self._container.container] self.assertListEqual(expected, actual[Container.CONTAINER_FIELD_NAME])
def test_set_with_int(self): self._container.container = {1, 2, 3, 4, 5, 6} actual = dumpd(self._container) self.assertIsInstance(actual[Container.CONTAINER_FIELD_NAME], list) expected = list(self._container.container) self.assertListEqual(expected, actual[Container.CONTAINER_FIELD_NAME])
def test_tuple_with_set(self): self._container.container = ( set([]), {1, 2, 3, 4, 5}, {Container(), Container(), Container()}, {"some string", "another string"} ) actual = dumpd(self._container) self.assertIsInstance(actual[Container.CONTAINER_FIELD_NAME], list) expected = [list(item) for item in self._container.container] for lst in expected: for i, item in enumerate(lst): if isinstance(item, Container): lst[i] = dumpd(lst[i]) self.assertListEqual(expected, actual[Container.CONTAINER_FIELD_NAME])
def _datetime_timezone_iterable_helper(self, utc_offset): actual = dumpd(self._container) self.assertIsInstance(actual[Container.CONTAINER_FIELD_NAME], list) expected = [item.strftime(JSONEncoder.DATETIME_TZ_FORMAT) for item in self._container.container] self.assertListEqual(expected, actual[Container.CONTAINER_FIELD_NAME]) for item in actual[Container.CONTAINER_FIELD_NAME]: self.assertTrue(item.endswith(utc_offset))
def test_dict_with_bool(self): self._container.container = { "key1": True } actual = dumpd(self._container) for key, value in actual[Container.CONTAINER_FIELD_NAME].items(): self.assertIsInstance(value, bool) self.assertDictEqual(self._container.container, actual[Container.CONTAINER_FIELD_NAME])
def test_dict_with_list(self): self._container.container = { "key1": [], "key2": ["some string", "another string"] } actual = dumpd(self._container) for key, value in actual[Container.CONTAINER_FIELD_NAME].items(): self.assertIsInstance(value, list) self.assertDictEqual(self._container.container, actual[Container.CONTAINER_FIELD_NAME])
def test_dict_with_float(self): self._container.container = { "key1": 1.1337, "key2": 42.4444 } actual = dumpd(self._container) for key, value in actual[Container.CONTAINER_FIELD_NAME].items(): self.assertIsInstance(value, float) self.assertDictEqual(self._container.container, actual[Container.CONTAINER_FIELD_NAME])
def test_dict_with_none(self): self._container.container = { "key1": None, "key2": None } actual = dumpd(self._container) for key, value in actual[Container.CONTAINER_FIELD_NAME].items(): self.assertEqual(value, None) self.assertDictEqual(self._container.container, actual[Container.CONTAINER_FIELD_NAME])
def test_list_with_list(self): self._container.container = [ [], [1, 2, 3], [1.111, 2.12356], ["some string"], [None, None, None], [Container(), Container()], ] actual = dumpd(self._container) self.assertIsInstance(actual[Container.CONTAINER_FIELD_NAME], list) expected = [item for item in self._container.container] for lst in expected: for i, item in enumerate(lst): if isinstance(item, Container): lst[i] = dumpd(lst[i]) self.assertListEqual(expected, actual[Container.CONTAINER_FIELD_NAME])
def test_tuple_with_list(self): self._container.container = ( [], [1, 2, 3, 4], ["some string", "another string", "and yet another string"] ) actual = dumpd(self._container) self.assertIsInstance(actual[Container.CONTAINER_FIELD_NAME], list) expected = list(self._container.container) self.assertListEqual(expected, actual[Container.CONTAINER_FIELD_NAME])
def test_tuple_with_tuple(self): self._container.container = ( tuple([]), tuple([1, 2, 3, 4]), tuple(["some string", "another string"]) ) actual = dumpd(self._container) self.assertIsInstance(actual[Container.CONTAINER_FIELD_NAME], list) expected = [list(item) for item in self._container.container] self.assertListEqual(expected, actual[Container.CONTAINER_FIELD_NAME])
def test_tuple_with_dict(self): self._container.container = ( {}, {"key1": "some string", "key2": "another string"}, {"key1": 1, "key2": 2, "key3": 3} ) actual = dumpd(self._container) self.assertIsInstance(actual[Container.CONTAINER_FIELD_NAME], list) expected = list(self._container.container) self.assertListEqual(expected, actual[Container.CONTAINER_FIELD_NAME])
def test_set_with_tuple(self): self._container.container = { (), (1, 2, 3), ("a string", "str", "some string", "another string") } actual = dumpd(self._container) self.assertIsInstance(actual[Container.CONTAINER_FIELD_NAME], list) expected = [list(item) for item in self._container.container] self.assertListEqual(expected, actual[Container.CONTAINER_FIELD_NAME])
def test_dict_with_set(self): self._container.container = { "key1": set([]), "key2": {1.1337, 42.0} } actual = dumpd(self._container) for key, value in actual[Container.CONTAINER_FIELD_NAME].items(): self.assertIsInstance(value, list) expected = {key: list(self._container.container[key]) for key in self._container.container.keys()} self.assertDictEqual(expected, actual[Container.CONTAINER_FIELD_NAME])