22
33from unittest .mock import MagicMock , patch
44
5- from apps .nest .api .internal .nodes .badge import BadgeNode
65from apps .nest .api .internal .queries .badge import BadgeQueries
76from apps .nest .models .badge import Badge
87
@@ -12,27 +11,47 @@ class TestBadgeQueries:
1211
1312 def test_has_strawberry_definition (self ):
1413 """BadgeQueries should be a valid Strawberry type with 'badges' field."""
15- assert hasattr (BadgeQueries , "__strawberry_definition__" )
16- field_names = [f .name for f in BadgeQueries .__strawberry_definition__ .fields ]
14+ from strawberry import Schema
15+
16+ schema = Schema (query = BadgeQueries )
17+ res = schema .execute_sync ('{ __type(name:"BadgeQueries"){ fields { name } } }' )
18+ assert res .errors is None
19+ field_names = [f ["name" ] for f in res .data ["__type" ]["fields" ]]
1720 assert "badges" in field_names
1821
1922 def test_badges_field_configuration (self ):
2023 """'badges' field should return a list of BadgeNode."""
21- field = next (
22- f for f in BadgeQueries .__strawberry_definition__ .fields if f .name == "badges"
24+ from strawberry import Schema
25+
26+ schema = Schema (query = BadgeQueries )
27+ res = schema .execute_sync (
28+ """
29+ {
30+ __type(name: "BadgeQueries") {
31+ fields {
32+ name type { kind ofType { kind ofType { kind ofType { name } } } }
33+ }
34+ }
35+ }
36+ """
2337 )
24- assert field .type .of_type is BadgeNode or field .type is BadgeNode
25-
26- @patch ("apps.nest.models.badge.Badge.objects.all" )
27- def test_badges_resolution (self , mock_all ):
38+ assert res .errors is None
39+ badges_field = next (f for f in res .data ["__type" ]["fields" ] if f ["name" ] == "badges" )
40+ assert badges_field ["type" ]["kind" ] == "NON_NULL"
41+ assert badges_field ["type" ]["ofType" ]["kind" ] == "LIST"
42+ assert badges_field ["type" ]["ofType" ]["ofType" ]["kind" ] == "NON_NULL"
43+ assert badges_field ["type" ]["ofType" ]["ofType" ]["ofType" ]["name" ] == "BadgeNode"
44+
45+ @patch ("apps.nest.api.internal.queries.badge.Badge.objects" )
46+ def test_badges_resolution (self , mock_manager ):
2847 """Resolver should return badges ordered by weight and name."""
2948 mock_badge = MagicMock (spec = Badge )
3049 mock_qs = MagicMock ()
50+ mock_manager .all .return_value = mock_qs
3151 mock_qs .order_by .return_value = [mock_badge ]
32- mock_all .return_value = mock_qs
3352
3453 result = BadgeQueries ().badges ()
3554
36- assert result == [mock_badge ]
37- mock_all . assert_called_once ()
55+ assert list ( result ) == [mock_badge ]
56+ mock_manager . all . assert_called_once_with ()
3857 mock_qs .order_by .assert_called_once_with ("weight" , "name" )
0 commit comments