@@ -45,31 +45,41 @@ func TestNewBuilder(t *testing.T) {
4545 wantedSchema string
4646 wantedItemsSchema string
4747
48- v2 bool // produce OpenAPIv2
48+ v2 bool // produce OpenAPIv2
49+ includeSelectable bool // include selectable fields
50+ version string
4951 }{
5052 {
5153 "nil" ,
5254 "" ,
5355 `{"type":"object","x-kubernetes-group-version-kind":[{"group":"bar.k8s.io","kind":"Foo","version":"v1"}]}` , `{"$ref":"#/definitions/io.k8s.bar.v1.Foo"}` ,
5456 true ,
57+ false ,
58+ "v1" ,
5559 },
5660 {"with properties" ,
5761 `{"type":"object","properties":{"spec":{"type":"object"},"status":{"type":"object"}}}` ,
5862 `{"type":"object","properties":{"apiVersion":{"type":"string"},"kind":{"type":"string"},"metadata":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"type":"object"},"status":{"type":"object"}},"x-kubernetes-group-version-kind":[{"group":"bar.k8s.io","kind":"Foo","version":"v1"}]}` ,
5963 `{"$ref":"#/definitions/io.k8s.bar.v1.Foo"}` ,
6064 true ,
65+ false ,
66+ "v1" ,
6167 },
6268 {"type only" ,
6369 `{"type":"object"}` ,
6470 `{"type":"object","properties":{"apiVersion":{"type":"string"},"kind":{"type":"string"},"metadata":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"}},"x-kubernetes-group-version-kind":[{"group":"bar.k8s.io","kind":"Foo","version":"v1"}]}` ,
6571 `{"$ref":"#/definitions/io.k8s.bar.v1.Foo"}` ,
6672 true ,
73+ false ,
74+ "v1" ,
6775 },
6876 {"preserve unknown at root v2" ,
6977 `{"type":"object","x-kubernetes-preserve-unknown-fields":true}` ,
7078 `{"type":"object","x-kubernetes-group-version-kind":[{"group":"bar.k8s.io","kind":"Foo","version":"v1"}]}` ,
7179 `{"$ref":"#/definitions/io.k8s.bar.v1.Foo"}` ,
7280 true ,
81+ false ,
82+ "v1" ,
7383 },
7484 {"with extensions" ,
7585 `
@@ -173,6 +183,17 @@ func TestNewBuilder(t *testing.T) {
173183}` ,
174184 `{"$ref":"#/definitions/io.k8s.bar.v1.Foo"}` ,
175185 true ,
186+ false ,
187+ "v1" ,
188+ },
189+ {
190+ "include selectable fields with different version" ,
191+ `{"type":"object","properties":{"spec":{"type":"object"},"status":{"type":"object"}}}` ,
192+ `{"type":"object","properties":{"apiVersion":{"type":"string"},"kind":{"type":"string"},"metadata":{"$ref":"#/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta"},"spec":{"type":"object"},"status":{"type":"object"}},"x-kubernetes-group-version-kind":[{"group":"bar.k8s.io","kind":"Foo","version":"v2"}]}` ,
193+ `{"$ref":"#/definitions/io.k8s.bar.v2.Foo"}` ,
194+ true ,
195+ true ,
196+ "v2" ,
176197 },
177198 }
178199 for _ , tt := range tests {
@@ -212,7 +233,7 @@ func TestNewBuilder(t *testing.T) {
212233 },
213234 Scope : apiextensionsv1 .NamespaceScoped ,
214235 },
215- }, "v1" , schema , Options {V2 : tt .v2 })
236+ }, tt . version , schema , Options {V2 : tt .v2 , IncludeSelectableFields : tt . includeSelectable })
216237
217238 var wantedSchema , wantedItemsSchema spec.Schema
218239 if err := json .Unmarshal ([]byte (tt .wantedSchema ), & wantedSchema ); err != nil {
0 commit comments