11/* @flow */
22
33import { graphql } from 'graphql-compose' ;
4- import { getCharacterModels } from '../__mocks__/characterModels' ;
54import { composeWithMongooseDiscriminators } from '../../composeWithMongooseDiscriminators' ;
5+ import { getCharacterModels } from '../__mocks__/characterModels' ;
66
77const { CharacterModel } = getCharacterModels ( 'type' ) ;
88
99const CharacterDTC = composeWithMongooseDiscriminators ( CharacterModel ) ;
10+ const DKeyFieldName = CharacterDTC . getDKey ( ) ;
11+ const DKeyETC = CharacterDTC . getDKeyETC ( ) ;
12+ const DInterfaceTC = CharacterDTC . getDInterface ( ) ;
1013
1114describe ( 'prepareBaseResolvers()' , ( ) => {
1215 describe ( 'setDKeyEnumOnITCArgs()' , ( ) => {
13- const resolversWithFilterAndRecordArgs = [ ] ;
14- const resolversWithFilterArgsOnly = [ ] ;
15- const resolversWithRecordArgsOnly = [ ] ;
16- const resolversWithNoInterestArgs = [ ] ;
17- const interestArgs = [ 'filter' , 'record' ] ;
16+ const resolversWithFilterArgs = [ ] ;
17+ const resolversWithRecordArgs = [ ] ;
18+ const resolversWithRecordsArgs = [ ] ;
19+ const interestArgs = [ 'filter' , 'record' , 'records' ] ;
1820
1921 beforeAll ( ( ) => {
2022 const resolvers = CharacterDTC . getResolvers ( ) ; // map
2123
2224 resolvers . forEach ( resolver => {
23- if ( resolver . hasArg ( interestArgs [ 0 ] ) && resolver . hasArg ( interestArgs [ 1 ] ) ) {
24- resolversWithFilterAndRecordArgs . push ( resolver ) ;
25- } else if ( ! ( resolver . hasArg ( interestArgs [ 0 ] ) && resolver . hasArg ( interestArgs [ 1 ] ) ) ) {
26- resolversWithNoInterestArgs . push ( resolver ) ;
27- } else if ( resolver . hasArg ( interestArgs [ 0 ] ) && ! resolver . hasArg ( interestArgs [ 1 ] ) ) {
28- resolversWithFilterArgsOnly . push ( resolver ) ;
29- } else if ( ! resolver . hasArg ( interestArgs [ 0 ] ) && resolver . hasArg ( interestArgs [ 1 ] ) ) {
30- resolversWithRecordArgsOnly . push ( resolver ) ;
25+ const argNames = resolver . getArgNames ( ) ;
26+
27+ for ( const argName of argNames ) {
28+ if ( argName === interestArgs [ 0 ] ) {
29+ resolversWithFilterArgs . push ( resolver ) ;
30+ }
31+ if ( argName === interestArgs [ 1 ] ) {
32+ resolversWithRecordArgs . push ( resolver ) ;
33+ }
34+ if ( argName === interestArgs [ 2 ] ) {
35+ resolversWithRecordsArgs . push ( resolver ) ;
36+ }
3137 }
3238 } ) ;
3339 } ) ;
3440
35- it ( 'should set type to DKeyEnum on DKey field on filter and record args' , ( ) => {
36- for ( const resolver of resolversWithFilterAndRecordArgs ) {
37- for ( const arg of interestArgs ) {
38- expect ( resolver . getArgTC ( arg ) . getFieldType ( CharacterDTC . getDKey ( ) ) ) . toEqual (
39- CharacterDTC . getDKeyETC ( ) . getType ( )
40- ) ;
41- }
42- }
43- } ) ;
44-
45- it ( 'should set type to DKeyEnum on DKey field only on filter args' , ( ) => {
46- for ( const resolver of resolversWithFilterArgsOnly ) {
41+ it ( 'should set DKey field type to DKeyETC on filter args' , ( ) => {
42+ for ( const resolver of resolversWithFilterArgs ) {
4743 expect ( interestArgs [ 0 ] ) . toEqual ( 'filter' ) ;
48- expect ( resolver . getArgTC ( interestArgs [ 0 ] ) . getFieldType ( CharacterDTC . getDKey ( ) ) ) . toEqual (
49- CharacterDTC . getDKeyETC ( ) . getType ( )
50- ) ;
51- expect ( resolver . getArgTC ( interestArgs [ 1 ] ) . getFieldType ( CharacterDTC . getDKey ( ) ) ) . not . toEqual (
44+ expect ( resolver . getArgTC ( interestArgs [ 0 ] ) . getFieldConfig ( DKeyFieldName ) . type ) . toEqual (
5245 CharacterDTC . getDKeyETC ( ) . getType ( )
5346 ) ;
5447 }
5548 } ) ;
5649
57- it ( 'should set type to DKeyEnum on DKey field only on record args' , ( ) => {
58- for ( const resolver of resolversWithFilterArgsOnly ) {
50+ it ( 'should set DKey field type to DKeyETC on record args' , ( ) => {
51+ for ( const resolver of resolversWithRecordArgs ) {
5952 expect ( interestArgs [ 1 ] ) . toEqual ( 'record' ) ;
60- expect ( resolver . getArgTC ( interestArgs [ 1 ] ) . getFieldType ( CharacterDTC . getDKey ( ) ) ) . toEqual (
61- CharacterDTC . getDKeyETC ( ) . getType ( )
62- ) ;
63- expect ( resolver . getArgTC ( interestArgs [ 0 ] ) . getFieldType ( CharacterDTC . getDKey ( ) ) ) . not . toEqual (
64- CharacterDTC . getDKeyETC ( ) . getType ( )
65- ) ;
53+ if ( resolver . name === 'createOne' ) {
54+ expect ( resolver . getArgTC ( interestArgs [ 1 ] ) . getFieldConfig ( DKeyFieldName ) . type ) . toEqual (
55+ graphql . GraphQLNonNull ( DKeyETC . getType ( ) )
56+ ) ;
57+ } else {
58+ expect ( resolver . getArgTC ( interestArgs [ 1 ] ) . getFieldConfig ( DKeyFieldName ) . type ) . toEqual (
59+ DKeyETC . getType ( )
60+ ) ;
61+ }
6662 }
6763 } ) ;
6864
69- it ( 'should NOT set type to DKeyEnum on DKey as filter and record not found args' , ( ) => {
70- for ( const resolver of resolversWithFilterArgsOnly ) {
71- for ( const arg of interestArgs ) {
72- expect ( resolver . hasArg ( arg ) ) . toBeFalsy ( ) ;
73- }
65+ it ( 'should set DKey field type to DKeyETC on records args' , ( ) => {
66+ for ( const resolver of resolversWithRecordsArgs ) {
67+ expect ( interestArgs [ 2 ] ) . toEqual ( 'records' ) ;
68+ expect ( resolver . getArgTC ( interestArgs [ 2 ] ) . getFieldConfig ( DKeyFieldName ) . type ) . toEqual (
69+ graphql . GraphQLNonNull ( DKeyETC . getType ( ) )
70+ ) ;
7471 }
7572 } ) ;
7673 } ) ;
7774
78- it ( 'should set resolver type to DInterface List, findMany' , ( ) => {
79- expect ( CharacterDTC . getResolver ( 'findMany' ) . getType ( ) ) . toEqual (
80- graphql . GraphQLList ( CharacterDTC . getDInterface ( ) . getType ( ) )
81- ) ;
75+ describe ( 'createOne: Resolver' , ( ) => {
76+ const resolver = CharacterDTC . getResolver ( 'createOne' ) ;
77+ it ( 'should set resolver record field type to DInterface' , ( ) => {
78+ expect ( resolver . getTypeComposer ( ) . getFieldType ( 'record' ) ) . toEqual ( DInterfaceTC . getType ( ) ) ;
79+ } ) ;
8280 } ) ;
8381
84- it ( 'should set resolver type to DInterface List, findByIds' , ( ) => {
85- expect ( CharacterDTC . getResolver ( 'findByIds' ) . getType ( ) ) . toEqual (
86- graphql . GraphQLList ( CharacterDTC . getDInterface ( ) . getType ( ) )
87- ) ;
82+ describe ( 'createMany: Resolver' , ( ) => {
83+ const resolver = CharacterDTC . getResolver ( 'createMany' ) ;
84+ it ( 'should set resolver records field type to NonNull Plural DInterface' , ( ) => {
85+ expect ( resolver . getTypeComposer ( ) . getFieldType ( 'records' ) ) . toEqual (
86+ new graphql . GraphQLNonNull ( graphql . GraphQLList ( DInterfaceTC . getType ( ) ) )
87+ ) ;
88+ } ) ;
89+ } ) ;
90+
91+ describe ( 'findById: Resolver' , ( ) => {
92+ const resolver = CharacterDTC . getResolver ( 'findByIds' ) ;
93+ it ( 'should set resolver type to DInterface List' , ( ) => {
94+ expect ( resolver . getType ( ) ) . toEqual (
95+ graphql . GraphQLList ( CharacterDTC . getDInterface ( ) . getType ( ) )
96+ ) ;
97+ } ) ;
98+ } ) ;
99+
100+ describe ( 'findMany: Resolver' , ( ) => {
101+ it ( 'should set resolver type to DInterface List' , ( ) => {
102+ expect ( CharacterDTC . getResolver ( 'findMany' ) . getType ( ) ) . toEqual (
103+ graphql . GraphQLList ( DInterfaceTC . getType ( ) )
104+ ) ;
105+ } ) ;
88106 } ) ;
89107
90108 it ( 'should set resolver type to DInterface, findOne' , ( ) => {
@@ -99,14 +117,6 @@ describe('prepareBaseResolvers()', () => {
99117 ) ;
100118 } ) ;
101119
102- it ( 'should set resolver record field type to DInterface, createOne' , ( ) => {
103- expect (
104- CharacterDTC . getResolver ( 'createOne' )
105- . getTypeComposer ( )
106- . getFieldType ( 'record' )
107- ) . toEqual ( CharacterDTC . getDInterface ( ) . getType ( ) ) ;
108- } ) ;
109-
110120 it ( 'should set resolver record field type to DInterface, updateOne' , ( ) => {
111121 expect (
112122 CharacterDTC . getResolver ( 'updateOne' )
@@ -131,7 +141,7 @@ describe('prepareBaseResolvers()', () => {
131141 ) . toEqual ( CharacterDTC . getDInterface ( ) . getType ( ) ) ;
132142 } ) ;
133143
134- it ( 'should set resolver record arg field, DKey to NonNull DKeyETC type , createOne' , ( ) => {
144+ it ( 'should set DKey field type to NonNull( DKeyETC) on record arg , createOne' , ( ) => {
135145 expect (
136146 CharacterDTC . getResolver ( 'createOne' )
137147 . getArgTC ( 'record' )
0 commit comments