8
8
)
9
9
from tests .functional .utils import load_event
10
10
11
+ DECIMAL_CONTEXT = Context (
12
+ Emin = - 128 ,
13
+ Emax = 126 ,
14
+ prec = 38 ,
15
+ traps = [Clamped , Overflow , Inexact , Rounded , Underflow ],
16
+ )
17
+
11
18
12
19
def test_dynamodb_stream_trigger_event ():
13
- decimal_context = Context (
14
- Emin = - 128 ,
15
- Emax = 126 ,
16
- prec = 38 ,
17
- traps = [Clamped , Overflow , Inexact , Rounded , Underflow ],
18
- )
19
20
20
21
raw_event = load_event ("dynamoStreamEvent.json" )
21
22
parsed_event = DynamoDBStreamEvent (raw_event )
@@ -36,7 +37,7 @@ def test_dynamodb_stream_trigger_event():
36
37
assert dynamodb .approximate_creation_date_time == record_raw ["dynamodb" ]["ApproximateCreationDateTime" ]
37
38
keys = dynamodb .keys
38
39
assert keys is not None
39
- assert keys ["Id" ] == decimal_context .create_decimal (101 )
40
+ assert keys ["Id" ] == DECIMAL_CONTEXT .create_decimal (101 )
40
41
assert dynamodb .new_image .get ("Message" ) == record_raw ["dynamodb" ]["NewImage" ]["Message" ]["S" ]
41
42
assert dynamodb .old_image is None
42
43
assert dynamodb .sequence_number == record_raw ["dynamodb" ]["SequenceNumber" ]
@@ -45,12 +46,6 @@ def test_dynamodb_stream_trigger_event():
45
46
46
47
47
48
def test_dynamodb_stream_record_deserialization_large_int ():
48
- decimal_context = Context (
49
- Emin = - 128 ,
50
- Emax = 126 ,
51
- prec = 38 ,
52
- traps = [Clamped , Overflow , Inexact , Rounded , Underflow ],
53
- )
54
49
data = {
55
50
"Keys" : {"key1" : {"attr1" : "value1" }},
56
51
"NewImage" : {
@@ -61,7 +56,22 @@ def test_dynamodb_stream_record_deserialization_large_int():
61
56
record = StreamRecord (data )
62
57
assert record .new_image == {
63
58
"Name" : "Joe" ,
64
- "Age" : decimal_context .create_decimal ("11011111111111111000000000000000000000" ),
59
+ "Age" : DECIMAL_CONTEXT .create_decimal ("11011111111111111000000000000000000000" ),
60
+ }
61
+
62
+
63
+ def test_dynamodb_stream_record_deserialization_large_int_without_trailing_zeros ():
64
+ data = {
65
+ "Keys" : {"key1" : {"attr1" : "value1" }},
66
+ "NewImage" : {
67
+ "Name" : {"S" : "Joe" },
68
+ "Age" : {"N" : "000000011011111111111112222222222221111111111111111111111" },
69
+ },
70
+ }
71
+ record = StreamRecord (data )
72
+ assert record .new_image == {
73
+ "Name" : "Joe" ,
74
+ "Age" : DECIMAL_CONTEXT .create_decimal ("11011111111111112222222222221111111111" ),
65
75
}
66
76
67
77
0 commit comments