From 569bcd7f26d0ba2a490c8f5f8beba37f204c7e4f Mon Sep 17 00:00:00 2001 From: Robert Goldmann <deadlocker@gmx.de> Date: Mon, 9 May 2022 21:54:51 +0200 Subject: [PATCH] Fixed #702 - sort tags naturally --- .../de/deadlocker8/budgetmaster/tags/Tag.java | 5 ++ .../budgetmaster/tags/TagService.java | 3 +- .../budgetmaster/unit/TagServiceTest.java | 71 +++++++++++++++++++ 3 files changed, 78 insertions(+), 1 deletion(-) create mode 100644 BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TagServiceTest.java diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/tags/Tag.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/tags/Tag.java index e9e8aa26a..6cae028c9 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/tags/Tag.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/tags/Tag.java @@ -60,6 +60,11 @@ public class Tag implements ProvidesID this.name = name; } + public void setReferringTransactions(List<Transaction> referringTransactions) + { + this.referringTransactions = referringTransactions; + } + public List<Transaction> getReferringTransactions() { return referringTransactions; diff --git a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/tags/TagService.java b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/tags/TagService.java index 87f43c724..c35ef92e0 100644 --- a/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/tags/TagService.java +++ b/BudgetMasterServer/src/main/java/de/deadlocker8/budgetmaster/tags/TagService.java @@ -9,6 +9,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.HashMap; +import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -54,7 +55,7 @@ public class TagService implements Resettable, AccessAllEntities<Tag> public Map<String, Integer> getUsageCounts() { - HashMap<String, Integer> usageCounts = new HashMap<>(); + HashMap<String, Integer> usageCounts = new LinkedHashMap<>(); final List<Tag> tags = getAllEntitiesAsc(); for(Tag tag : tags) diff --git a/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TagServiceTest.java b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TagServiceTest.java new file mode 100644 index 000000000..1c58555ad --- /dev/null +++ b/BudgetMasterServer/src/test/java/de/deadlocker8/budgetmaster/unit/TagServiceTest.java @@ -0,0 +1,71 @@ +package de.deadlocker8.budgetmaster.unit; + +import de.deadlocker8.budgetmaster.tags.Tag; +import de.deadlocker8.budgetmaster.tags.TagRepository; +import de.deadlocker8.budgetmaster.tags.TagService; +import de.deadlocker8.budgetmaster.transactions.Transaction; +import de.deadlocker8.budgetmaster.unit.helpers.LocalizedTest; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.InjectMocks; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.springframework.test.context.junit.jupiter.SpringExtension; + +import java.util.ArrayList; +import java.util.List; +import java.util.Map; + +import static org.assertj.core.api.Assertions.assertThat; + +@ExtendWith(SpringExtension.class) +@LocalizedTest +class TagServiceTest +{ + @Mock + private TagRepository tagRepository; + + @InjectMocks + private TagService tagService; + + final Tag tag_1 = new Tag("car stuff"); + final Tag tag_2 = new Tag("fruits"); + final Tag tag_3 = new Tag("10"); + final Tag tag_4 = new Tag("0"); + final Tag tag_5 = new Tag("1"); + final Tag tag_6 = new Tag("Fruits"); + + @Test + void test_getAllTags() + { + List<Tag> tags = new ArrayList<>(List.of(tag_1, tag_2, tag_3, tag_4, tag_5, tag_6)); + + Mockito.when(tagRepository.findAllByOrderByNameAsc()).thenReturn(tags); + + assertThat(tagService.getAllEntitiesAsc()).hasSize(6) + .containsExactly(tag_4, tag_5, tag_3, tag_1, tag_2, tag_6); + } + + @Test + void test_getUsageCounts() + { + tag_1.setReferringTransactions(List.of()); + tag_2.setReferringTransactions(List.of()); + tag_3.setReferringTransactions(List.of()); + tag_4.setReferringTransactions(List.of(new Transaction())); + tag_5.setReferringTransactions(List.of()); + tag_6.setReferringTransactions(List.of()); + + List<Tag> tags = new ArrayList<>(List.of(tag_1, tag_2, tag_3, tag_4, tag_5, tag_6)); + Mockito.when(tagRepository.findAllByOrderByNameAsc()).thenReturn(tags); + + assertThat(tagService.getUsageCounts()) + .hasSize(6) + .containsExactly(Map.entry("0", 1), + Map.entry("1", 0), + Map.entry("10", 0), + Map.entry("car stuff", 0), + Map.entry("fruits", 0), + Map.entry("Fruits", 0)); + } +} -- GitLab