File: test_process_result.py

package info (click to toggle)
strawberry-graphql 0.306.0-1
  • links: PTS, VCS
  • area: main
  • in suites: sid
  • size: 18,176 kB
  • sloc: javascript: 178,052; python: 65,643; sh: 33; makefile: 25
file content (36 lines) | stat: -rw-r--r-- 911 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from __future__ import annotations

from typing import Literal

import pytest

from strawberry.http import GraphQLHTTPResponse
from strawberry.types import ExecutionResult
from tests.views.schema import schema

from .clients.base import HttpClient


def process_result(result: ExecutionResult) -> GraphQLHTTPResponse:
    if result.data:
        return {
            "data": {key.upper(): result for key, result in result.data.items()},
        }

    return {}


@pytest.fixture
def http_client(http_client_class) -> HttpClient:
    return http_client_class(schema, result_override=process_result)


@pytest.mark.parametrize("method", ["get", "post"])
async def test_custom_process_result(
    method: Literal["get", "post"], http_client: HttpClient
):
    response = await http_client.query(
        method=method,
        query="{ hello }",
    )
    assert response.json["data"] == {"HELLO": "Hello world"}