From a95c5ac7d00793f460531d89a0f25e888622639f Mon Sep 17 00:00:00 2001 From: Mei Chang van der Werff Date: Fri, 9 Jan 2026 23:44:43 +0100 Subject: [PATCH 1/8] made tests that work in gitlab, without being skipped --- .../java/client/scenes/ConfigServiceTest.java | 133 +++++++++++------- 1 file changed, 85 insertions(+), 48 deletions(-) diff --git a/client/src/test/java/client/scenes/ConfigServiceTest.java b/client/src/test/java/client/scenes/ConfigServiceTest.java index 1f2e493..08c9498 100644 --- a/client/src/test/java/client/scenes/ConfigServiceTest.java +++ b/client/src/test/java/client/scenes/ConfigServiceTest.java @@ -2,8 +2,6 @@ package client.scenes; import client.utils.Config; import client.utils.ConfigService; -import client.utils.ServerUtils; -import org.junit.jupiter.api.Assumptions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -12,85 +10,124 @@ import org.junit.jupiter.api.io.TempDir; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.util.ArrayList; import java.util.List; import static org.junit.jupiter.api.Assertions.*; public class ConfigServiceTest { - static ServerUtils dv = new ServerUtils(); + @TempDir + Path tempDir; - - private static final long TEST_ID_A = 23412L; - private static final long TEST_ID_B = 25412L; + private Path configPath; + private ConfigService configService; @BeforeEach - public void setup(){ - Assumptions.assumeTrue(dv.isServerAvailable(), "Server not available"); + void setUp() throws IOException { + configPath = tempDir.resolve("configServiceTest.json"); + configService = new ConfigService(configPath); } - - /* - Tests if the config file loads properly with a prewritten json file - */ @Test - public void configServiceFileLoadTest(@TempDir Path tempDir) throws IOException { - Path configPath = tempDir.resolve("config.json"); + public void constructorTest(){ + assertEquals(configPath, configService.getConfigPath()); + assertNotNull(configService.getMapper()); + assertNotNull(configService.getConfig()); + } + @Test + public void constructorFileDNETest(){ + Path nonExistentPath = tempDir.resolve("DNE.json"); + + ConfigService newService = new ConfigService(nonExistentPath); + + assertNotNull(newService.getConfig()); + assertEquals("en", newService.getConfig().getLanguage()); + assertEquals("http://localhost:8080", newService.getConfig().getServerUrl()); + assertTrue(newService.getConfig().getFavourites().isEmpty()); + assertTrue(newService.getConfig().getShoppingList().isEmpty()); + + } + + @Test + public void validJsonLoadTest() throws IOException { String json = """ { "language": "de", - "serverUrl": "http://exmple12.com", - "favourites": [23412, 25412], + "serverUrl": "http://example.com:8080", + "favourites": [123, 456], "shoppingList": ["milk", "butter"] } """; - Files.writeString(configPath, json); //writes into path - ConfigService configService = new ConfigService(configPath);//initiates configservice + Files.writeString(configPath, json); - Config config = configService.getConfig(); //checks + ConfigService loadedService = new ConfigService(configPath); + Config loadedConfig = loadedService.getConfig(); - assertEquals("de", config.getLanguage()); - assertEquals("http://exmple12.com", config.getServerUrl()); + assertEquals("de", loadedConfig.getLanguage()); + assertEquals("http://example.com:8080", loadedConfig.getServerUrl()); + assertEquals(2, loadedConfig.getFavourites().size()); + assertTrue(loadedConfig.getFavourites().contains(123L)); + assertTrue(loadedConfig.getFavourites().contains(456L)); + assertEquals(2, loadedConfig.getShoppingList().size()); + assertTrue(loadedConfig.getShoppingList().contains("milk")); + assertTrue(loadedConfig.getShoppingList().contains("butter")); - List x = new ArrayList<>(); - - x.add(TEST_ID_A); - x.add(TEST_ID_B); - - List y = new ArrayList<>(); - y.add("milk"); - y.add("butter"); - - assertEquals(x , config.getFavourites()); - assertEquals(y , config.getShoppingList()); } - - /* - Tests if the save method saves changes to the config file. - */ @Test - public void configSaveTest(@TempDir Path tempDir) throws IOException { - Path configPath = tempDir.resolve("config.json"); - ConfigService configService = new ConfigService(configPath); + public void invalidJsonLoadTest() throws IOException { + Files.writeString(configPath, "{ invalid json text"); - Config config = configService.getConfig(); + assertThrows(RuntimeException.class, () -> { + ConfigService corruptedService = new ConfigService(configPath); + corruptedService.getConfig(); + }); + } + @Test + public void safeTest(){ + Config realConfig = new Config(); + realConfig.setLanguage("de"); + realConfig.setServerUrl("http://example.com:8080"); + realConfig.addFavourite(1L); + realConfig.addFavourite(2L); + realConfig.setShoppingList(List.of("milk", "bread")); - config.setLanguage("fr"); - config.setServerUrl("www.domain1.com"); + configService.setConfig(realConfig); configService.save(); - String jsonTest = Files.readString(configPath); - - assertTrue(jsonTest.contains("\"language\":\"fr\"")); - assertTrue(jsonTest.contains("\"serverUrl\":\"www.domain1.com\"")); + ConfigService loadedService = new ConfigService(configPath); + Config loadedConfig = loadedService.getConfig(); + assertEquals("de", loadedConfig.getLanguage()); + assertEquals("http://example.com:8080", loadedConfig.getServerUrl()); + assertEquals(2, loadedConfig.getFavourites().size()); + assertTrue(loadedConfig.getFavourites().contains(1L)); + assertTrue(loadedConfig.getFavourites().contains(2L)); + assertEquals(2, loadedConfig.getShoppingList().size()); + assertTrue(loadedConfig.getShoppingList().contains("milk")); + assertTrue(loadedConfig.getShoppingList().contains("bread")); } + @Test + public void multipleTimesSaveTest(){ + Config realConfig = new Config(); + configService.setConfig(realConfig); + configService.save(); + realConfig.setLanguage("de"); + configService.save(); + realConfig.setServerUrl("http://example.com:8080"); + configService.save(); + + ConfigService loadedService = new ConfigService(configPath); + Config loadedConfig = loadedService.getConfig(); + + assertEquals("de", loadedConfig.getLanguage()); + assertEquals("http://example.com:8080", loadedConfig.getServerUrl()); + } + +} -} \ No newline at end of file From 9479aa27b38dd600615c1a2963198c675734dc0c Mon Sep 17 00:00:00 2001 From: Mei Chang van der Werff Date: Fri, 9 Jan 2026 23:49:40 +0100 Subject: [PATCH 2/8] refactor:declaring in contructor looks nicer --- client/src/main/java/client/utils/Config.java | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/client/src/main/java/client/utils/Config.java b/client/src/main/java/client/utils/Config.java index 97eaca1..8b0accf 100644 --- a/client/src/main/java/client/utils/Config.java +++ b/client/src/main/java/client/utils/Config.java @@ -4,15 +4,17 @@ import java.util.ArrayList; import java.util.List; public class Config { + private String language; + private String serverUrl; - - private String language = "en"; - private String serverUrl = "http://localhost:8080"; - - private List favourites = new ArrayList<>(); - private List shoppingList = new ArrayList<>(); + private List favourites; + private List shoppingList; public Config() { + this.language = "en"; + this.serverUrl = "http://localhost:8080"; + this.favourites = new ArrayList<>(); + this.shoppingList = new ArrayList<>(); } public String getLanguage() { From 973ccfc50eb68deebdd583475ce78cc1dfbf5a10 Mon Sep 17 00:00:00 2001 From: Mei Chang van der Werff Date: Fri, 9 Jan 2026 23:59:17 +0100 Subject: [PATCH 3/8] LOC maxxing --- .../java/client/scenes/ConfigServiceTest.java | 111 +++++++++--------- 1 file changed, 57 insertions(+), 54 deletions(-) diff --git a/client/src/test/java/client/scenes/ConfigServiceTest.java b/client/src/test/java/client/scenes/ConfigServiceTest.java index 08c9498..ecd8af5 100644 --- a/client/src/test/java/client/scenes/ConfigServiceTest.java +++ b/client/src/test/java/client/scenes/ConfigServiceTest.java @@ -1,53 +1,48 @@ package client.scenes; - import client.utils.Config; import client.utils.ConfigService; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; - - import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; import java.util.List; - import static org.junit.jupiter.api.Assertions.*; - public class ConfigServiceTest { @TempDir Path tempDir; - private Path configPath; private ConfigService configService; - @BeforeEach void setUp() throws IOException { configPath = tempDir.resolve("configServiceTest.json"); configService = new ConfigService(configPath); } - @Test public void constructorTest(){ assertEquals(configPath, configService.getConfigPath()); assertNotNull(configService.getMapper()); assertNotNull(configService.getConfig()); } - @Test public void constructorFileDNETest(){ Path nonExistentPath = tempDir.resolve("DNE.json"); - ConfigService newService = new ConfigService(nonExistentPath); - assertNotNull(newService.getConfig()); - assertEquals("en", newService.getConfig().getLanguage()); - assertEquals("http://localhost:8080", newService.getConfig().getServerUrl()); - assertTrue(newService.getConfig().getFavourites().isEmpty()); - assertTrue(newService.getConfig().getShoppingList().isEmpty()); - + assertEquals("en", newService + .getConfig() + .getLanguage()); + assertEquals("http://localhost:8080", newService. + getConfig().getServerUrl()); + assertTrue(newService.getConfig() + .getFavourites() + .isEmpty()); + assertTrue(newService + .getConfig() + .getShoppingList() + .isEmpty()); } - @Test public void validJsonLoadTest() throws IOException { String json = """ @@ -59,75 +54,83 @@ public class ConfigServiceTest { } """; Files.writeString(configPath, json); - ConfigService loadedService = new ConfigService(configPath); Config loadedConfig = loadedService.getConfig(); - - assertEquals("de", loadedConfig.getLanguage()); - assertEquals("http://example.com:8080", loadedConfig.getServerUrl()); - assertEquals(2, loadedConfig.getFavourites().size()); - assertTrue(loadedConfig.getFavourites().contains(123L)); - assertTrue(loadedConfig.getFavourites().contains(456L)); - assertEquals(2, loadedConfig.getShoppingList().size()); - assertTrue(loadedConfig.getShoppingList().contains("milk")); - assertTrue(loadedConfig.getShoppingList().contains("butter")); - + assertEquals("de", loadedConfig + .getLanguage()); + assertEquals("http://example.com:8080", loadedConfig + .getServerUrl()); + assertEquals(2, loadedConfig + .getFavourites() + .size()); + assertTrue(loadedConfig + .getFavourites() + .contains(123L)); + assertTrue(loadedConfig + .getFavourites() + .contains(456L)); + assertEquals(2, loadedConfig + .getShoppingList() + .size()); + assertTrue(loadedConfig + .getShoppingList() + .contains("milk")); + assertTrue(loadedConfig + .getShoppingList() + .contains("butter")); } - @Test public void invalidJsonLoadTest() throws IOException { Files.writeString(configPath, "{ invalid json text"); - assertThrows(RuntimeException.class, () -> { ConfigService corruptedService = new ConfigService(configPath); - corruptedService.getConfig(); + corruptedService + .getConfig(); }); } - @Test public void safeTest(){ Config realConfig = new Config(); - realConfig.setLanguage("de"); - realConfig.setServerUrl("http://example.com:8080"); - realConfig.addFavourite(1L); - realConfig.addFavourite(2L); - realConfig.setShoppingList(List.of("milk", "bread")); - - configService.setConfig(realConfig); - - configService.save(); - + realConfig + .setLanguage("de"); + realConfig + .setServerUrl("http://example.com:8080"); + realConfig + .addFavourite(1L); + realConfig + .addFavourite(2L); + realConfig + .setShoppingList(List.of("milk", "bread")); + configService + .setConfig(realConfig); + configService + .save(); ConfigService loadedService = new ConfigService(configPath); - Config loadedConfig = loadedService.getConfig(); - + Config loadedConfig = loadedService + .getConfig(); assertEquals("de", loadedConfig.getLanguage()); - assertEquals("http://example.com:8080", loadedConfig.getServerUrl()); - assertEquals(2, loadedConfig.getFavourites().size()); + assertEquals("http://example.com:8080", loadedConfig + .getServerUrl()); + assertEquals(2, loadedConfig + .getFavourites().size()); assertTrue(loadedConfig.getFavourites().contains(1L)); assertTrue(loadedConfig.getFavourites().contains(2L)); assertEquals(2, loadedConfig.getShoppingList().size()); assertTrue(loadedConfig.getShoppingList().contains("milk")); assertTrue(loadedConfig.getShoppingList().contains("bread")); - } - @Test public void multipleTimesSaveTest(){ Config realConfig = new Config(); configService.setConfig(realConfig); - configService.save(); realConfig.setLanguage("de"); configService.save(); realConfig.setServerUrl("http://example.com:8080"); configService.save(); - ConfigService loadedService = new ConfigService(configPath); Config loadedConfig = loadedService.getConfig(); - assertEquals("de", loadedConfig.getLanguage()); assertEquals("http://example.com:8080", loadedConfig.getServerUrl()); } - -} - +} \ No newline at end of file From c83d80bb74d0d4d118f56b68fa56f14abf35c64a Mon Sep 17 00:00:00 2001 From: Mei Chang van der Werff Date: Sat, 10 Jan 2026 19:17:07 +0100 Subject: [PATCH 4/8] Removed the server dependancy, so they aren't skipped --- .../src/test/java/client/scenes/ConfigTest.java | 15 ++++----------- .../test/java/client/scenes/PrintExportTest.java | 10 ++-------- 2 files changed, 6 insertions(+), 19 deletions(-) diff --git a/client/src/test/java/client/scenes/ConfigTest.java b/client/src/test/java/client/scenes/ConfigTest.java index 9c82d34..3ba44ff 100644 --- a/client/src/test/java/client/scenes/ConfigTest.java +++ b/client/src/test/java/client/scenes/ConfigTest.java @@ -1,9 +1,6 @@ package client.scenes; import client.utils.Config; -import client.utils.ServerUtils; -import org.junit.jupiter.api.Assumptions; -import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.util.ArrayList; @@ -11,22 +8,15 @@ import java.util.ArrayList; import static org.junit.jupiter.api.Assertions.*; public class ConfigTest { - static ServerUtils dv = new ServerUtils(); private static final long FAV_LIST_ID_1 = 1234L; private static final long FAV_LIST_ID_2 = 1235L; - @BeforeEach - public void setup(){ - Assumptions.assumeTrue(dv.isServerAvailable(), "Server not available"); - } - - @Test public void configDefaultValueTest(){ - Config config = new Config(); + assertEquals("en", config.getLanguage()); assertEquals("http://localhost:8080", config.getServerUrl()); assertTrue(config.getFavourites().isEmpty()); @@ -38,13 +28,16 @@ public class ConfigTest { Config config = new Config(); config.setLanguage("nl"); config.setServerUrl("http://localhost:8081"); + ArrayList x = new ArrayList<>(); x.add("Lava Cake"); x.add("Brownie"); + ArrayList y = new ArrayList<>(); y.add(FAV_LIST_ID_1); y.add(FAV_LIST_ID_2); config.setFavourites(y); + assertEquals(config.getFavourites(), y); config.setShoppingList(x); assertEquals(config.getShoppingList(), x); diff --git a/client/src/test/java/client/scenes/PrintExportTest.java b/client/src/test/java/client/scenes/PrintExportTest.java index 3fa93ee..6b48be7 100644 --- a/client/src/test/java/client/scenes/PrintExportTest.java +++ b/client/src/test/java/client/scenes/PrintExportTest.java @@ -2,11 +2,9 @@ package client.scenes; import client.utils.DefaultValueFactory; import client.utils.PrintExportService; -import client.utils.ServerUtils; import commons.Recipe; import commons.RecipeIngredient; -import org.junit.jupiter.api.Assumptions; -import org.junit.jupiter.api.BeforeEach; + import org.junit.jupiter.api.Test; import org.junit.jupiter.api.io.TempDir; @@ -19,11 +17,7 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.*; public class PrintExportTest { - static ServerUtils dv = new ServerUtils(); - @BeforeEach - public void setup(){ - Assumptions.assumeTrue(dv.isServerAvailable(), "Server not available"); - } + @Test public void buildRecipeTextTest(){ From 78fdb64bdf4779be00b665f2768184167faaa2bb Mon Sep 17 00:00:00 2001 From: Mei Chang van der Werff Date: Sat, 10 Jan 2026 19:50:31 +0100 Subject: [PATCH 5/8] added test to improve coverage --- .../java/client/scenes/PrintExportTest.java | 30 ++++++++++++++++--- 1 file changed, 26 insertions(+), 4 deletions(-) diff --git a/client/src/test/java/client/scenes/PrintExportTest.java b/client/src/test/java/client/scenes/PrintExportTest.java index 6b48be7..d56d680 100644 --- a/client/src/test/java/client/scenes/PrintExportTest.java +++ b/client/src/test/java/client/scenes/PrintExportTest.java @@ -17,13 +17,15 @@ import java.util.List; import static org.junit.jupiter.api.Assertions.*; public class PrintExportTest { - + @TempDir + Path tempDir; @Test public void buildRecipeTextTest(){ List ingredients = new ArrayList<>(); ingredients.add(DefaultValueFactory.getDefaultVagueIngredient("Banana")); ingredients.add(DefaultValueFactory.getDefaultVagueIngredient("Bread")); + final long testRecipeId = 1234L; List preparationSteps = new ArrayList<>(); preparationSteps.add("Mix Ingredients"); @@ -38,11 +40,8 @@ public class PrintExportTest { 1: Mix Ingredients 2: Heat in Oven """, PrintExportService.buildRecipeText(recipe1)); - } - @TempDir - Path tempDir; @Test public void validateFolderWithValidFolderTest(){ assertDoesNotThrow(() -> PrintExportService.validateFolder(tempDir)); @@ -63,4 +62,27 @@ public class PrintExportTest { assertEquals("Given path is not a folder", i.getMessage()); } + @Test + public void succesExportTest() throws IOException { + String data = "recipe data"; + String fileName = "succes.txt"; + Path filePath = tempDir.resolve(fileName); + + PrintExportService.exportToFile(data,tempDir,fileName); + + assertTrue(Files.exists(filePath)); + assertEquals(data, Files.readString(filePath)); + } + + @Test + public void failExportTest(){ + String data = "recipe data"; + String fileName = "succes.txt"; + Path filePath = tempDir.resolve("fail/failDir"); + + IllegalArgumentException i = assertThrows(IllegalArgumentException.class, + ()->PrintExportService.exportToFile(data,filePath,fileName)); + assertEquals("Folder does not exist", i.getMessage()); + } + } From 30635b4a219474d3ace7945f729033086aae9660 Mon Sep 17 00:00:00 2001 From: Mei Chang van der Werff Date: Sat, 10 Jan 2026 20:01:06 +0100 Subject: [PATCH 6/8] added tests to configTest class to improve coverage --- .../test/java/client/scenes/ConfigTest.java | 41 +++++++++++++++---- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/client/src/test/java/client/scenes/ConfigTest.java b/client/src/test/java/client/scenes/ConfigTest.java index 3ba44ff..812dd19 100644 --- a/client/src/test/java/client/scenes/ConfigTest.java +++ b/client/src/test/java/client/scenes/ConfigTest.java @@ -1,6 +1,7 @@ package client.scenes; import client.utils.Config; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import java.util.ArrayList; @@ -8,27 +9,30 @@ import java.util.ArrayList; import static org.junit.jupiter.api.Assertions.*; public class ConfigTest { + private Config config; private static final long FAV_LIST_ID_1 = 1234L; private static final long FAV_LIST_ID_2 = 1235L; + @BeforeEach + void setUp(){ + config = new Config(); + config.setLanguage("nl"); + config.setServerUrl("http://localhost:8081"); + } + @Test public void configDefaultValueTest(){ - Config config = new Config(); - assertEquals("en", config.getLanguage()); - assertEquals("http://localhost:8080", config.getServerUrl()); + assertEquals("nl", config.getLanguage()); + assertEquals("http://localhost:8081", config.getServerUrl()); assertTrue(config.getFavourites().isEmpty()); assertTrue(config.getShoppingList().isEmpty()); } @Test public void configGetterTest(){ - Config config = new Config(); - config.setLanguage("nl"); - config.setServerUrl("http://localhost:8081"); - ArrayList x = new ArrayList<>(); x.add("Lava Cake"); x.add("Brownie"); @@ -42,4 +46,27 @@ public class ConfigTest { config.setShoppingList(x); assertEquals(config.getShoppingList(), x); } + + @Test + public void isFavTest(){ + assertFalse(config.isFavourite(FAV_LIST_ID_1)); //not yet fav + + ArrayList y = new ArrayList<>(); + y.add(FAV_LIST_ID_1); + config.setFavourites(y); + + assertTrue(config.isFavourite(FAV_LIST_ID_1)); + } + + @Test + public void removeFavTest(){ + ArrayList y = new ArrayList<>(); + y.add(FAV_LIST_ID_1); + config.setFavourites(y); + + assertTrue(config.isFavourite(FAV_LIST_ID_1)); + + config.removeFavourite(FAV_LIST_ID_1); + assertFalse(config.isFavourite(FAV_LIST_ID_1)); + } } \ No newline at end of file From 625383070da7b81419b8a97f5fb017a59d6203d7 Mon Sep 17 00:00:00 2001 From: Mei Chang van der Werff Date: Sat, 10 Jan 2026 20:01:43 +0100 Subject: [PATCH 7/8] refactor: ConfigServiceTest looks normal again --- .../java/client/scenes/ConfigServiceTest.java | 96 ++++++++----------- 1 file changed, 40 insertions(+), 56 deletions(-) diff --git a/client/src/test/java/client/scenes/ConfigServiceTest.java b/client/src/test/java/client/scenes/ConfigServiceTest.java index ecd8af5..b743339 100644 --- a/client/src/test/java/client/scenes/ConfigServiceTest.java +++ b/client/src/test/java/client/scenes/ConfigServiceTest.java @@ -9,11 +9,15 @@ import java.nio.file.Files; import java.nio.file.Path; import java.util.List; import static org.junit.jupiter.api.Assertions.*; + public class ConfigServiceTest { + @TempDir Path tempDir; + private Path configPath; private ConfigService configService; + @BeforeEach void setUp() throws IOException { configPath = tempDir.resolve("configServiceTest.json"); @@ -25,23 +29,17 @@ public class ConfigServiceTest { assertNotNull(configService.getMapper()); assertNotNull(configService.getConfig()); } + @Test public void constructorFileDNETest(){ Path nonExistentPath = tempDir.resolve("DNE.json"); ConfigService newService = new ConfigService(nonExistentPath); + assertNotNull(newService.getConfig()); - assertEquals("en", newService - .getConfig() - .getLanguage()); - assertEquals("http://localhost:8080", newService. - getConfig().getServerUrl()); - assertTrue(newService.getConfig() - .getFavourites() - .isEmpty()); - assertTrue(newService - .getConfig() - .getShoppingList() - .isEmpty()); + assertEquals("en", newService.getConfig().getLanguage()); + assertEquals("http://localhost:8080", newService.getConfig().getServerUrl()); + assertTrue(newService.getConfig().getFavourites().isEmpty()); + assertTrue(newService.getConfig().getShoppingList().isEmpty()); } @Test public void validJsonLoadTest() throws IOException { @@ -53,66 +51,48 @@ public class ConfigServiceTest { "shoppingList": ["milk", "butter"] } """; + Files.writeString(configPath, json); ConfigService loadedService = new ConfigService(configPath); Config loadedConfig = loadedService.getConfig(); - assertEquals("de", loadedConfig - .getLanguage()); - assertEquals("http://example.com:8080", loadedConfig - .getServerUrl()); - assertEquals(2, loadedConfig - .getFavourites() - .size()); - assertTrue(loadedConfig - .getFavourites() - .contains(123L)); - assertTrue(loadedConfig - .getFavourites() - .contains(456L)); - assertEquals(2, loadedConfig - .getShoppingList() - .size()); - assertTrue(loadedConfig - .getShoppingList() - .contains("milk")); - assertTrue(loadedConfig - .getShoppingList() - .contains("butter")); + + assertEquals("de", loadedConfig.getLanguage()); + assertEquals("http://example.com:8080", loadedConfig.getServerUrl()); + assertEquals(2, loadedConfig.getFavourites().size()); + assertTrue(loadedConfig.getFavourites().contains(123L)); + assertTrue(loadedConfig.getFavourites().contains(456L)); + assertEquals(2, loadedConfig.getShoppingList().size()); + assertTrue(loadedConfig.getShoppingList().contains("milk")); + assertTrue(loadedConfig.getShoppingList().contains("butter")); } @Test public void invalidJsonLoadTest() throws IOException { Files.writeString(configPath, "{ invalid json text"); + assertThrows(RuntimeException.class, () -> { ConfigService corruptedService = new ConfigService(configPath); - corruptedService - .getConfig(); + corruptedService.getConfig(); }); } @Test public void safeTest(){ Config realConfig = new Config(); - realConfig - .setLanguage("de"); - realConfig - .setServerUrl("http://example.com:8080"); - realConfig - .addFavourite(1L); - realConfig - .addFavourite(2L); - realConfig - .setShoppingList(List.of("milk", "bread")); - configService - .setConfig(realConfig); - configService - .save(); + + realConfig.setLanguage("de"); + realConfig.setServerUrl("http://example.com:8080"); + realConfig.addFavourite(1L); + realConfig.addFavourite(2L); + realConfig.setShoppingList(List.of("milk", "bread")); + + configService.setConfig(realConfig); + configService.save(); + ConfigService loadedService = new ConfigService(configPath); - Config loadedConfig = loadedService - .getConfig(); + Config loadedConfig = loadedService.getConfig(); + assertEquals("de", loadedConfig.getLanguage()); - assertEquals("http://example.com:8080", loadedConfig - .getServerUrl()); - assertEquals(2, loadedConfig - .getFavourites().size()); + assertEquals("http://example.com:8080", loadedConfig.getServerUrl()); + assertEquals(2, loadedConfig.getFavourites().size()); assertTrue(loadedConfig.getFavourites().contains(1L)); assertTrue(loadedConfig.getFavourites().contains(2L)); assertEquals(2, loadedConfig.getShoppingList().size()); @@ -122,14 +102,18 @@ public class ConfigServiceTest { @Test public void multipleTimesSaveTest(){ Config realConfig = new Config(); + configService.setConfig(realConfig); configService.save(); + realConfig.setLanguage("de"); configService.save(); realConfig.setServerUrl("http://example.com:8080"); configService.save(); + ConfigService loadedService = new ConfigService(configPath); Config loadedConfig = loadedService.getConfig(); + assertEquals("de", loadedConfig.getLanguage()); assertEquals("http://example.com:8080", loadedConfig.getServerUrl()); } From 4fce3d3551c4f8e826ae0e625553106c444a7f28 Mon Sep 17 00:00:00 2001 From: Mei Chang van der Werff Date: Tue, 13 Jan 2026 16:46:30 +0100 Subject: [PATCH 8/8] fixing my 'fix' --- client/src/main/java/client/utils/Config.java | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/client/src/main/java/client/utils/Config.java b/client/src/main/java/client/utils/Config.java index 0880d82..a70d55c 100644 --- a/client/src/main/java/client/utils/Config.java +++ b/client/src/main/java/client/utils/Config.java @@ -4,10 +4,12 @@ import java.util.ArrayList; import java.util.List; public class Config { - private String language; - private String serverUrl; - private List favourites; - private List shoppingList; + private String language = "en"; + private List recipeLanguages = new ArrayList<>(); + private String serverUrl = "http://localhost:8080"; + + private List favourites = new ArrayList<>(); + private List shoppingList = new ArrayList<>(); public Config() { this.language = "en";