/* * Copyright (c) 2025. Andrew Grant Carrick Software. All rights reserved * */ package scot.carricksoftware.grantswriter.data; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.util.LinkedMultiValueMap; import scot.carricksoftware.grantswriter.domains.census.Census; import scot.carricksoftware.grantswriter.domains.census.CensusEntry; import scot.carricksoftware.grantswriter.domains.places.Place; import scot.carricksoftware.grantswriter.enums.census.CensusDate; import java.util.ArrayList; import java.util.Collection; import java.util.List; import java.util.SortedSet; import static org.junit.jupiter.api.Assertions.assertTrue; import static scot.carricksoftware.grantswriter.GenerateCertificateRandomValues.GetRandomString; import static scot.carricksoftware.grantswriter.GenerateRandomPlaceValues.GetRandomPlace; @ExtendWith(MockitoExtension.class) public class TimelineDataAddTest { @SuppressWarnings({"unused"}) private TimelineData timelineData; private List censusEntryList; private CensusEntry censusEntry; Census census; @BeforeEach void setUp() { timelineData = new TimelineDataImpl(); Place place = GetRandomPlace(); census = new Census(); census.setPlace(place); census.setCensusDate(CensusDate.CENSUS_1861); censusEntry = new CensusEntry(); censusEntry.setCensus(census); censusEntryList = new ArrayList<>(); censusEntryList.add(censusEntry); } @Test void placeTest() { Place place = GetRandomPlace(); census.setPlace(place); timelineData.add(censusEntryList); LinkedMultiValueMap timeline = timelineData.getTimeline(); String required = "Recorded as being at " + place; assertTrue(isFound(timeline, required)); } @Test void occupationTest() { String occupation = GetRandomString(); censusEntry.setPersonalOccupation(occupation); timelineData.add(censusEntryList); LinkedMultiValueMap timeline = timelineData.getTimeline(); String required = "Occupation recorded as " + occupation; assertTrue(isFound(timeline, required)); } private boolean isFound(LinkedMultiValueMap timeline, String required) { boolean found = false; Collection> test = timeline.values(); for (List list : test) { for (String s : list) { if (s.equals(required)) { found = true; break; } } } return found; } @Test void refsTest() { timelineData.add(censusEntryList); SortedSet refs = timelineData.getRefs(); assertTrue(refs.contains(censusEntry.getCensus().toString())); } }