@graphql-tools/mock
Classes
Interfaces
Type Aliases
- AllNodesFn
- GetArgs
- IMockFn
- IMocks
- IScalarMock
- ITypeMock
- KeyTypeConstraints
- Ref
- RelayPageInfo
- RelayPaginationParams
- RelayStylePaginationMockOptions
- SetArgs
- TypePolicy
Variables
Functions
- addMocksToSchema
- assertIsRef
- createMockStore
- deepResolveMockList
- isMockList
- isRecord
- isRef
- mockServer
- relayStylePaginationMock
Type Aliases
AllNodesFn
Ƭ AllNodesFn<TContext
, TArgs
>: (parent
: Ref
, args
: TArgs
, context
: TContext
, info
: GraphQLResolveInfo
) => Ref
[]
Type parameters
Name | Type |
---|---|
TContext | TContext |
TArgs | extends RelayPaginationParams |
Type declaration
▸ (parent
, args
, context
, info
): Ref
[]
Parameters
Name | Type |
---|---|
parent | Ref |
args | TArgs |
context | TContext |
info | GraphQLResolveInfo |
Returns
Ref
[]
Defined in
packages/mock/src/pagination.ts:6
GetArgs
Ƭ GetArgs<KeyT
>: Object
Type parameters
Name | Type |
---|---|
KeyT | extends KeyTypeConstraints = string |
Type declaration
Name | Type | Description |
---|---|---|
defaultValue? | unknown | { [fieldName: string] : any ; } | If no value found, insert the defaultValue . |
fieldArgs? | string | { [argName: string] : any ; } | Optional arguments when querying the field. Querying the field with the same arguments will return the same value. Deep equality is checked. ts store.get('User', 1, 'friend', { id: 2 }) === store.get('User', 1, 'friend', { id: 2 }) store.get('User', 1, 'friend', { id: 2 }) !== store.get('User', 1, 'friend') Args can be a record, just like args argument of field resolver or an arbitrary string. |
fieldName? | string | - |
key? | KeyT | - |
typeName | string | - |
Defined in
IMockFn
Ƭ IMockFn: () => unknown
Type declaration
▸ (): unknown
Returns
unknown
Defined in
IMocks
Ƭ IMocks<TResolvers
>: { [TTypeName in keyof TResolvers]?: { [TFieldName in keyof TResolvers[TTypeName]]: TResolvers[TTypeName][TFieldName] extends Function ? Function : TResolvers[TTypeName][TFieldName] } } & { [typeOrScalarName: string]
: IScalarMock
| ITypeMock
; }
Type parameters
Name | Type |
---|---|
TResolvers | IResolvers |
Defined in
IScalarMock
Ƭ IScalarMock: unknown
| IMockFn
Defined in
ITypeMock
Ƭ ITypeMock: () => { [fieldName: string]
: unknown
| IMockFn
; } | { [fieldName: string]
: IMockFn
; }
Type declaration
▸ (): { [fieldName: string]
: unknown
| IMockFn
; } | { [fieldName: string]
: IMockFn
; }
Returns
{ [fieldName: string]
: unknown
| IMockFn
; } | { [fieldName: string]
: IMockFn
; }
Defined in
KeyTypeConstraints
Ƭ KeyTypeConstraints: string
| number
Defined in
Ref
Ƭ Ref<KeyT
>: Object
Type parameters
Name | Type |
---|---|
KeyT | extends KeyTypeConstraints = string |
Type declaration
Name | Type |
---|---|
$ref | { key : KeyT ; typeName : string } |
$ref.key | KeyT |
$ref.typeName | string |
Defined in
packages/mock/src/types.ts:216
RelayPageInfo
Ƭ RelayPageInfo: Object
Type declaration
Name | Type |
---|---|
endCursor | string |
hasNextPage | boolean |
hasPreviousPage | boolean |
startCursor | string |
Defined in
packages/mock/src/pagination.ts:77
RelayPaginationParams
Ƭ RelayPaginationParams: Object
Type declaration
Name | Type |
---|---|
after? | string |
before? | string |
first? | number |
last? | number |
Defined in
packages/mock/src/pagination.ts:70
RelayStylePaginationMockOptions
Ƭ RelayStylePaginationMockOptions<TContext
, TArgs
>: Object
Type parameters
Name | Type |
---|---|
TContext | TContext |
TArgs | extends RelayPaginationParams |
Type declaration
Name | Type | Description |
---|---|---|
allNodesFn? | AllNodesFn <TContext , TArgs > | A function that’ll be used to get all the nodes used for pagination. By default, it will use the nodes of the field this pagination is attached to. This option is handy when several paginable fields should share the same base nodes: ts { User: { friends: mockedRelayStylePagination(store), maleFriends: mockedRelayStylePagination(store, { allNodesFn: (userRef) => store .get(userRef, ['friends', 'edges']) .map((e) => store.get(e, 'node')) .filter((userRef) => store.get(userRef, 'sex') === 'male') }) } } |
applyOnNodes? | (nodeRefs : Ref [], args : TArgs ) => Ref [] | - |
cursorFn? | (nodeRef : Ref ) => string | - |
Defined in
packages/mock/src/pagination.ts:13
SetArgs
Ƭ SetArgs<KeyT
>: Object
Type parameters
Name | Type |
---|---|
KeyT | extends KeyTypeConstraints = string |
Type declaration
Name | Type | Description |
---|---|---|
fieldArgs? | string | { [argName: string] : any ; } | Optional arguments when querying the field. See GetArgs#fieldArgs |
fieldName? | string | - |
key | KeyT | - |
noOverride? | boolean | If the value for this field is already set, it won’t be overridden. Propagates down do nested set . |
typeName | string | - |
value? | unknown | { [fieldName: string] : any ; } | - |
Defined in
TypePolicy
Ƭ TypePolicy: Object
Type declaration
Name | Type | Description |
---|---|---|
keyFieldName? | string | false | The name of the field that should be used as store key . If false , no field will be used and id or _id will be used, otherwise we’ll generate a random string as key. |
Defined in
Variables
defaultMocks
• Const
defaultMocks: Object
Type declaration
Name | Type |
---|---|
Boolean | () => boolean |
Float | () => number |
ID | () => string |
Int | () => number |
String | () => string |
Defined in
packages/mock/src/MockStore.ts:33
Functions
addMocksToSchema
▸ addMocksToSchema<TResolvers
>(«destructured»
): GraphQLSchema
Given a schema
and a MockStore
, returns an executable schema that
will use the provided MockStore
to execute queries.
const schema = buildSchema(`
type User {
id: ID!
name: String!
}
type Query {
me: User!
}
`)
const store = createMockStore({ schema });
const mockedSchema = addMocksToSchema({ schema, store });
If a resolvers
parameter is passed, the query execution will use
the provided resolvers
if, one exists, instead of the default mock
resolver.
const schema = buildSchema(`
type User {
id: ID!
name: String!
}
type Query {
me: User!
}
type Mutation {
setMyName(newName: String!): User!
}
`)
const store = createMockStore({ schema });
const mockedSchema = addMocksToSchema({
schema,
store,
resolvers: {
Mutation: {
setMyName: (_, { newName }) => {
const ref = store.get('Query', 'ROOT', 'viewer');
store.set(ref, 'name', newName);
return ref;
}
}
}
});
Query
and Mutation
type will use key
'ROOT'
.
Type parameters
Name | Type |
---|---|
TResolvers | IResolvers |
Parameters
Name | Type |
---|---|
«destructured» | IMockOptions <TResolvers > |
Returns
GraphQLSchema
Defined in
packages/mock/src/addMocksToSchema.ts:92
assertIsRef
▸ assertIsRef<KeyT
>(maybeRef
, message?
): asserts maybeRef is Ref<KeyT>
Type parameters
Name | Type |
---|---|
KeyT | extends KeyTypeConstraints = string |
Parameters
Name | Type |
---|---|
maybeRef | unknown |
message? | string |
Returns
asserts maybeRef is Ref<KeyT>
Defined in
packages/mock/src/types.ts:229
createMockStore
▸ createMockStore(options
): IMockStore
Will create MockStore
for the given schema
.
A MockStore
will generate mock values for the given schem when queried.
It will stores generated mocks, so that, provided with same arguments the returned values will be the same.
Its API also allows to modify the stored values.
Basic example:
store.get('User', 1, 'name');
// > "Hello World"
store.set('User', 1, 'name', 'Alexandre');
store.get('User', 1, 'name');
// > "Alexandre"
The storage key will correspond to the “key field”
of the type. Field with name id
or _id
will be
by default considered as the key field for the type.
However, use typePolicies
to precise the field to use
as key.
Parameters
Name | Type | Description |
---|---|---|
options | Object | - |
options.mocks? | IMocks | The mocks functions to use. |
options.schema | GraphQLSchema | The schema to based mocks on. |
options.typePolicies? | Object | - |
Returns
Defined in
packages/mock/src/MockStore.ts:702
deepResolveMockList
▸ deepResolveMockList(mockList
): unknown
[]
Parameters
Name | Type |
---|---|
mockList | MockList |
Returns
unknown
[]
Defined in
packages/mock/src/MockList.ts:72
isMockList
▸ isMockList(obj
): obj is MockList
Parameters
Name | Type |
---|---|
obj | any |
Returns
obj is MockList
Defined in
packages/mock/src/MockList.ts:4
isRecord
▸ isRecord(obj
): obj is Object
Parameters
Name | Type |
---|---|
obj | unknown |
Returns
obj is Object
Defined in
packages/mock/src/types.ts:238
isRef
▸ isRef<KeyT
>(maybeRef
): maybeRef is Ref<KeyT>
Type parameters
Name | Type |
---|---|
KeyT | extends KeyTypeConstraints = string |
Parameters
Name | Type |
---|---|
maybeRef | unknown |
Returns
maybeRef is Ref<KeyT>
Defined in
packages/mock/src/types.ts:223
mockServer
▸ mockServer<TResolvers
>(schema
, mocks
, preserveResolvers?
): IMockServer
A convenience wrapper on top of addMocksToSchema. It adds your mock resolvers
to your schema and returns a client that will correctly execute your query with
variables. Note: when executing queries from the returned server, context and
root will both equal {}
.
Type parameters
Name |
---|
TResolvers |
Parameters
Name | Type | Default value | Description |
---|---|---|---|
schema | TypeSource | undefined | The schema to which to add mocks. This can also be a set of type definitions instead. |
mocks | IMocks <TResolvers > | undefined | The mocks to add to the schema. |
preserveResolvers | boolean | false | Set to true to prevent existing resolvers from being overwritten to provide mock data. This can be used to mock some parts of the server and not others. |
Returns
Defined in
packages/mock/src/mockServer.ts:19
relayStylePaginationMock
▸ relayStylePaginationMock<TContext
, TArgs
>(store
, «destructured»?
): IFieldResolver
<Ref
, TContext
, TArgs
, any
>
Produces a resolver that’ll mock a Relay-style cursor pagination.
const schemaWithMocks = addMocksToSchema({
schema,
resolvers: (store) => ({
User: {
friends: relayStylePaginationMock(store),
}
}),
})
Type parameters
Name | Type |
---|---|
TContext | TContext |
TArgs | extends RelayPaginationParams = RelayPaginationParams |
Parameters
Name | Type | Description |
---|---|---|
store | IMockStore | the MockStore |
«destructured» | RelayStylePaginationMockOptions <TContext , TArgs > | - |
Returns
IFieldResolver
<Ref
, TContext
, TArgs
, any
>