@@ -32,7 +32,8 @@ class UpdateResponseParserTest {
3232 "build_number": 42,
3333 "download_url": "https://example.com/download",
3434 "app_name": "Test App",
35- "created_date": "2023-10-01T00:00:00Z"
35+ "created_date": "2023-10-01T00:00:00Z",
36+ "install_groups": ["beta", "internal"]
3637 },
3738 "current": null
3839 }
@@ -49,6 +50,7 @@ class UpdateResponseParserTest {
4950 assertEquals(" https://example.com/download" , updateInfo.downloadUrl)
5051 assertEquals(" Test App" , updateInfo.appName)
5152 assertEquals(" 2023-10-01T00:00:00Z" , updateInfo.createdDate)
53+ assertEquals(listOf (" beta" , " internal" ), updateInfo.installGroups)
5254 }
5355
5456 @Test
@@ -355,4 +357,103 @@ class UpdateResponseParserTest {
355357 error.message.contains(" Missing required fields in API response: id" ),
356358 )
357359 }
360+
361+ @Test
362+ fun `parseResponse returns null installGroups when not present` () {
363+ val responseBody =
364+ """
365+ {
366+ "update": {
367+ "id": "update-123",
368+ "build_version": "2.0.0",
369+ "build_number": 42,
370+ "download_url": "https://example.com/download",
371+ "app_name": "Test App",
372+ "created_date": "2023-10-01T00:00:00Z"
373+ }
374+ }
375+ """
376+ .trimIndent()
377+
378+ val result = parser.parseResponse(200 , responseBody)
379+
380+ assertTrue(" Should return NewRelease" , result is UpdateStatus .NewRelease )
381+ val updateInfo = (result as UpdateStatus .NewRelease ).info
382+ assertEquals(null , updateInfo.installGroups)
383+ }
384+
385+ @Test
386+ fun `parseResponse returns null installGroups when array is empty` () {
387+ val responseBody =
388+ """
389+ {
390+ "update": {
391+ "id": "update-123",
392+ "build_version": "2.0.0",
393+ "build_number": 42,
394+ "download_url": "https://example.com/download",
395+ "app_name": "Test App",
396+ "created_date": "2023-10-01T00:00:00Z",
397+ "install_groups": []
398+ }
399+ }
400+ """
401+ .trimIndent()
402+
403+ val result = parser.parseResponse(200 , responseBody)
404+
405+ assertTrue(" Should return NewRelease" , result is UpdateStatus .NewRelease )
406+ val updateInfo = (result as UpdateStatus .NewRelease ).info
407+ assertEquals(null , updateInfo.installGroups)
408+ }
409+
410+ @Test
411+ fun `parseResponse returns null installGroups when array is null` () {
412+ val responseBody =
413+ """
414+ {
415+ "update": {
416+ "id": "update-123",
417+ "build_version": "2.0.0",
418+ "build_number": 42,
419+ "download_url": "https://example.com/download",
420+ "app_name": "Test App",
421+ "created_date": "2023-10-01T00:00:00Z",
422+ "install_groups": null
423+ }
424+ }
425+ """
426+ .trimIndent()
427+
428+ val result = parser.parseResponse(200 , responseBody)
429+
430+ assertTrue(" Should return NewRelease" , result is UpdateStatus .NewRelease )
431+ val updateInfo = (result as UpdateStatus .NewRelease ).info
432+ assertEquals(null , updateInfo.installGroups)
433+ }
434+
435+ @Test
436+ fun `parseResponse returns single installGroup` () {
437+ val responseBody =
438+ """
439+ {
440+ "update": {
441+ "id": "update-123",
442+ "build_version": "2.0.0",
443+ "build_number": 42,
444+ "download_url": "https://example.com/download",
445+ "app_name": "Test App",
446+ "created_date": "2023-10-01T00:00:00Z",
447+ "install_groups": ["beta-testers"]
448+ }
449+ }
450+ """
451+ .trimIndent()
452+
453+ val result = parser.parseResponse(200 , responseBody)
454+
455+ assertTrue(" Should return NewRelease" , result is UpdateStatus .NewRelease )
456+ val updateInfo = (result as UpdateStatus .NewRelease ).info
457+ assertEquals(listOf (" beta-testers" ), updateInfo.installGroups)
458+ }
358459}
0 commit comments