@@ -257,3 +257,87 @@ services:
257257 assert .Error (suite .T (), err )
258258 assert .Nil (suite .T (), config )
259259}
260+
261+ func (suite * ConfigTestSuite ) TestParseConfig_StringDependency () {
262+ yamlData := []byte (`
263+ project:
264+ name: "string-dep-project"
265+ domain: "example.com"
266+ email: "test@example.com"
267+ server:
268+ host: "example.com"
269+ port: 22
270+ user: "user"
271+ ssh_key: "~/.ssh/id_rsa"
272+ services:
273+ - name: "web"
274+ image: "nginx:latest"
275+ port: 80
276+ routes:
277+ - path: "/"
278+ dependencies:
279+ - "postgres:16"
280+ - "redis"
281+ ` )
282+
283+ config , err := ParseConfig (yamlData )
284+ assert .NoError (suite .T (), err )
285+ assert .NotNil (suite .T (), config )
286+
287+ // We expect 2 dependencies
288+ assert .Len (suite .T (), config .Dependencies , 2 )
289+
290+ // Dependency #1: "postgres:16"
291+ assert .Equal (suite .T (), "postgres" , config .Dependencies [0 ].Name )
292+ assert .Equal (suite .T (), "postgres:16" , config .Dependencies [0 ].Image )
293+
294+ // Dependency #2: "redis"
295+ // No colon, so we fall back to same name and image
296+ assert .Equal (suite .T (), "redis" , config .Dependencies [1 ].Name )
297+ assert .Equal (suite .T (), "redis" , config .Dependencies [1 ].Image )
298+ }
299+
300+ func (suite * ConfigTestSuite ) TestParseConfig_MixedDependencies () {
301+ yamlData := []byte (`
302+ project:
303+ name: "mixed-deps-project"
304+ domain: "example.com"
305+ email: "test@example.com"
306+ server:
307+ host: "example.com"
308+ port: 22
309+ user: "user"
310+ ssh_key: "~/.ssh/id_rsa"
311+ services:
312+ - name: "web"
313+ image: "nginx:latest"
314+ port: 80
315+ routes:
316+ - path: "/"
317+ dependencies:
318+ - "mysql:8"
319+ - name: "redis"
320+ image: "redis:6"
321+ - "elasticsearch"
322+ ` )
323+
324+ config , err := ParseConfig (yamlData )
325+ assert .NoError (suite .T (), err )
326+ assert .NotNil (suite .T (), config )
327+
328+ // We expect 3 dependencies
329+ assert .Len (suite .T (), config .Dependencies , 3 )
330+
331+ // Dependency #1: "mysql:8"
332+ assert .Equal (suite .T (), "mysql" , config .Dependencies [0 ].Name )
333+ assert .Equal (suite .T (), "mysql:8" , config .Dependencies [0 ].Image )
334+
335+ // Dependency #2: normal map-based dependency
336+ assert .Equal (suite .T (), "redis" , config .Dependencies [1 ].Name )
337+ assert .Equal (suite .T (), "redis:6" , config .Dependencies [1 ].Image )
338+
339+ // Dependency #3: "elasticsearch" (no colon)
340+ // We expect same name / image
341+ assert .Equal (suite .T (), "elasticsearch" , config .Dependencies [2 ].Name )
342+ assert .Equal (suite .T (), "elasticsearch" , config .Dependencies [2 ].Image )
343+ }
0 commit comments