Переглянути джерело

Latex section header new format

Andrew Grant 3 тижнів тому
батько
коміт
f970d21900

+ 2 - 0
src/main/java/scot/carricksoftware/grantswriter/writer/latex/LatexDivisionHeaderImpl.java

@@ -7,10 +7,12 @@ package scot.carricksoftware.grantswriter.writer.latex;
 
 import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
+import org.springframework.stereotype.Component;
 import scot.carricksoftware.grantswriter.constants.LatexConstants;
 import scot.carricksoftware.grantswriter.data.helpers.LatexDivision;
 import scot.carricksoftware.grantswriter.writer.FileWriter;
 
+@Component
 public class LatexDivisionHeaderImpl implements LatexDivisionHeader {
 
     private static final Logger logger = LogManager.getLogger(LatexDivisionHeaderImpl.class);

+ 6 - 14
src/main/java/scot/carricksoftware/grantswriter/writer/latex/LatexSectionHeaderImpl.java

@@ -6,29 +6,21 @@
 package scot.carricksoftware.grantswriter.writer.latex;
 
 import org.springframework.stereotype.Component;
-import scot.carricksoftware.grantswriter.constants.LatexConstants;
-import scot.carricksoftware.grantswriter.data.helpers.LatexDivision;
-import scot.carricksoftware.grantswriter.writer.FileWriter;
-
-import static scot.carricksoftware.grantswriter.constants.LatexLevels.LATEX_SECTION;
+import scot.carricksoftware.grantswriter.constants.LatexLevels;
 
 @Component
 public class LatexSectionHeaderImpl implements LatexSectionHeader {
 
-    private final FileWriter fileWriter;
 
-    private final LatexDivision latexDivision;
+    private final LatexDivisionHeader latexDivisionHeader;
+
+    public LatexSectionHeaderImpl(LatexDivisionHeader latexDivisionHeader) {
 
-    public LatexSectionHeaderImpl(FileWriter fileWriter, LatexDivision latexDivision) {
-        this.fileWriter = fileWriter;
-        this.latexDivision = latexDivision;
+        this.latexDivisionHeader = latexDivisionHeader;
     }
 
     @Override
     public void write(String title) {
-        String sb =  latexDivision.header(LATEX_SECTION) +
-                title +
-                LatexConstants.TERM_END;
-        fileWriter.writeLine(sb);
+        latexDivisionHeader.write(LatexLevels.LATEX_PART, title);
     }
 }

+ 3 - 12
src/test/java/scot/carricksoftware/grantswriter/writer/latex/LatexSectionHeaderTest.java

@@ -10,12 +10,8 @@ import org.junit.jupiter.api.Test;
 import org.junit.jupiter.api.extension.ExtendWith;
 import org.mockito.Mock;
 import org.mockito.junit.jupiter.MockitoExtension;
-import scot.carricksoftware.grantswriter.data.helpers.LatexDivision;
-import scot.carricksoftware.grantswriter.writer.FileWriter;
 
-import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.verify;
-import static org.mockito.Mockito.when;
 import static scot.carricksoftware.grantswriter.GenerateCertificateRandomValues.GetRandomString;
 
 @ExtendWith(MockitoExtension.class)
@@ -24,22 +20,17 @@ class LatexSectionHeaderTest {
     private LatexSectionHeader header;
 
     @Mock
-    private FileWriter fileWriterMock;
-
-    @Mock
-    private LatexDivision latexDivisionMock;
+    private LatexDivisionHeader latexDivisionHeaderMock;
 
     @BeforeEach
     void setUp() {
-        header = new LatexSectionHeaderImpl(fileWriterMock, latexDivisionMock);
+        header = new LatexSectionHeaderImpl(latexDivisionHeaderMock);
     }
 
     @Test
     void writeTest() {
-        when(latexDivisionMock.header(any())).thenReturn("\\section{");
         String title = GetRandomString();
         header.write(title);
-        String requiredString = "\\section{" + title + "}";
-        verify(fileWriterMock).writeLine(requiredString);
+        verify(latexDivisionHeaderMock).write(-1, title);
     }
 }

+ 2 - 0
src/test/java/scot/carricksoftware/grantswriter/writer/latex/parts/people/sections/PersonSectionTest.java

@@ -62,12 +62,14 @@ class PersonSectionTest {
     void writeTest() {
         InOrder inorder = inOrder(
                 personSectionHeaderMock,
+                personSectionContentsWriterMock,
                 clearExistingTimeLineDataMock,
                 gatherTimeLineDataMock,
                 personSubSectionTimeLineWriterMock,
                 personSubSectionReferencesWriterMock);
         personSection.write(personMock);
         inorder.verify(personSectionHeaderMock).write(personMock);
+        inorder.verify(personSectionContentsWriterMock).write(personMock);
         inorder.verify(clearExistingTimeLineDataMock).clear();
         inorder.verify(gatherTimeLineDataMock).gather(personMock);
         inorder.verify(personSubSectionTimeLineWriterMock).write();

+ 101 - 0
src/test/java/scot/carricksoftware/grantswriter/writer/latex/parts/people/subsections/helpers/level2/deathcertificate/GatherDeathCertificateInformantTimeLineDataWhereRegisteredEmptyTest.java

@@ -0,0 +1,101 @@
+/*
+ * Copyright (c) 2025.  Andrew Grant Carrick Software. All rights reserved
+ *
+ */
+
+package scot.carricksoftware.grantswriter.writer.latex.parts.people.subsections.helpers.level2.deathcertificate;
+
+import org.junit.jupiter.api.BeforeEach;
+import org.junit.jupiter.api.Test;
+import org.junit.jupiter.api.extension.ExtendWith;
+import org.mockito.Mock;
+import org.mockito.junit.jupiter.MockitoExtension;
+import scot.carricksoftware.grantswriter.data.DMY;
+import scot.carricksoftware.grantswriter.data.TimeLineData;
+import scot.carricksoftware.grantswriter.domains.certificates.deathcertificate.DeathCertificate;
+import scot.carricksoftware.grantswriter.domains.people.Person;
+import scot.carricksoftware.grantswriter.domains.places.Organisation;
+import scot.carricksoftware.grantswriter.domains.places.Place;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.TreeMap;
+
+import static org.mockito.Mockito.when;
+import static org.testng.Assert.assertTrue;
+import static scot.carricksoftware.grantswriter.GenerateRandomPeopleValues.GetRandomPerson;
+import static scot.carricksoftware.grantswriter.GenerateRandomPlaceValues.GetRandomPlace;
+
+@ExtendWith(MockitoExtension.class)
+class GatherDeathCertificateInformantTimeLineDataWhereRegisteredEmptyTest {
+
+    GatherDeathCertificateInformantTimeLineData gatherDeathCertificateInformantTimeLineData;
+
+    @Mock
+    private TimeLineData timelineDataMock;
+
+    private List<DeathCertificate> deathCertificates;
+
+    private TreeMap<DMY, List<String>> timeLine;
+
+    private Place place;
+
+    private Person deceased;
+
+    private Organisation registrationAuthority;
+
+    private Person informant;
+
+    private String whereRegistered;
+
+    @BeforeEach
+    void setUp() {
+        gatherDeathCertificateInformantTimeLineData = new GatherDeathCertificateInformantTimeLineDataImpl(this.timelineDataMock);
+        deathCertificates = new ArrayList<>();
+
+        DeathCertificate deathCertificate = new DeathCertificate();
+        timeLine = new TreeMap<>();
+        place = GetRandomPlace();
+        registrationAuthority = new Organisation();
+        registrationAuthority.setName(place.getName());
+        deceased = GetRandomPerson();
+        informant = GetRandomPerson();
+        whereRegistered = "";
+        setUpCertificate(deathCertificate);
+        deathCertificates.add(deathCertificate);
+    }
+
+    private void setUpCertificate(DeathCertificate deathCertificate) {
+        deathCertificate.setWhenDied("25/01/1953 01:01");
+        deathCertificate.setWhenRegistered("25/01/1953 01:01");
+
+        deathCertificate.setWhereDied(place);
+        deathCertificate.setDeceased(deceased);
+        deathCertificate.setRegistrationAuthority(registrationAuthority);
+        deathCertificate.setInformant(informant);
+        deathCertificate.setWhereRegistered(whereRegistered);
+    }
+
+    @Test
+    void whereRegisteredEmptyTest() {
+        when(timelineDataMock.getTimeLine()).thenReturn(timeLine);
+        gatherDeathCertificateInformantTimeLineData.gather(deathCertificates);
+        String expected = "Registered the death of " + deceased + " at " + registrationAuthority;
+        assertTrue(timelineContains(expected));
+    }
+
+
+
+    private boolean timelineContains(String expected) {
+        for (Map.Entry<DMY, List<String>> dmyListEntry : timeLine.entrySet()) {
+            List<String> list = dmyListEntry.getValue();
+            if (list.contains(expected)) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+
+}

+ 2 - 0
src/test/java/scot/carricksoftware/grantswriter/writer/latex/parts/people/subsections/helpers/level2/deathcertificate/GatherDeathCertificateInformantTimeLineDataWhereRegisteredTest.java

@@ -97,6 +97,8 @@ class GatherDeathCertificateInformantTimeLineDataWhereRegisteredTest {
         assertTrue(timelineContains(expected));
     }
 
+
+
     private boolean timelineContains(String expected) {
         for (Map.Entry<DMY, List<String>> dmyListEntry : timeLine.entrySet()) {
             List<String> list = dmyListEntry.getValue();