@@ -15,14 +15,23 @@ struct MockObjectTemplate: TemplateRenderer {
15
15
16
16
let target : TemplateTarget = . testMockFile
17
17
18
- typealias TemplateField = (
19
- responseKey: String ,
20
- propertyName: String ,
21
- initializerParameterName: String ? ,
22
- type: GraphQLType ,
23
- mockType: String ,
24
- deprecationReason: String ?
25
- )
18
+ struct TemplateField {
19
+ let responseKey : String
20
+ let propertyName : String
21
+ let initializerParameterName : String ?
22
+ let type : GraphQLType
23
+ let mockType : String
24
+ let deprecationReason : String ?
25
+ let config : ApolloCodegen . ConfigurationContext
26
+
27
+ func defaultInitializer( config: ApolloCodegen . ConfigurationContext ) -> String ? {
28
+ if type. isNullable {
29
+ return " = nil "
30
+ } else {
31
+ return " = \( type. defaultMockValue ( config: config) ) "
32
+ }
33
+ }
34
+ }
26
35
27
36
func renderBodyTemplate(
28
37
nonFatalErrorRecorder: ApolloCodegen . NonFatalError . Recorder
@@ -31,13 +40,14 @@ struct MockObjectTemplate: TemplateRenderer {
31
40
let fields : [ TemplateField ] = fields
32
41
. sorted { $0. 0 < $1. 0 }
33
42
. map {
34
- (
43
+ TemplateField (
35
44
responseKey: $0. 0 ,
36
45
propertyName: $0. 0 . asTestMockFieldPropertyName,
37
46
initializerParameterName: $0. 0 . asTestMockInitializerParameterName,
38
47
type: $0. 1 ,
39
48
mockType: mockTypeName ( for: $0. 1 ) ,
40
- deprecationReason: $0. deprecationReason
49
+ deprecationReason: $0. deprecationReason,
50
+ config: config
41
51
)
42
52
}
43
53
@@ -66,7 +76,7 @@ struct MockObjectTemplate: TemplateRenderer {
66
76
\( conflictingFieldNameProperties ( fields) )
67
77
convenience init(
68
78
\( fields. map { """
69
- \( $0. propertyName) \( ifLet: $0. initializerParameterName, { " \( $0) " } ) : \( $0. mockType) ? = nil
79
+ \( $0. propertyName) \( ifLet: $0. initializerParameterName, { " \( $0) " } ) : \( $0. mockType) \( ifLet : $0 . defaultInitializer ( config : config ) , { " \( $0 ) " } )
70
80
""" } , separator: " , \n " )
71
81
) {
72
82
self.init()
@@ -134,15 +144,18 @@ struct MockObjectTemplate: TemplateRenderer {
134
144
case . scalar,
135
145
. enum,
136
146
. inputObject:
137
- return type. rendered ( as: . testMockField( forceNonNull: true ) , config: config. config)
147
+ return TemplateString (
148
+ " \( type. rendered ( as: . testMockField( forceNonNull: true ) , config: config. config) ) \( if: !forceNonNull, " ? " ) "
149
+ ) . description
138
150
case . nonNull( let graphQLType) :
139
151
return nameReplacement ( for: graphQLType, forceNonNull: true )
140
152
case . list( let graphQLType) :
141
- return " [ \( nameReplacement ( for: graphQLType, forceNonNull: false ) ) ] "
153
+ return TemplateString (
154
+ " [ \( nameReplacement ( for: graphQLType, forceNonNull: false ) ) ] \( if: !forceNonNull, " ? " ) "
155
+ ) . description
142
156
}
143
157
}
144
158
145
- return nameReplacement ( for: type, forceNonNull: true )
159
+ return nameReplacement ( for: type, forceNonNull: false )
146
160
}
147
-
148
161
}
0 commit comments