@@ -110,3 +110,83 @@ func TestBrickCreate(t *testing.T) {
110110 require .Equal (t , secret , after .Descriptor .Bricks [0 ].Variables ["ARDUINO_SECRET" ])
111111 })
112112}
113+
114+ func TestGetBrickInstanceVariableDetails (t * testing.T ) {
115+ tests := []struct {
116+ name string
117+ brick * bricksindex.Brick
118+ userVariables map [string ]string
119+ expectedConfigVariables []BrickConfigVariable
120+ expectedVariableMap map [string ]string
121+ }{
122+ {
123+ name : "variable is present in the map" ,
124+ brick : & bricksindex.Brick {
125+ Variables : []bricksindex.BrickVariable {
126+ {Name : "VAR1" , Description : "desc" },
127+ },
128+ },
129+ userVariables : map [string ]string {"VAR1" : "value1" },
130+ expectedConfigVariables : []BrickConfigVariable {
131+ {Name : "VAR1" , Value : "value1" , Description : "desc" , Required : true },
132+ },
133+ expectedVariableMap : map [string ]string {"VAR1" : "value1" },
134+ },
135+ {
136+ name : "variable not present in the map" ,
137+ brick : & bricksindex.Brick {
138+ Variables : []bricksindex.BrickVariable {
139+ {Name : "VAR1" , Description : "desc" },
140+ },
141+ },
142+ userVariables : map [string ]string {},
143+ expectedConfigVariables : []BrickConfigVariable {
144+ {Name : "VAR1" , Value : "" , Description : "desc" , Required : true },
145+ },
146+ expectedVariableMap : map [string ]string {"VAR1" : "" },
147+ },
148+ {
149+ name : "variable with default value" ,
150+ brick : & bricksindex.Brick {
151+ Variables : []bricksindex.BrickVariable {
152+ {Name : "VAR1" , DefaultValue : "default" , Description : "desc" },
153+ },
154+ },
155+ userVariables : map [string ]string {},
156+ expectedConfigVariables : []BrickConfigVariable {
157+ {Name : "VAR1" , Value : "default" , Description : "desc" , Required : false },
158+ },
159+ expectedVariableMap : map [string ]string {"VAR1" : "default" },
160+ },
161+ {
162+ name : "multiple variables" ,
163+ brick : & bricksindex.Brick {
164+ Variables : []bricksindex.BrickVariable {
165+ {Name : "VAR1" , Description : "desc1" },
166+ {Name : "VAR2" , DefaultValue : "def2" , Description : "desc2" },
167+ },
168+ },
169+ userVariables : map [string ]string {"VAR1" : "v1" },
170+ expectedConfigVariables : []BrickConfigVariable {
171+ {Name : "VAR1" , Value : "v1" , Description : "desc1" , Required : true },
172+ {Name : "VAR2" , Value : "def2" , Description : "desc2" , Required : false },
173+ },
174+ expectedVariableMap : map [string ]string {"VAR1" : "v1" , "VAR2" : "def2" },
175+ },
176+ {
177+ name : "no variables" ,
178+ brick : & bricksindex.Brick {Variables : []bricksindex.BrickVariable {}},
179+ userVariables : map [string ]string {},
180+ expectedConfigVariables : []BrickConfigVariable {},
181+ expectedVariableMap : map [string ]string {},
182+ },
183+ }
184+
185+ for _ , tt := range tests {
186+ t .Run (tt .name , func (t * testing.T ) {
187+ actualVariableMap , actualConfigVariables := getBrickConfigDetails (tt .brick , tt .userVariables )
188+ require .Equal (t , tt .expectedVariableMap , actualVariableMap )
189+ require .Equal (t , tt .expectedConfigVariables , actualConfigVariables )
190+ })
191+ }
192+ }
0 commit comments