@@ -120,7 +120,196 @@ func TestMakeEnumFields(t *testing.T) {
120120 }
121121}
122122
123- func TestMakeEnumFieldsError (t * testing.T ) {
123+ func TestMakeEnumFieldsDeprecated (t * testing.T ) {
124+ model := api .NewTestAPI ([]* api.Message {}, []* api.Enum {}, []* api.Service {})
125+ model .PackageName = "package"
126+ input := & schema {
127+ Properties : []* property {
128+ {
129+ Name : "networkTier" ,
130+ Schema : & schema {
131+ Description : "The networking tier." ,
132+ Deprecated : true ,
133+ Enums : []string {
134+ "FIXED_STANDARD" ,
135+ "PREMIUM" ,
136+ },
137+ EnumDescriptions : []string {
138+ "Public internet quality with fixed bandwidth." ,
139+ "High quality, Google-grade network tier, support for all networking products." ,
140+ },
141+ Type : "string" ,
142+ },
143+ },
144+ },
145+ }
146+ message := & api.Message {ID : ".package.Message" }
147+ if err := makeMessageFields (model , message , input ); err != nil {
148+ t .Fatal (err )
149+ }
150+
151+ wantEnum := & api.Enum {
152+ Name : "networkTier" ,
153+ ID : ".package.Message.networkTier" ,
154+ Documentation : "The enumerated type for the [networkTier][package.Message.networkTier] field." ,
155+ Deprecated : true ,
156+ Values : []* api.EnumValue {
157+ {
158+ Name : "FIXED_STANDARD" ,
159+ ID : ".package.Message.networkTier.FIXED_STANDARD" ,
160+ Number : 0 ,
161+ Documentation : "Public internet quality with fixed bandwidth." ,
162+ },
163+ {
164+ Name : "PREMIUM" ,
165+ ID : ".package.Message.networkTier.PREMIUM" ,
166+ Number : 1 ,
167+ Documentation : "High quality, Google-grade network tier, support for all networking products." ,
168+ },
169+ },
170+ }
171+ wantEnum .UniqueNumberValues = wantEnum .Values
172+ gotEnum , ok := model .State .EnumByID [wantEnum .ID ]
173+ if ! ok {
174+ t .Fatalf ("missing enum %s" , wantEnum .ID )
175+ }
176+ apitest .CheckEnum (t , * gotEnum , * wantEnum )
177+ if gotEnum .Parent == nil {
178+ t .Errorf ("expected non-nil parent in enum: %v" , gotEnum )
179+ }
180+ for _ , value := range gotEnum .Values {
181+ if value .Parent != gotEnum {
182+ t .Errorf ("mismatched parent in enumValue: %v" , value )
183+ }
184+ }
185+
186+ want := & api.Message {
187+ ID : ".package.Message" ,
188+ Fields : []* api.Field {
189+ {
190+ Name : "networkTier" ,
191+ JSONName : "networkTier" ,
192+ ID : ".package.Message.networkTier" ,
193+ Documentation : "The networking tier." ,
194+ Deprecated : true ,
195+ Typez : api .ENUM_TYPE ,
196+ TypezID : ".package.Message.networkTier" ,
197+ },
198+ },
199+ }
200+ apitest .CheckMessage (t , message , want )
201+ wantEnums := []* api.Enum {wantEnum }
202+ if diff := cmp .Diff (wantEnums , message .Enums , cmpopts .IgnoreFields (api.Enum {}, "Parent" ), cmpopts .IgnoreFields (api.EnumValue {}, "Parent" )); diff != "" {
203+ t .Errorf ("mismatch (-want, +got):\n %s" , diff )
204+ }
205+ }
206+
207+ func TestMakeEnumFieldsWithDeprecatedValues (t * testing.T ) {
208+ model := api .NewTestAPI ([]* api.Message {}, []* api.Enum {}, []* api.Service {})
209+ model .PackageName = "package"
210+ input := & schema {
211+ Properties : []* property {
212+ {
213+ Name : "networkTier" ,
214+ Schema : & schema {
215+ Description : "The networking tier." ,
216+ Enums : []string {
217+ "FIXED_STANDARD" ,
218+ "PREMIUM" ,
219+ "STANDARD" ,
220+ "STANDARD_OVERRIDES_FIXED_STANDARD" ,
221+ },
222+ EnumDescriptions : []string {
223+ "Public internet quality with fixed bandwidth." ,
224+ "High quality, Google-grade network tier, support for all networking products." ,
225+ "Public internet quality, only limited support for other networking products." ,
226+ "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured." ,
227+ },
228+ EnumDeprecated : []bool {
229+ true ,
230+ false ,
231+ true ,
232+ false ,
233+ },
234+ Type : "string" ,
235+ },
236+ },
237+ },
238+ }
239+ message := & api.Message {ID : ".package.Message" }
240+ if err := makeMessageFields (model , message , input ); err != nil {
241+ t .Fatal (err )
242+ }
243+
244+ wantEnum := & api.Enum {
245+ Name : "networkTier" ,
246+ ID : ".package.Message.networkTier" ,
247+ Documentation : "The enumerated type for the [networkTier][package.Message.networkTier] field." ,
248+ Values : []* api.EnumValue {
249+ {
250+ Name : "FIXED_STANDARD" ,
251+ ID : ".package.Message.networkTier.FIXED_STANDARD" ,
252+ Number : 0 ,
253+ Documentation : "Public internet quality with fixed bandwidth." ,
254+ Deprecated : true ,
255+ },
256+ {
257+ Name : "PREMIUM" ,
258+ ID : ".package.Message.networkTier.PREMIUM" ,
259+ Number : 1 ,
260+ Documentation : "High quality, Google-grade network tier, support for all networking products." ,
261+ },
262+ {
263+ Name : "STANDARD" ,
264+ ID : ".package.Message.networkTier.STANDARD" ,
265+ Number : 2 ,
266+ Documentation : "Public internet quality, only limited support for other networking products." ,
267+ Deprecated : true ,
268+ },
269+ {
270+ Name : "STANDARD_OVERRIDES_FIXED_STANDARD" ,
271+ ID : ".package.Message.networkTier.STANDARD_OVERRIDES_FIXED_STANDARD" ,
272+ Number : 3 ,
273+ Documentation : "(Output only) Temporary tier for FIXED_STANDARD when fixed standard tier is expired or not configured." ,
274+ },
275+ },
276+ }
277+ wantEnum .UniqueNumberValues = wantEnum .Values
278+ gotEnum , ok := model .State .EnumByID [wantEnum .ID ]
279+ if ! ok {
280+ t .Fatalf ("missing enum %s" , wantEnum .ID )
281+ }
282+ apitest .CheckEnum (t , * gotEnum , * wantEnum )
283+ if gotEnum .Parent == nil {
284+ t .Errorf ("expected non-nil parent in enum: %v" , gotEnum )
285+ }
286+ for _ , value := range gotEnum .Values {
287+ if value .Parent != gotEnum {
288+ t .Errorf ("mismatched parent in enumValue: %v" , value )
289+ }
290+ }
291+
292+ want := & api.Message {
293+ ID : ".package.Message" ,
294+ Fields : []* api.Field {
295+ {
296+ Name : "networkTier" ,
297+ JSONName : "networkTier" ,
298+ ID : ".package.Message.networkTier" ,
299+ Documentation : "The networking tier." ,
300+ Typez : api .ENUM_TYPE ,
301+ TypezID : ".package.Message.networkTier" ,
302+ },
303+ },
304+ }
305+ apitest .CheckMessage (t , message , want )
306+ wantEnums := []* api.Enum {wantEnum }
307+ if diff := cmp .Diff (wantEnums , message .Enums , cmpopts .IgnoreFields (api.Enum {}, "Parent" ), cmpopts .IgnoreFields (api.EnumValue {}, "Parent" )); diff != "" {
308+ t .Errorf ("mismatch (-want, +got):\n %s" , diff )
309+ }
310+ }
311+
312+ func TestMakeEnumFieldsDescriptionError (t * testing.T ) {
124313 model := api .NewTestAPI ([]* api.Message {}, []* api.Enum {}, []* api.Service {})
125314 model .PackageName = "package"
126315 input := & schema {
@@ -149,3 +338,36 @@ func TestMakeEnumFieldsError(t *testing.T) {
149338 t .Errorf ("expected error in enum with mismatched description count, got=%v" , message )
150339 }
151340}
341+
342+ func TestMakeEnumFieldsDeprecatedError (t * testing.T ) {
343+ model := api .NewTestAPI ([]* api.Message {}, []* api.Enum {}, []* api.Service {})
344+ model .PackageName = "package"
345+ input := & schema {
346+ Properties : []* property {
347+ {
348+ Name : "networkTier" ,
349+ Schema : & schema {
350+ Description : "The networking tier." ,
351+ Enums : []string {
352+ "FIXED_STANDARD" ,
353+ "PREMIUM" ,
354+ },
355+ EnumDescriptions : []string {
356+ "Public internet quality with fixed bandwidth." ,
357+ "High quality, Google-grade network tier, support for all networking products." ,
358+ },
359+ EnumDeprecated : []bool {
360+ false ,
361+ true ,
362+ true ,
363+ },
364+ Type : "string" ,
365+ },
366+ },
367+ },
368+ }
369+ message := & api.Message {ID : ".package.Message" }
370+ if err := makeMessageFields (model , message , input ); err == nil {
371+ t .Errorf ("expected error in enum with mismatched deprecated values count, got=%v" , message )
372+ }
373+ }
0 commit comments