|
12 | 12 | from pynamodb.models import Model
|
13 | 13 | from pynamodb.attributes import (
|
14 | 14 | BinarySetAttribute, BinaryAttribute, NumberSetAttribute, NumberAttribute,
|
15 |
| - UnicodeAttribute, UnicodeSetAttribute, UTCDateTimeAttribute, BooleanAttribute, |
| 15 | + UnicodeAttribute, UnicodeSetAttribute, UTCDateTimeAttribute, BooleanAttribute, LegacyBooleanAttribute, |
16 | 16 | JSONAttribute, DEFAULT_ENCODING, NUMBER, STRING, STRING_SET, NUMBER_SET, BINARY_SET,
|
17 | 17 | BINARY, BOOLEAN)
|
18 | 18 |
|
@@ -383,6 +383,46 @@ def test_unicode_set_attribute(self):
|
383 | 383 | self.assertEqual(attr.default, set([six.u('foo'), six.u('bar')]))
|
384 | 384 |
|
385 | 385 |
|
| 386 | +class LegacyBooleanAttributeTestCase(TestCase): |
| 387 | + def test_legacy_boolean_attribute_can_read_future_boolean_attributes(self): |
| 388 | + """ |
| 389 | + LegacyBooleanAttribute.deserialize |
| 390 | + :return: |
| 391 | + """ |
| 392 | + attr = LegacyBooleanAttribute() |
| 393 | + self.assertEqual(attr.deserialize('1'), True) |
| 394 | + self.assertEqual(attr.deserialize('0'), False) |
| 395 | + self.assertEqual(attr.deserialize(json.dumps(True)), True) |
| 396 | + self.assertEqual(attr.deserialize(json.dumps(False)), False) |
| 397 | + |
| 398 | + def test_legacy_boolean_attribute_get_value_can_read_both(self): |
| 399 | + """ |
| 400 | + LegacyBooleanAttribute.get_value |
| 401 | + :return: |
| 402 | + """ |
| 403 | + attr = LegacyBooleanAttribute() |
| 404 | + self.assertEqual(attr.get_value({'N': '1'}), '1') |
| 405 | + self.assertEqual(attr.get_value({'N': '0'}), '0') |
| 406 | + self.assertEqual(attr.get_value({'BOOL': True}), json.dumps(True)) |
| 407 | + self.assertEqual(attr.get_value({'BOOL': False}), json.dumps(False)) |
| 408 | + |
| 409 | + def test_legacy_boolean_attribute_get_value_and_deserialize_work_together(self): |
| 410 | + attr = LegacyBooleanAttribute() |
| 411 | + self.assertEqual(attr.deserialize(attr.get_value({'N': '1'})), True) |
| 412 | + self.assertEqual(attr.deserialize(attr.get_value({'N': '0'})), False) |
| 413 | + self.assertEqual(attr.deserialize(attr.get_value({'BOOL': True})), True) |
| 414 | + self.assertEqual(attr.deserialize(attr.get_value({'BOOL': False})), False) |
| 415 | + |
| 416 | + def test_legacy_boolean_attribute_serialize(self): |
| 417 | + """ |
| 418 | + LegacyBooleanAttribute.serialize |
| 419 | + """ |
| 420 | + attr = LegacyBooleanAttribute() |
| 421 | + self.assertEqual(attr.serialize(True), '1') |
| 422 | + self.assertEqual(attr.serialize(False), '0') |
| 423 | + self.assertEqual(attr.serialize(None), None) |
| 424 | + |
| 425 | + |
386 | 426 | class BooleanAttributeTestCase(TestCase):
|
387 | 427 | """
|
388 | 428 | Tests boolean attributes
|
|
0 commit comments