From 3302041766b219667cf8f2f9303a667ee7f97f51 Mon Sep 17 00:00:00 2001
From: Robert Goldmann <deadlocker@gmx.de>
Date: Thu, 14 Jul 2022 19:48:35 +0200
Subject: [PATCH] #696 - added tests for PersonalizationSettingsContainer

---
 .../PersonalizationSettingsContainerTest.java | 68 +++++++++++++++++++
 1 file changed, 68 insertions(+)
 create mode 100644 BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/settings/containers/PersonalizationSettingsContainerTest.java

diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/settings/containers/PersonalizationSettingsContainerTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/settings/containers/PersonalizationSettingsContainerTest.java
new file mode 100644
index 000000000..c3c01b193
--- /dev/null
+++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/settings/containers/PersonalizationSettingsContainerTest.java
@@ -0,0 +1,68 @@
+package de.deadlocker8.budgetmaster.unit.settings.containers;
+
+import de.deadlocker8.budgetmaster.settings.Settings;
+import de.deadlocker8.budgetmaster.settings.SettingsService;
+import de.deadlocker8.budgetmaster.settings.containers.PersonalizationSettingsContainer;
+import de.deadlocker8.budgetmaster.unit.helpers.LocalizedTest;
+import de.deadlocker8.budgetmaster.utils.LanguageType;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.Mockito;
+import org.springframework.test.context.junit.jupiter.SpringExtension;
+import org.springframework.validation.BeanPropertyBindingResult;
+import org.springframework.validation.Errors;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+
+@ExtendWith(SpringExtension.class)
+@LocalizedTest
+class PersonalizationSettingsContainerTest
+{
+	@Mock
+	private SettingsService settingsService;
+
+	@Test
+	void test_validate_valid()
+	{
+		final PersonalizationSettingsContainer container = new PersonalizationSettingsContainer(LanguageType.ENGLISH.getName(), "€", true, false, 10);
+
+		final Errors errors = new BeanPropertyBindingResult(container, "container");
+		container.validate(errors);
+
+		assertThat(errors.getAllErrors())
+				.isEmpty();
+	}
+
+	@Test
+	void test_fixBooleans()
+	{
+		final PersonalizationSettingsContainer container = new PersonalizationSettingsContainer(LanguageType.ENGLISH.getName(), "€", null, null, 10);
+
+		container.fixBooleans();
+
+		assertThat(container)
+				.hasFieldOrPropertyWithValue("useDarkTheme", false)
+				.hasFieldOrPropertyWithValue("showCategoriesAsCircles", false);
+	}
+
+
+	@Test
+	void test_updateSettings()
+	{
+		final Settings defaultSettings = Settings.getDefault();
+
+		Mockito.when(settingsService.getSettings()).thenReturn(defaultSettings);
+
+		final PersonalizationSettingsContainer container = new PersonalizationSettingsContainer(LanguageType.ENGLISH.getName(), "€", true, true, 10);
+		final Settings updatedSettings = container.updateSettings(settingsService);
+
+		assertThat(updatedSettings)
+				.hasFieldOrPropertyWithValue("language", LanguageType.ENGLISH)
+				.hasFieldOrPropertyWithValue("currency", "€")
+				.hasFieldOrPropertyWithValue("useDarkTheme", true)
+				.hasFieldOrPropertyWithValue("showCategoriesAsCircles", true)
+				.hasFieldOrPropertyWithValue("searchItemsPerPage", 10);
+	}
+}
-- 
GitLab