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 e9e8aa26a8030f47d19412ad57ec8f1ed737da0f..6cae028c9ce558bdb2f7be65461a99cd46932b23 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 87f43c724e30721ecb361d60e50902ba444267be..c35ef92e0af5d5eb43e4639e32e64043de2771b8 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 0000000000000000000000000000000000000000..1c58555ad3c049d23161a9cb35ea854b343dae04 --- /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)); + } +}