13
13
aws_timestamp ,
14
14
make_id ,
15
15
)
16
+ from aws_lambda_powertools .utilities .typing import LambdaContext
16
17
17
18
18
19
def load_event (file_name : str ) -> dict :
@@ -22,7 +23,8 @@ def load_event(file_name: str) -> dict:
22
23
23
24
24
25
def test_direct_resolver ():
25
- _event = load_event ("appSyncDirectResolver.json" )
26
+ # Check whether we can handle an example appsync direct resolver
27
+ mock_event = load_event ("appSyncDirectResolver.json" )
26
28
27
29
app = AppSyncResolver ()
28
30
@@ -34,12 +36,13 @@ def create_something(context, id: str): # noqa AA03 VNE003
34
36
def handler (event , context ):
35
37
return app .resolve (event , context )
36
38
37
- result = handler (_event , {})
39
+ result = handler (mock_event , {})
38
40
assert result == "my identifier"
39
41
40
42
41
43
def test_amplify_resolver ():
42
- _event = load_event ("appSyncResolverEvent.json" )
44
+ # Check whether we can handle an example appsync resolver
45
+ mock_event = load_event ("appSyncResolverEvent.json" )
43
46
44
47
app = AppSyncResolver ()
45
48
@@ -53,30 +56,73 @@ def get_location(event: AppSyncResolverEvent, page: int, size: int, name: str):
53
56
def handler (event , context ):
54
57
return app .resolve (event , context )
55
58
56
- result = handler (_event , {})
59
+ result = handler (mock_event , {})
57
60
assert result == "value"
58
61
59
62
60
63
def test_resolver_no_params ():
64
+ # GIVEN
61
65
app = AppSyncResolver ()
62
66
63
67
@app .resolver (type_name = "Query" , field_name = "noParams" )
64
68
def no_params ():
65
69
return "no_params has no params"
66
70
67
71
event = {"typeName" : "Query" , "fieldName" : "noParams" , "arguments" : {}}
68
- result = app .resolve (event , None )
69
72
73
+ # WHEN
74
+ result = app .resolve (event , LambdaContext ())
75
+
76
+ # THEN
70
77
assert result == "no_params has no params"
71
78
72
79
80
+ def test_resolver_include_event ():
81
+ # GIVEN
82
+ app = AppSyncResolver ()
83
+
84
+ mock_event = {"typeName" : "Query" , "fieldName" : "field" , "arguments" : {}}
85
+
86
+ @app .resolver (field_name = "field" , include_event = True )
87
+ def get_value (event : AppSyncResolverEvent ):
88
+ return event
89
+
90
+ # WHEN
91
+ result = app .resolve (mock_event , LambdaContext ())
92
+
93
+ # THEN
94
+ assert result ._data == mock_event
95
+ assert isinstance (result , AppSyncResolverEvent )
96
+
97
+
98
+ def test_resolver_include_context ():
99
+ # GIVEN
100
+ app = AppSyncResolver ()
101
+
102
+ mock_event = {"typeName" : "Query" , "fieldName" : "field" , "arguments" : {}}
103
+
104
+ @app .resolver (field_name = "field" , include_context = True )
105
+ def get_value (context : LambdaContext ):
106
+ return context
107
+
108
+ # WHEN
109
+ mock_context = LambdaContext ()
110
+ result = app .resolve (mock_event , mock_context )
111
+
112
+ # THEN
113
+ assert result == mock_context
114
+
115
+
73
116
def test_resolver_value_error ():
117
+ # GIVEN no defined field resolver
74
118
app = AppSyncResolver ()
75
119
120
+ # WHEN
76
121
with pytest .raises (ValueError ) as exp :
77
122
event = {"typeName" : "type" , "fieldName" : "field" , "arguments" : {}}
78
- app .resolve (event , None )
123
+ app .resolve (event , LambdaContext () )
79
124
125
+ # THEN
80
126
assert exp .value .args [0 ] == "No resolver found for 'type.field'"
81
127
82
128
0 commit comments