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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
# type: ignore
import textwrap
import strawberry
def test_field_shareable_printed_correctly():
@strawberry.interface
class SomeInterface:
id: strawberry.ID
@strawberry.federation.type(keys=["upc"], extend=True, shareable=True)
class Product(SomeInterface):
upc: str = strawberry.federation.field(external=True, shareable=True)
@strawberry.federation.type
class Query:
@strawberry.field
def top_products(self, first: int) -> list[Product]: # pragma: no cover
return []
schema = strawberry.federation.Schema(query=Query)
expected = """
schema @link(url: "https://specs.apollo.dev/federation/v2.11", import: ["@external", "@key", "@shareable"]) {
query: Query
}
extend type Product implements SomeInterface @key(fields: "upc") @shareable {
id: ID!
upc: String! @external @shareable
}
type Query {
_entities(representations: [_Any!]!): [_Entity]!
_service: _Service!
topProducts(first: Int!): [Product!]!
}
interface SomeInterface {
id: ID!
}
scalar _Any
union _Entity = Product
type _Service {
sdl: String!
}
"""
assert schema.as_str() == textwrap.dedent(expected).strip()
|