@@ -3,6 +3,9 @@ package v2beta1
33import (
44 "testing"
55
6+ "github.com/google/go-cmp/cmp"
7+ "k8s.io/utils/ptr"
8+
69 pdoknlv3 "github.com/pdok/mapserver-operator/api/v3"
710 "github.com/stretchr/testify/assert"
811 "sigs.k8s.io/yaml"
@@ -21,3 +24,209 @@ func TestV2ToV3(t *testing.T) {
2124 a := 0
2225 _ = a
2326}
27+
28+ func TestWMSService_MapLayersToV3 (t * testing.T ) {
29+ tests := []struct {
30+ name string
31+ v2Service WMSService
32+ want pdoknlv3.Layer
33+ }{
34+ {
35+ name : "no toplayer, middle: 1 data layer" ,
36+ v2Service : WMSService {Layers : []WMSLayer {
37+ {Name : "layer" },
38+ }},
39+ want : pdoknlv3.Layer {
40+ Title : ptr .To ("" ),
41+ Abstract : ptr .To ("" ),
42+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
43+ Visible : true ,
44+ Layers : []pdoknlv3.Layer {{
45+ Name : ptr .To ("layer" ),
46+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
47+ Visible : true ,
48+ Styles : []pdoknlv3.Style {},
49+ }},
50+ },
51+ },
52+ {
53+ name : "no toplayer, middle: 1 group layer" ,
54+ v2Service : WMSService {Layers : []WMSLayer {
55+ {Name : "group-layer" },
56+ {Name : "sub-layer" , Group : ptr .To ("group-layer" )},
57+ }},
58+ want : pdoknlv3.Layer {
59+ Title : ptr .To ("" ),
60+ Abstract : ptr .To ("" ),
61+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
62+ Visible : true ,
63+ Layers : []pdoknlv3.Layer {{
64+ Name : ptr .To ("group-layer" ),
65+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
66+ Visible : true ,
67+ Styles : []pdoknlv3.Style {},
68+ Layers : []pdoknlv3.Layer {
69+ {
70+ Name : ptr .To ("sub-layer" ),
71+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
72+ Visible : true ,
73+ Styles : []pdoknlv3.Style {},
74+ },
75+ },
76+ }},
77+ },
78+ },
79+ {
80+ name : "no toplayer, middle: 2 group layers" ,
81+ v2Service : WMSService {Layers : []WMSLayer {
82+ {Name : "group-layer-1" },
83+ {Name : "sub-layer-1" , Group : ptr .To ("group-layer-1" )},
84+ {Name : "group-layer-2" },
85+ {Name : "sub-layer-2" , Group : ptr .To ("group-layer-2" )},
86+ }},
87+ want : pdoknlv3.Layer {
88+ Title : ptr .To ("" ),
89+ Abstract : ptr .To ("" ),
90+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
91+ Visible : true ,
92+ Layers : []pdoknlv3.Layer {
93+ {
94+ Name : ptr .To ("group-layer-1" ),
95+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
96+ Visible : true ,
97+ Styles : []pdoknlv3.Style {},
98+ Layers : []pdoknlv3.Layer {
99+ {
100+ Name : ptr .To ("sub-layer-1" ),
101+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
102+ Visible : true ,
103+ Styles : []pdoknlv3.Style {},
104+ },
105+ },
106+ },
107+ {
108+ Name : ptr .To ("group-layer-2" ),
109+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
110+ Visible : true ,
111+ Styles : []pdoknlv3.Style {},
112+ Layers : []pdoknlv3.Layer {
113+ {
114+ Name : ptr .To ("sub-layer-2" ),
115+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
116+ Visible : true ,
117+ Styles : []pdoknlv3.Style {},
118+ },
119+ },
120+ },
121+ },
122+ },
123+ },
124+ {
125+ name : "no toplayer, middle: 1 group layer, 1 data layer" ,
126+ v2Service : WMSService {Layers : []WMSLayer {
127+ {Name : "group-layer" },
128+ {Name : "sub-layer" , Group : ptr .To ("group-layer" )},
129+ {Name : "data-layer" },
130+ }},
131+ want : pdoknlv3.Layer {
132+ Title : ptr .To ("" ),
133+ Abstract : ptr .To ("" ),
134+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
135+ Visible : true ,
136+ Layers : []pdoknlv3.Layer {
137+ {
138+ Name : ptr .To ("group-layer" ),
139+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
140+ Visible : true ,
141+ Styles : []pdoknlv3.Style {},
142+ Layers : []pdoknlv3.Layer {
143+ {
144+ Name : ptr .To ("sub-layer" ),
145+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
146+ Visible : true ,
147+ Styles : []pdoknlv3.Style {},
148+ },
149+ },
150+ },
151+ {
152+ Name : ptr .To ("data-layer" ),
153+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
154+ Visible : true ,
155+ Styles : []pdoknlv3.Style {},
156+ },
157+ },
158+ },
159+ },
160+ {
161+ name : "toplayer, middle: 1 group layer" ,
162+ v2Service : WMSService {Layers : []WMSLayer {
163+ {Name : "group-layer" , Group : ptr .To ("top-layer" )},
164+ {Name : "sub-layer" , Group : ptr .To ("group-layer" )},
165+ {Name : "top-layer" },
166+ }},
167+ want : pdoknlv3.Layer {
168+ Name : ptr .To ("top-layer" ),
169+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
170+ Visible : true ,
171+ Styles : []pdoknlv3.Style {},
172+ Layers : []pdoknlv3.Layer {{
173+ Name : ptr .To ("group-layer" ),
174+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
175+ Visible : true ,
176+ Styles : []pdoknlv3.Style {},
177+ Layers : []pdoknlv3.Layer {
178+ {
179+ Name : ptr .To ("sub-layer" ),
180+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
181+ Visible : true ,
182+ Styles : []pdoknlv3.Style {},
183+ },
184+ },
185+ }},
186+ },
187+ },
188+ {
189+ name : "toplayer, middle: 1 group layer, 1 data layer" ,
190+ v2Service : WMSService {Layers : []WMSLayer {
191+ {Name : "group-layer" , Group : ptr .To ("top-layer" )},
192+ {Name : "sub-layer" , Group : ptr .To ("group-layer" )},
193+ {Name : "top-layer" },
194+ {Name : "data-layer" , Group : ptr .To ("top-layer" )},
195+ }},
196+ want : pdoknlv3.Layer {
197+ Name : ptr .To ("top-layer" ),
198+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
199+ Visible : true ,
200+ Styles : []pdoknlv3.Style {},
201+ Layers : []pdoknlv3.Layer {
202+ {
203+ Name : ptr .To ("group-layer" ),
204+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
205+ Visible : true ,
206+ Styles : []pdoknlv3.Style {},
207+ Layers : []pdoknlv3.Layer {
208+ {
209+ Name : ptr .To ("sub-layer" ),
210+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
211+ Visible : true ,
212+ Styles : []pdoknlv3.Style {},
213+ },
214+ },
215+ },
216+ {
217+ Name : ptr .To ("data-layer" ),
218+ BoundingBoxes : []pdoknlv3.WMSBoundingBox {},
219+ Visible : true ,
220+ Styles : []pdoknlv3.Style {},
221+ },
222+ },
223+ },
224+ },
225+ }
226+ for _ , tt := range tests {
227+ t .Run (tt .name , func (t * testing.T ) {
228+ diff := cmp .Diff (tt .want , tt .v2Service .MapLayersToV3 ())
229+ assert .Equal (t , diff == "" , true , "%s" , diff )
230+ })
231+ }
232+ }
0 commit comments