Skip to content

Commit b1f711f

Browse files
author
Tom McCarthy
committed
docs: improve "testing your code" section for graphql event handler
1 parent 168ec48 commit b1f711f

File tree

1 file changed

+67
-12
lines changed

1 file changed

+67
-12
lines changed

docs/core/event_handler/appsync.md

Lines changed: 67 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -775,27 +775,82 @@ You can test your resolvers by passing a mocked or actual AppSync Lambda event t
775775

776776
You can use either `app.resolve(event, context)` or simply `app(event, context)`.
777777

778-
Here's an example from our internal functional test.
778+
Here's an example of how you can test your synchronous resolvers:
779779

780-
=== "test_direct_resolver.py"
780+
=== "test_resolver.py"
781781

782782
```python
783+
import pytest
784+
from src.index import app # import the instance of AppSyncResolver from your code
785+
783786
def test_direct_resolver():
784-
# Check whether we can handle an example appsync direct resolver
785-
# load_event primarily deserialize the JSON event into a dict
786-
mock_event = load_event("appSyncDirectResolver.json")
787+
# Load mock event from a file
788+
json_file = "../../events/appSyncDirectResolver.json"
789+
fh = open(file)
790+
mock_event = json.load(fh)
791+
792+
# Call the implicit handler
793+
result = app(mock_event, {})
794+
795+
assert result == "created this value"
796+
```
797+
798+
=== "src/index.py"
799+
800+
```python
801+
802+
from aws_lambda_powertools.event_handler import AppSyncResolver
803+
804+
app = AppSyncResolver()
805+
806+
@app.resolver(field_name="createSomething")
807+
def create_something():
808+
return "created this value"
809+
810+
```
811+
812+
=== "appSyncDirectResolver.json"
813+
814+
```json
815+
--8<-- "tests/events/appSyncDirectResolver.json"
816+
```
817+
818+
And an example for testing asynchronous resolvers. Note that this requires the `pytest-asyncio` package:
787819

788-
app = AppSyncResolver()
789820

790-
@app.resolver(field_name="createSomething")
791-
def create_something(id: str):
792-
assert app.lambda_context == {}
793-
return id
821+
=== "test_async_resolver.py"
822+
823+
```python
824+
import pytest
825+
from src.index import app # import the instance of AppSyncResolver from your code
826+
827+
@pytest.mark.asyncio
828+
async def test_direct_resolver():
829+
# Load mock event from a file
830+
json_file = "../../events/appSyncDirectResolver.json"
831+
fh = open(file)
832+
mock_event = json.load(fh)
794833

795834
# Call the implicit handler
796-
result = app(mock_event, {})
835+
result = await app(mock_event, {})
836+
837+
assert result == "created this value"
838+
```
839+
840+
=== "src/index.py"
841+
842+
```python
843+
import asyncio
844+
845+
from aws_lambda_powertools.event_handler import AppSyncResolver
846+
847+
app = AppSyncResolver()
848+
849+
@app.resolver(field_name="createSomething")
850+
async def create_something_async():
851+
await asyncio.sleep(1) # Do async stuff
852+
return "created this value"
797853

798-
assert result == "my identifier"
799854
```
800855

801856
=== "appSyncDirectResolver.json"

0 commit comments

Comments
 (0)