@@ -35,11 +35,10 @@ describe("issue #248 - payloads' errors", () => {
3535
3636 const User = mongoose . model ( 'User' , UserSchema ) ;
3737 const UserTC = composeWithMongoose ( User ) ;
38- schemaComposer . Query . addFields ( {
39- findMany : UserTC . getResolver ( 'findMany' ) ,
40- } ) ;
38+ schemaComposer . Query . addFields ( { noop : 'String' } ) ;
4139 schemaComposer . Mutation . addFields ( {
4240 createOne : UserTC . getResolver ( 'createOne' ) ,
41+ createMany : UserTC . getResolver ( 'createMany' ) ,
4342 } ) ;
4443 const schema = schemaComposer . buildSchema ( ) ;
4544
@@ -56,8 +55,11 @@ describe("issue #248 - payloads' errors", () => {
5655 __typename
5756 message
5857 ... on ValidationError {
59- path
60- value
58+ errors {
59+ message
60+ path
61+ value
62+ }
6163 }
6264 }
6365 }
@@ -71,9 +73,14 @@ describe("issue #248 - payloads' errors", () => {
7173 record : null ,
7274 error : {
7375 __typename : 'ValidationError' ,
74- message : 'this is a validate message' ,
75- path : 'someStrangeField' ,
76- value : 'Test' ,
76+ message : 'User validation failed: someStrangeField: this is a validate message' ,
77+ errors : [
78+ {
79+ message : 'this is a validate message' ,
80+ path : 'someStrangeField' ,
81+ value : 'Test' ,
82+ } ,
83+ ] ,
7784 } ,
7885 } ,
7986 } ,
@@ -94,8 +101,6 @@ describe("issue #248 - payloads' errors", () => {
94101 ` ,
95102 } ) ;
96103
97- ( res as any ) . errors [ 0 ] = convertToSimpleObject ( ( res as any ) . errors [ 0 ] ) ;
98-
99104 expect ( res ) . toEqual ( {
100105 data : {
101106 createOne : null ,
@@ -104,25 +109,64 @@ describe("issue #248 - payloads' errors", () => {
104109 expect . objectContaining ( {
105110 message : 'User validation failed: someStrangeField: this is a validate message' ,
106111 extensions : {
107- validationErrors : {
108- someStrangeField : {
112+ name : 'ValidationError' ,
113+ errors : [
114+ {
109115 message : 'this is a validate message' ,
110116 path : 'someStrangeField' ,
111117 value : 'Test' ,
112118 } ,
113- } ,
119+ ] ,
114120 } ,
115121 path : [ 'createOne' ] ,
116122 } ) ,
117123 ] ,
118124 } ) ;
119125 } ) ;
120- } ) ;
121126
122- function convertToSimpleObject ( theClass : Error ) : Record < string , any > {
123- const keys = Object . getOwnPropertyNames ( theClass ) ;
124- return keys . reduce ( ( classAsObj , key ) => {
125- classAsObj [ key ] = ( theClass as any ) [ key ] ;
126- return classAsObj ;
127- } , { } as Record < string , any > ) ;
128- }
127+ it ( 'check validation for createMany' , async ( ) => {
128+ const res = await graphql . graphql ( {
129+ schema,
130+ source : `
131+ mutation {
132+ createMany(records: [{ name: "Ok"}, { name: "John", someStrangeField: "Test" }]) {
133+ records {
134+ name
135+ }
136+ error {
137+ __typename
138+ message
139+ ... on ValidationError {
140+ errors {
141+ message
142+ path
143+ value
144+ }
145+ }
146+ }
147+ }
148+ }
149+ ` ,
150+ } ) ;
151+
152+ expect ( res ) . toEqual ( {
153+ data : {
154+ createMany : {
155+ records : null ,
156+ error : {
157+ __typename : 'ValidationError' ,
158+ message : 'User validation failed: someStrangeField: this is a validate message' ,
159+ errors : [
160+ {
161+ message : 'this is a validate message' ,
162+ path : '1.someStrangeField' ,
163+ // ^^ - we add idx of broken record
164+ value : 'Test' ,
165+ } ,
166+ ] ,
167+ } ,
168+ } ,
169+ } ,
170+ } ) ;
171+ } ) ;
172+ } ) ;
0 commit comments