From 0e3aa4128f7ea128f28b897bf25bfafa5b3ab525 Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Wed, 6 Apr 2022 22:59:17 +0200 Subject: [PATCH] #691 - fixed category importer (update icon if an existing icon is found) --- .../database/importer/CategoryImporter.java | 1 + .../importer/CategoryImporterTest.java | 45 ++++++++++++++++--- 2 files changed, 41 insertions(+), 5 deletions(-) diff --git a/src/main/java/de/deadlocker8/budgetmaster/database/importer/CategoryImporter.java b/src/main/java/de/deadlocker8/budgetmaster/database/importer/CategoryImporter.java index 0ee400cce..1b7d42770 100644 --- a/src/main/java/de/deadlocker8/budgetmaster/database/importer/CategoryImporter.java +++ b/src/main/java/de/deadlocker8/budgetmaster/database/importer/CategoryImporter.java @@ -54,6 +54,7 @@ public class CategoryImporter extends ItemImporter<Category> { //category already exists newCategoryID = existingCategory.getID(); + category.setIconReference(existingCategory.getIconReference()); LOGGER.debug(MessageFormat.format("Found matching category with ID: {0} for category \"{1}\".", newCategoryID, category.getName())); } return newCategoryID; diff --git a/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/CategoryImporterTest.java b/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/CategoryImporterTest.java index a74193d78..de51e3ed3 100644 --- a/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/CategoryImporterTest.java +++ b/src/test/java/de/deadlocker8/budgetmaster/unit/database/importer/CategoryImporterTest.java @@ -4,6 +4,8 @@ import de.deadlocker8.budgetmaster.categories.Category; import de.deadlocker8.budgetmaster.categories.CategoryRepository; import de.deadlocker8.budgetmaster.categories.CategoryType; import de.deadlocker8.budgetmaster.database.importer.CategoryImporter; +import de.deadlocker8.budgetmaster.icon.Icon; +import de.deadlocker8.budgetmaster.icon.IconRepository; import de.deadlocker8.budgetmaster.services.EntityType; import de.deadlocker8.budgetmaster.services.ImportResultItem; import org.junit.jupiter.api.Test; @@ -25,6 +27,9 @@ class CategoryImporterTest @Autowired private CategoryRepository categoryRepository; + @Autowired + private IconRepository iconRepository; + @Test void test_importCategories() { @@ -78,18 +83,48 @@ class CategoryImporterTest @Test void test_importCategories_skipExisting_custom() { - final Category category = new Category("Category1", "#ff0000", CategoryType.CUSTOM); - category.setID(3); + final Category categoryExisting= new Category("Category1", "#ff0000", CategoryType.CUSTOM); + categoryExisting.setID(3); + + final Category categoryToImport = new Category("Category1", "#ff0000", CategoryType.CUSTOM); + categoryToImport.setID(15); categoryRepository.save(new Category("existing category 1", "#ffffff", CategoryType.CUSTOM)); categoryRepository.save(new Category("existing category 2", "#ffffff", CategoryType.CUSTOM)); - categoryRepository.save(category); + categoryRepository.save(categoryExisting); final CategoryImporter importer = new CategoryImporter(categoryRepository); - final ImportResultItem resultItem = importer.importItems(List.of(category)); + final ImportResultItem resultItem = importer.importItems(List.of(categoryToImport)); + + final ImportResultItem expected = new ImportResultItem(EntityType.CATEGORY, 1, 1, List.of()); + assertThat(resultItem).isEqualTo(expected); + assertThat(categoryToImport).hasFieldOrPropertyWithValue("ID", 3); + } + + @Test + void test_importCategories_existingCategory_takeExistingIcon() + { + final Icon icon = new Icon("fas fa-icons"); + icon.setID(1); + iconRepository.save(icon); + + final Category categoryExisting = new Category("Category1", "#ff0000", CategoryType.CUSTOM); + categoryExisting.setIconReference(icon); + categoryExisting.setID(3); + + final Category categoryToImport = new Category("Category1", "#ff0000", CategoryType.CUSTOM); + categoryToImport.setID(15); + + categoryRepository.save(categoryExisting); + + final CategoryImporter importer = new CategoryImporter(categoryRepository); + final ImportResultItem resultItem = importer.importItems(List.of(categoryToImport)); final ImportResultItem expected = new ImportResultItem(EntityType.CATEGORY, 1, 1, List.of()); assertThat(resultItem).isEqualTo(expected); - assertThat(category).hasFieldOrPropertyWithValue("ID", 3); + assertThat(categoryToImport) + .hasFieldOrPropertyWithValue("ID", 1) + .hasFieldOrPropertyWithValue("iconReference", icon); + } } \ No newline at end of file -- GitLab