From 6d0dae72552e61e02bb5b28e7e382ee5159326a5 Mon Sep 17 00:00:00 2001 From: waterflow80 Date: Mon, 7 Aug 2023 23:05:36 +0100 Subject: [PATCH 1/5] added a seqColWriter to automate database handling populate,read,write,clear for tests --- .../repo/SeqColExtendedDataRepository.java | 2 + .../repo/SeqColLevelOneRepository.java | 2 + .../service/SeqColExtendedDataService.java | 14 ++ .../service/SeqColLevelOneService.java | 5 +- .../eva/evaseqcol/service/SeqColService.java | 6 + .../ac/ebi/eva/evaseqcol/io/SeqColWriter.java | 186 ++++++++++++++++++ .../service/SeqColLevelTwoServiceTest.java | 30 ++- .../evaseqcol/service/SeqColServiceTest.java | 98 +-------- 8 files changed, 246 insertions(+), 97 deletions(-) create mode 100644 src/test/java/uk/ac/ebi/eva/evaseqcol/io/SeqColWriter.java diff --git a/src/main/java/uk/ac/ebi/eva/evaseqcol/repo/SeqColExtendedDataRepository.java b/src/main/java/uk/ac/ebi/eva/evaseqcol/repo/SeqColExtendedDataRepository.java index bac8ff9..3557a15 100644 --- a/src/main/java/uk/ac/ebi/eva/evaseqcol/repo/SeqColExtendedDataRepository.java +++ b/src/main/java/uk/ac/ebi/eva/evaseqcol/repo/SeqColExtendedDataRepository.java @@ -25,4 +25,6 @@ public interface SeqColExtendedDataRepository extends JpaRepository> getSeqColExtendedDataByLevel0Digest(@Param("level0Digest") String seqColDigest); public Optional getSeqColExtendedDataEntityByDigest(String digest); + + void removeSeqColExtendedDataEntityByDigest(String digest); } diff --git a/src/main/java/uk/ac/ebi/eva/evaseqcol/repo/SeqColLevelOneRepository.java b/src/main/java/uk/ac/ebi/eva/evaseqcol/repo/SeqColLevelOneRepository.java index 4e2eeb1..a24200b 100644 --- a/src/main/java/uk/ac/ebi/eva/evaseqcol/repo/SeqColLevelOneRepository.java +++ b/src/main/java/uk/ac/ebi/eva/evaseqcol/repo/SeqColLevelOneRepository.java @@ -10,4 +10,6 @@ public interface SeqColLevelOneRepository extends JpaRepository addAll(List seqC return repository.saveAll(seqColExtendedDataList); } + /** + * Remove all seqCol extended data entities that corresponds to the seqCol + * that has the given level0Digest*/ + @Transactional + public void removeSeqColExtendedDataEntities(List extendedDataEntities) { + for (SeqColExtendedDataEntity entity: extendedDataEntities) { + removeSeqColExtendedDataEntityByDigest(entity.getDigest()); + } + } + + public void removeSeqColExtendedDataEntityByDigest(String digest) { + repository.removeSeqColExtendedDataEntityByDigest(digest); + } + /** * Return the extendedData object for the given digest*/ public Optional getExtendedAttributeByDigest(String digest) { diff --git a/src/main/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelOneService.java b/src/main/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelOneService.java index 87bff53..d89e99c 100644 --- a/src/main/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelOneService.java +++ b/src/main/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelOneService.java @@ -34,7 +34,6 @@ public Optional addSequenceCollectionL1(SeqColLevelOneEnti return Optional.of(seqCol); } - public Optional getSeqColLevelOneByDigest(String digest){ SeqColLevelOneEntity seqColL11 = repository.findSeqColLevelOneEntityByDigest(digest); if (seqColL11 != null) { @@ -44,6 +43,10 @@ public Optional getSeqColLevelOneByDigest(String digest){ } } + public void removeSeqColLevelOneByDigest(String digest) { + repository.removeSeqColLevelOneEntityByDigest(digest); + } + public long countSeqColLevelOneEntitiesByDigest(String digest) { return repository.countSeqColLevelOneEntitiesByDigest(digest); } diff --git a/src/main/java/uk/ac/ebi/eva/evaseqcol/service/SeqColService.java b/src/main/java/uk/ac/ebi/eva/evaseqcol/service/SeqColService.java index 2cdcf4b..91d793d 100644 --- a/src/main/java/uk/ac/ebi/eva/evaseqcol/service/SeqColService.java +++ b/src/main/java/uk/ac/ebi/eva/evaseqcol/service/SeqColService.java @@ -94,6 +94,12 @@ public Optional getSeqColByDigestAndLevel(String digest, } } + /** + * Full remove of the seqCol object (level one and its extended data)*/ + public void deleteSeqColByDigest(String digest) { + + } + /** * Fetch and insert all possible seqCol objects for the given assembly accession. * NOTE: All possible seqCol objects means with all possible/provided naming conventions that could be found in the diff --git a/src/test/java/uk/ac/ebi/eva/evaseqcol/io/SeqColWriter.java b/src/test/java/uk/ac/ebi/eva/evaseqcol/io/SeqColWriter.java new file mode 100644 index 0000000..9656626 --- /dev/null +++ b/src/test/java/uk/ac/ebi/eva/evaseqcol/io/SeqColWriter.java @@ -0,0 +1,186 @@ +package uk.ac.ebi.eva.evaseqcol.io; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + + +import uk.ac.ebi.eva.evaseqcol.dus.NCBIAssemblyReportReader; +import uk.ac.ebi.eva.evaseqcol.dus.NCBIAssemblyReportReaderFactory; +import uk.ac.ebi.eva.evaseqcol.dus.NCBIAssemblySequenceReader; +import uk.ac.ebi.eva.evaseqcol.dus.NCBIAssemblySequenceReaderFactory; +import uk.ac.ebi.eva.evaseqcol.entities.AssemblyEntity; +import uk.ac.ebi.eva.evaseqcol.entities.AssemblySequenceEntity; +import uk.ac.ebi.eva.evaseqcol.entities.SeqColEntity; +import uk.ac.ebi.eva.evaseqcol.entities.SeqColExtendedDataEntity; +import uk.ac.ebi.eva.evaseqcol.entities.SeqColLevelOneEntity; +import uk.ac.ebi.eva.evaseqcol.service.SeqColExtendedDataService; +import uk.ac.ebi.eva.evaseqcol.service.SeqColLevelOneService; +import uk.ac.ebi.eva.evaseqcol.service.SeqColService; + +import java.io.File; +import java.io.FileInputStream; +import java.io.FileNotFoundException; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; +import java.util.Optional; + +/** + * This class is responsible for saving and deleting seqCol + * objects to and from the database.*/ +@Component +public class SeqColWriter { + + private static final Logger logger = LoggerFactory.getLogger(SeqColWriter.class); + + private List extendedDataEntitiesUcsc; + + private List extendedDataEntitiesGenbank; + + private SeqColLevelOneEntity levelOneEntityUcsc; + + private SeqColLevelOneEntity levelOneEntityGenbank; + + private final String REPORT_FILE_PATH_1 = "src/test/resources/GCA_000146045.2_R64_assembly_report.txt"; + + private final String SEQUENCES_FILE_PATH_1 = "src/test/resources/GCA_000146045.2_genome_sequence.fna"; + + private static final String GCA_ACCESSION = "GCA_000146045.2"; + + private List insertedSeqColDigests; // Holds the digests of the seqCol objects inserted by this class + + private static InputStreamReader sequencesStreamReader; + + private static InputStream sequencesStream; + + private static InputStreamReader reportStreamReader; + + private static InputStream reportStream; + + + private NCBIAssemblyReportReaderFactory reportReaderFactory; + + private NCBIAssemblyReportReader reportReader; + + + private NCBIAssemblySequenceReaderFactory sequenceReaderFactory; + + private NCBIAssemblySequenceReader sequenceReader; + + + private SeqColLevelOneService levelOneService; + + + private SeqColExtendedDataService extendedDataService; + + + private SeqColService seqColService; + + @Autowired + public SeqColWriter(NCBIAssemblyReportReaderFactory reportReaderFactory, NCBIAssemblySequenceReaderFactory sequenceReaderFactory, + SeqColLevelOneService levelOneService, SeqColExtendedDataService extendedDataService, SeqColService seqColService) { + this.reportReaderFactory = reportReaderFactory; + this.sequenceReaderFactory = sequenceReaderFactory; + this.levelOneService = levelOneService; + this.extendedDataService = extendedDataService; + this.seqColService = seqColService; + } + + /** + * Setup the report reader (assembly report reader), + * the sequences' reader (assembly FASTA file reader) + * and other necessary objects. + * */ + private void setUp() throws FileNotFoundException { + reportStream = new FileInputStream( + new File(REPORT_FILE_PATH_1)); + reportStreamReader = new InputStreamReader(reportStream); + reportReader = reportReaderFactory.build(reportStreamReader); + + sequencesStream = new FileInputStream( + new File(SEQUENCES_FILE_PATH_1)); + sequencesStreamReader = new InputStreamReader(sequencesStream); + sequenceReader = sequenceReaderFactory.build(sequencesStreamReader, GCA_ACCESSION); + + insertedSeqColDigests = new ArrayList<>(); + } + + /** + * Close streams and streams readers*/ + private void tearDown() throws IOException { + reportStream.close(); + reportStreamReader.close(); + sequencesStream.close(); + sequencesStreamReader.close(); + } + + /** + * Save seqCol objects of assembly "GCA_000146045.2" for naming conventions UCSC and GENBANK + * NOTE: The assembly report and the sequences FASTA file for this + * assembly are already downloaded and put into "src/test/resources/" + * //TODO: Update after rebasing onto the addAllPossibleSeqCol from one assembly read (no naming convention should be specified + * */ + public void write() throws IOException { + setUp(); + AssemblyEntity assemblyEntity = reportReader.getAssemblyEntity(); + AssemblySequenceEntity assemblySequenceEntity = sequenceReader.getAssemblySequencesEntity(); + + // Insert seqCol for UCSC naming convention + extendedDataEntitiesUcsc = extendedDataService.constructExtendedSeqColDataList( + assemblyEntity, assemblySequenceEntity, SeqColEntity.NamingConvention.UCSC + ); + levelOneEntityUcsc = levelOneService.constructSeqColLevelOne( + extendedDataEntitiesUcsc, SeqColEntity.NamingConvention.UCSC); + Optional resultDigestUcsc = seqColService.addFullSequenceCollection(levelOneEntityUcsc, extendedDataEntitiesUcsc); + if (resultDigestUcsc.isPresent()) { + logger.info("Successfully inserted seqCol object with the assembly accession " + GCA_ACCESSION + " for " + + "naming convention " + SeqColEntity.NamingConvention.UCSC); + } else { + logger.error("Could not insert seqCol object with the assembly accession " + GCA_ACCESSION + " for " + + "naming convention " + SeqColEntity.NamingConvention.UCSC); + } + insertedSeqColDigests.add(resultDigestUcsc.get()); + + // Insert seqCol for GENBANK naming convention + extendedDataEntitiesGenbank = extendedDataService.constructExtendedSeqColDataList( + assemblyEntity, assemblySequenceEntity, SeqColEntity.NamingConvention.GENBANK + ); + levelOneEntityGenbank = levelOneService.constructSeqColLevelOne( + extendedDataEntitiesGenbank, SeqColEntity.NamingConvention.GENBANK); + Optional resultDigestGenbank = seqColService.addFullSequenceCollection(levelOneEntityGenbank, extendedDataEntitiesGenbank); + if (resultDigestGenbank.isPresent()) { + logger.info("Successfully inserted seqCol object with the assembly accession " + GCA_ACCESSION + " for " + + "naming convention " + SeqColEntity.NamingConvention.GENBANK); + } else { + logger.error("Could not insert seqCol object with the assembly accession " + GCA_ACCESSION + " for " + + "naming convention " + SeqColEntity.NamingConvention.GENBANK); + } + insertedSeqColDigests.add(resultDigestGenbank.get()); + + // Clear streams + tearDown(); + } + + /** + * Remove the inserted seqCol objects from the database. + * NOTE: only remove seqCol objects inserted by this class*/ + @Transactional + public void clearData() { + try { + levelOneService.removeSeqColLevelOneByDigest(levelOneEntityUcsc.getDigest()); + levelOneService.removeSeqColLevelOneByDigest(levelOneEntityGenbank.getDigest()); + extendedDataService.removeSeqColExtendedDataEntities(extendedDataEntitiesUcsc); + extendedDataService.removeSeqColExtendedDataEntities(extendedDataEntitiesGenbank); + } catch (NullPointerException e) { + logger.warn("Could not delete seqCol object. SeqCol object not yet initialized !"); + } + + } + +} diff --git a/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelTwoServiceTest.java b/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelTwoServiceTest.java index a3b25b5..405cd06 100644 --- a/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelTwoServiceTest.java +++ b/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelTwoServiceTest.java @@ -1,13 +1,15 @@ package uk.ac.ebi.eva.evaseqcol.service; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; +import org.springframework.transaction.annotation.Transactional; import uk.ac.ebi.eva.evaseqcol.entities.SeqColLevelTwoEntity; +import uk.ac.ebi.eva.evaseqcol.io.SeqColWriter; +import java.io.IOException; import java.util.Optional; import static org.junit.jupiter.api.Assertions.*; @@ -16,17 +18,29 @@ @ActiveProfiles("seqcol") class SeqColLevelTwoServiceTest { - private String LEVEL_0_DIGEST = "Y2ujWD8fTeC86uKbL22N2jyMYrcX0cN0"; + @Autowired + private SeqColWriter seqColWriter; + + // This is a level 0 digest of the seqCol inserted by the SeqColWriter following the UCSC convention + private String LEVEL_0_DIGEST_UCSC = "RbymmIOGuL3Ki9XbV6fHKkCb316x5Rv9"; + + // This is a level 0 digest of the seqCol inserted by the SeqColWriter following the GENBANK convention + private String LEVEL_0_DIGEST_GENBANK = "eJ8GCVLEVtdnCN4OSqfkf6KoEOK9OUlr"; @Autowired private SeqColLevelTwoService levelTwoService; + @Test - @Disabled - // Disabled on GitHub. You can enable it locally when you have the seqCol with the given digest saved - void getSeqColLevelTwoByDigest() { - Optional levelTwoEntity = levelTwoService.getSeqColLevelTwoByDigest(LEVEL_0_DIGEST); - assertTrue(levelTwoEntity.isPresent()); - assertTrue(levelTwoEntity.get().getLengths().size() > 0); + @Transactional + void getSeqColLevelTwoByDigest() throws IOException { + seqColWriter.write(); + Optional levelTwoEntityUcsc = levelTwoService.getSeqColLevelTwoByDigest(LEVEL_0_DIGEST_UCSC); + Optional levelTwoEntityGenbank = levelTwoService.getSeqColLevelTwoByDigest(LEVEL_0_DIGEST_GENBANK); + assertTrue(levelTwoEntityUcsc.isPresent()); + assertTrue(!levelTwoEntityUcsc.get().getLengths().isEmpty()); + assertTrue(levelTwoEntityGenbank.isPresent()); + assertTrue(!levelTwoEntityGenbank.get().getLengths().isEmpty()); + seqColWriter.clearData(); } } \ No newline at end of file diff --git a/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColServiceTest.java b/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColServiceTest.java index b39710f..79ca0aa 100644 --- a/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColServiceTest.java +++ b/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColServiceTest.java @@ -1,10 +1,6 @@ package uk.ac.ebi.eva.evaseqcol.service; -import org.junit.jupiter.api.AfterEach; -import org.junit.jupiter.api.BeforeEach; -import org.junit.jupiter.api.Disabled; import org.junit.jupiter.api.MethodOrderer; -import org.junit.jupiter.api.Order; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.TestMethodOrder; import org.springframework.beans.factory.annotation.Autowired; @@ -12,29 +8,17 @@ import org.springframework.test.context.ActiveProfiles; import org.springframework.test.context.DynamicPropertyRegistry; import org.springframework.test.context.DynamicPropertySource; +import org.springframework.transaction.annotation.Transactional; import org.testcontainers.containers.PostgreSQLContainer; import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; -import uk.ac.ebi.eva.evaseqcol.dus.NCBIAssemblyReportReader; -import uk.ac.ebi.eva.evaseqcol.dus.NCBIAssemblyReportReaderFactory; -import uk.ac.ebi.eva.evaseqcol.dus.NCBIAssemblySequenceReader; -import uk.ac.ebi.eva.evaseqcol.dus.NCBIAssemblySequenceReaderFactory; -import uk.ac.ebi.eva.evaseqcol.entities.AssemblyEntity; -import uk.ac.ebi.eva.evaseqcol.entities.AssemblySequenceEntity; -import uk.ac.ebi.eva.evaseqcol.entities.SeqColEntity; -import uk.ac.ebi.eva.evaseqcol.entities.SeqColExtendedDataEntity; import uk.ac.ebi.eva.evaseqcol.entities.SeqColLevelOneEntity; import uk.ac.ebi.eva.evaseqcol.entities.SeqColLevelTwoEntity; +import uk.ac.ebi.eva.evaseqcol.io.SeqColWriter; + -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.util.Arrays; -import java.util.List; import java.util.Optional; import static org.junit.jupiter.api.Assertions.*; @@ -45,34 +29,14 @@ @Testcontainers class SeqColServiceTest { - private final String REPORT_FILE_PATH_1 = "src/test/resources/GCA_000146045.2_R64_assembly_report.txt"; - private final String SEQUENCES_FILE_PATH_1 = "src/test/resources/GCA_000146045.2_genome_sequence.fna"; - private static final String GCA_ACCESSION = "GCA_000146045.2"; - - private final String TEST_DIGEST = "7eldYm-sjycc1MDEVSI5jmuNac4BO-eN"; - private static InputStreamReader sequencesStreamReader; - private static InputStream sequencesStream; - - private static InputStreamReader reportStreamReader; - private static InputStream reportStream; - @Autowired - private NCBIAssemblyReportReaderFactory reportReaderFactory; - private NCBIAssemblyReportReader reportReader; + private final String TEST_DIGEST = "eJ8GCVLEVtdnCN4OSqfkf6KoEOK9OUlr"; @Autowired - private NCBIAssemblySequenceReaderFactory sequenceReaderFactory; - private NCBIAssemblySequenceReader sequenceReader; - - - @Autowired - private SeqColLevelOneService levelOneService; - - @Autowired - private SeqColExtendedDataService extendedDataService; + private SeqColService seqColService; @Autowired - private SeqColService seqColService; + private SeqColWriter seqColWriter; @Container @@ -86,57 +50,15 @@ static void dataSourceProperties(DynamicPropertyRegistry registry) { registry.add("spring.jpa.hibernate.ddl-auto", () -> "update"); } - @BeforeEach - void setUp() throws FileNotFoundException { - sequencesStream = new FileInputStream( - new File(SEQUENCES_FILE_PATH_1)); - sequencesStreamReader = new InputStreamReader(sequencesStream); - sequenceReader = sequenceReaderFactory.build(sequencesStreamReader, GCA_ACCESSION); - - reportStream = new FileInputStream( - new File(REPORT_FILE_PATH_1)); - reportStreamReader = new InputStreamReader(reportStream); - reportReader = reportReaderFactory.build(reportStreamReader); - } - - @AfterEach - void tearDown() throws IOException { - reportStream.close(); - reportStreamReader.close(); - sequencesStream.close(); - sequencesStreamReader.close(); - } - - AssemblyEntity getAssemblyEntity() throws IOException { - return reportReader.getAssemblyEntity(); - } - - AssemblySequenceEntity getAssemblySequenceEntity() throws IOException { - return sequenceReader.getAssemblySequencesEntity(); - } - - @Test - @Order(1) - void addSequenceCollectionTest() throws IOException { - AssemblyEntity assemblyEntity = getAssemblyEntity(); - AssemblySequenceEntity assemblySequenceEntity = getAssemblySequenceEntity(); - List extendedDataEntities = extendedDataService.constructExtendedSeqColDataList( - assemblyEntity, assemblySequenceEntity, SeqColEntity.NamingConvention.UCSC - ); - SeqColLevelOneEntity levelOneEntity = levelOneService.constructSeqColLevelOne( - extendedDataEntities, SeqColEntity.NamingConvention.UCSC); - Optional resultDigest = seqColService.addFullSequenceCollection(levelOneEntity, extendedDataEntities); - assertTrue(resultDigest.isPresent()); - } - @Test - //@Order(2) - @Disabled - void getSeqColByDigestAndLevelTest() { + @Transactional + void getSeqColByDigestAndLevelTest() throws IOException { + seqColWriter.write(); Optional levelOneEntity = (Optional) seqColService.getSeqColByDigestAndLevel(TEST_DIGEST, 1); assertTrue(levelOneEntity.isPresent()); Optional levelTwoEntity = (Optional) seqColService.getSeqColByDigestAndLevel(TEST_DIGEST, 2); assertTrue(levelTwoEntity.isPresent()); + seqColWriter.clearData(); } @Test From 868c67e022941e32730599385a8c97a5754b5490 Mon Sep 17 00:00:00 2001 From: waterflow80 Date: Tue, 8 Aug 2023 18:22:11 +0100 Subject: [PATCH 2/5] added a test container for a test --- .../service/SeqColLevelTwoServiceTest.java | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelTwoServiceTest.java b/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelTwoServiceTest.java index 405cd06..33a9ca0 100644 --- a/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelTwoServiceTest.java +++ b/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelTwoServiceTest.java @@ -4,7 +4,12 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; +import org.springframework.test.context.DynamicPropertyRegistry; +import org.springframework.test.context.DynamicPropertySource; import org.springframework.transaction.annotation.Transactional; +import org.testcontainers.containers.PostgreSQLContainer; +import org.testcontainers.junit.jupiter.Container; +import org.testcontainers.junit.jupiter.Testcontainers; import uk.ac.ebi.eva.evaseqcol.entities.SeqColLevelTwoEntity; import uk.ac.ebi.eva.evaseqcol.io.SeqColWriter; @@ -16,6 +21,7 @@ @SpringBootTest @ActiveProfiles("seqcol") +@Testcontainers class SeqColLevelTwoServiceTest { @Autowired @@ -30,6 +36,16 @@ class SeqColLevelTwoServiceTest { @Autowired private SeqColLevelTwoService levelTwoService; + @Container + static PostgreSQLContainer postgreSQLContainer = new PostgreSQLContainer<>("postgres:15.2"); + + @DynamicPropertySource + static void dataSourceProperties(DynamicPropertyRegistry registry) { + registry.add("spring.datasource.url", postgreSQLContainer::getJdbcUrl); + registry.add("spring.datasource.username", postgreSQLContainer::getUsername); + registry.add("spring.datasource.password", postgreSQLContainer::getPassword); + registry.add("spring.jpa.hibernate.ddl-auto", () -> "update"); + } @Test @Transactional From ed026eab7305960c5597559bf7da58e21f718945 Mon Sep 17 00:00:00 2001 From: waterflow80 Date: Tue, 8 Aug 2023 20:20:56 +0100 Subject: [PATCH 3/5] Some tests enhancements - updated the seqColWriter class - added AssemblyDataGenerator to facilitate the creation of AssemblyEntity and AssemblySequenceEntity for tests --- .../repo/SeqColExtendedDataRepository.java | 2 + .../repo/SeqColLevelOneRepository.java | 2 + .../service/SeqColExtendedDataService.java | 7 ++ .../service/SeqColLevelOneService.java | 4 ++ .../eva/evaseqcol/service/SeqColService.java | 12 +++- .../evaseqcol/io/AssemblyDataGenerator.java | 62 +++++++++++++++++ .../ac/ebi/eva/evaseqcol/io/SeqColWriter.java | 21 ++---- .../SeqColExtendedDataServiceTest.java | 68 +++---------------- .../service/SeqColLevelOneServiceTest.java | 57 +++------------- .../service/SeqColLevelTwoServiceTest.java | 16 ++++- .../evaseqcol/service/SeqColServiceTest.java | 19 ++++-- 11 files changed, 141 insertions(+), 129 deletions(-) create mode 100644 src/test/java/uk/ac/ebi/eva/evaseqcol/io/AssemblyDataGenerator.java diff --git a/src/main/java/uk/ac/ebi/eva/evaseqcol/repo/SeqColExtendedDataRepository.java b/src/main/java/uk/ac/ebi/eva/evaseqcol/repo/SeqColExtendedDataRepository.java index 3557a15..42dd953 100644 --- a/src/main/java/uk/ac/ebi/eva/evaseqcol/repo/SeqColExtendedDataRepository.java +++ b/src/main/java/uk/ac/ebi/eva/evaseqcol/repo/SeqColExtendedDataRepository.java @@ -27,4 +27,6 @@ public interface SeqColExtendedDataRepository extends JpaRepository getSeqColExtendedDataEntityByDigest(String digest); void removeSeqColExtendedDataEntityByDigest(String digest); + + void deleteAll(); } diff --git a/src/main/java/uk/ac/ebi/eva/evaseqcol/repo/SeqColLevelOneRepository.java b/src/main/java/uk/ac/ebi/eva/evaseqcol/repo/SeqColLevelOneRepository.java index a24200b..27ff575 100644 --- a/src/main/java/uk/ac/ebi/eva/evaseqcol/repo/SeqColLevelOneRepository.java +++ b/src/main/java/uk/ac/ebi/eva/evaseqcol/repo/SeqColLevelOneRepository.java @@ -12,4 +12,6 @@ public interface SeqColLevelOneRepository extends JpaRepository exte } } + /** + * Remove one extended data entity by its digest. + * NOTE!: The given digest is not the seqCol level 0 digest*/ public void removeSeqColExtendedDataEntityByDigest(String digest) { repository.removeSeqColExtendedDataEntityByDigest(digest); } + public void removeAllSeqColExtendedEntities() { + repository.deleteAll(); + } + /** * Return the extendedData object for the given digest*/ public Optional getExtendedAttributeByDigest(String digest) { diff --git a/src/main/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelOneService.java b/src/main/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelOneService.java index d89e99c..49ee45b 100644 --- a/src/main/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelOneService.java +++ b/src/main/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelOneService.java @@ -47,6 +47,10 @@ public void removeSeqColLevelOneByDigest(String digest) { repository.removeSeqColLevelOneEntityByDigest(digest); } + public void removeAllSeqCols() { + repository.deleteAll(); + } + public long countSeqColLevelOneEntitiesByDigest(String digest) { return repository.countSeqColLevelOneEntitiesByDigest(digest); } diff --git a/src/main/java/uk/ac/ebi/eva/evaseqcol/service/SeqColService.java b/src/main/java/uk/ac/ebi/eva/evaseqcol/service/SeqColService.java index 91d793d..e22b8e2 100644 --- a/src/main/java/uk/ac/ebi/eva/evaseqcol/service/SeqColService.java +++ b/src/main/java/uk/ac/ebi/eva/evaseqcol/service/SeqColService.java @@ -96,8 +96,18 @@ public Optional getSeqColByDigestAndLevel(String digest, /** * Full remove of the seqCol object (level one and its extended data)*/ - public void deleteSeqColByDigest(String digest) { + @Transactional + public void deleteFullSeqCol(String digest, List extendedDataEntities) { + levelOneService.removeSeqColLevelOneByDigest(digest); + extendedDataService.removeSeqColExtendedDataEntities(extendedDataEntities); + } + /** + * Remove all seqCol entities (level 1 and the extended entities) from the database*/ + @Transactional + public void removeAllSeqCol() { + levelOneService.removeAllSeqCols(); + extendedDataService.removeAllSeqColExtendedEntities(); } /** diff --git a/src/test/java/uk/ac/ebi/eva/evaseqcol/io/AssemblyDataGenerator.java b/src/test/java/uk/ac/ebi/eva/evaseqcol/io/AssemblyDataGenerator.java new file mode 100644 index 0000000..091519d --- /dev/null +++ b/src/test/java/uk/ac/ebi/eva/evaseqcol/io/AssemblyDataGenerator.java @@ -0,0 +1,62 @@ +package uk.ac.ebi.eva.evaseqcol.io; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Component; + +import uk.ac.ebi.eva.evaseqcol.dus.NCBIAssemblyReportReader; +import uk.ac.ebi.eva.evaseqcol.dus.NCBIAssemblyReportReaderFactory; +import uk.ac.ebi.eva.evaseqcol.dus.NCBIAssemblySequenceReader; +import uk.ac.ebi.eva.evaseqcol.dus.NCBIAssemblySequenceReaderFactory; +import uk.ac.ebi.eva.evaseqcol.entities.AssemblyEntity; +import uk.ac.ebi.eva.evaseqcol.entities.AssemblySequenceEntity; + +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.io.InputStream; +import java.io.InputStreamReader; + +@Component +public class AssemblyDataGenerator { + + private final String REPORT_FILE_PATH = "src/test/resources/GCA_000146045.2_R64_assembly_report.txt"; + private final String SEQUENCES_FILE_PATH = "src/test/resources/GCA_000146045.2_genome_sequence.fna"; + + private static final String GCA_ACCESSION = "GCA_000146045.2"; + + private static InputStreamReader sequencesStreamReader; + private static InputStream sequencesStream; + + private static InputStreamReader reportStreamReader; + private static InputStream reportStream; + + @Autowired + private NCBIAssemblyReportReaderFactory reportReaderFactory; + private NCBIAssemblyReportReader reportReader; + + @Autowired + private NCBIAssemblySequenceReaderFactory sequenceReaderFactory; + private NCBIAssemblySequenceReader sequenceReader; + + /** + * Return the Assembly entity that corresponds to the assembly report located + * under REPORT_FILE_PATH (see variable content above) having as assembly accession: "GCA_000146045.2"*/ + public AssemblyEntity generateAssemblyEntity() throws IOException { + reportStream = new FileInputStream( + new File(REPORT_FILE_PATH)); + reportStreamReader = new InputStreamReader(reportStream); + reportReader = reportReaderFactory.build(reportStreamReader); + return reportReader.getAssemblyEntity(); + } + + /** + * Return the AssemblySequenceEntity that corresponds to the sequences FASTA file + * located under SEQUENCES_FILE_PATH (see variable content above) having as assembly accession: "GCA_000146045.2"*/ + public AssemblySequenceEntity generateAssemblySequenceEntity() throws IOException { + sequencesStream = new FileInputStream( + new File(SEQUENCES_FILE_PATH)); + sequencesStreamReader = new InputStreamReader(sequencesStream); + sequenceReader = sequenceReaderFactory.build(sequencesStreamReader, GCA_ACCESSION); + return sequenceReader.getAssemblySequencesEntity(); + } +} diff --git a/src/test/java/uk/ac/ebi/eva/evaseqcol/io/SeqColWriter.java b/src/test/java/uk/ac/ebi/eva/evaseqcol/io/SeqColWriter.java index 9656626..7d7a0ec 100644 --- a/src/test/java/uk/ac/ebi/eva/evaseqcol/io/SeqColWriter.java +++ b/src/test/java/uk/ac/ebi/eva/evaseqcol/io/SeqColWriter.java @@ -121,10 +121,9 @@ private void tearDown() throws IOException { } /** - * Save seqCol objects of assembly "GCA_000146045.2" for naming conventions UCSC and GENBANK - * NOTE: The assembly report and the sequences FASTA file for this - * assembly are already downloaded and put into "src/test/resources/" - * //TODO: Update after rebasing onto the addAllPossibleSeqCol from one assembly read (no naming convention should be specified + * Save seqCol objects of assembly GCA_ACCESSION (see variable content above) for naming conventions UCSC and GENBANK + * NOTE: The assembly report and the sequences FASTA file for this assembly are already downloaded + * and put into "src/test/resources/" * */ public void write() throws IOException { setUp(); @@ -168,19 +167,11 @@ public void write() throws IOException { } /** - * Remove the inserted seqCol objects from the database. - * NOTE: only remove seqCol objects inserted by this class*/ + * Remove all inserted seqCol objects from the database. + * */ @Transactional public void clearData() { - try { - levelOneService.removeSeqColLevelOneByDigest(levelOneEntityUcsc.getDigest()); - levelOneService.removeSeqColLevelOneByDigest(levelOneEntityGenbank.getDigest()); - extendedDataService.removeSeqColExtendedDataEntities(extendedDataEntitiesUcsc); - extendedDataService.removeSeqColExtendedDataEntities(extendedDataEntitiesGenbank); - } catch (NullPointerException e) { - logger.warn("Could not delete seqCol object. SeqCol object not yet initialized !"); - } - + seqColService.removeAllSeqCol(); } } diff --git a/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColExtendedDataServiceTest.java b/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColExtendedDataServiceTest.java index 26548a9..3cb53d1 100644 --- a/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColExtendedDataServiceTest.java +++ b/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColExtendedDataServiceTest.java @@ -12,22 +12,13 @@ import org.testcontainers.junit.jupiter.Container; import org.testcontainers.junit.jupiter.Testcontainers; -import uk.ac.ebi.eva.evaseqcol.dus.NCBIAssemblyReportReader; -import uk.ac.ebi.eva.evaseqcol.dus.NCBIAssemblyReportReaderFactory; -import uk.ac.ebi.eva.evaseqcol.dus.NCBIAssemblySequenceReader; -import uk.ac.ebi.eva.evaseqcol.dus.NCBIAssemblySequenceReaderFactory; import uk.ac.ebi.eva.evaseqcol.entities.AssemblyEntity; import uk.ac.ebi.eva.evaseqcol.entities.AssemblySequenceEntity; import uk.ac.ebi.eva.evaseqcol.entities.SeqColEntity; import uk.ac.ebi.eva.evaseqcol.entities.SeqColExtendedDataEntity; -import uk.ac.ebi.eva.evaseqcol.refget.SHA512ChecksumCalculator; +import uk.ac.ebi.eva.evaseqcol.io.AssemblyDataGenerator; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; import java.util.Optional; import static org.junit.jupiter.api.Assertions.*; @@ -37,33 +28,15 @@ @Testcontainers class SeqColExtendedDataServiceTest { - - private final String REPORT_FILE_PATH_1 = "src/test/resources/GCA_000146045.2_R64_assembly_report.txt"; - private final String SEQUENCES_FILE_PATH_1 = "src/test/resources/GCA_000146045.2_genome_sequence.fna"; - //private final String REPORT_FILE_PATH_2 = "src/test/resources/GCF_000001765.3_Dpse_3.0_assembly_report.txt"; - //private final String SEQUENCES_FILE_PATH_2 = "src/test/resources/GCF_000001765.3_genome_sequence.fna"; // Reduced to Only 9 sequences - - private static final String GCA_ACCESSION = "GCA_000146045.2"; - //private static final String GCF_ACCESSION = "GCF_000001765.3"; - private static InputStreamReader sequencesStreamReader; - private static InputStream sequencesStream; - - private static InputStreamReader reportStreamReader; - private static InputStream reportStream; - @Autowired - private NCBIAssemblyReportReaderFactory reportReaderFactory; - private NCBIAssemblyReportReader reportReader; + private AssemblyDataGenerator assemblyDataGenerator; - @Autowired - private NCBIAssemblySequenceReaderFactory sequenceReaderFactory; - private NCBIAssemblySequenceReader sequenceReader; + private AssemblyEntity assemblyEntity; + private AssemblySequenceEntity assemblySequenceEntity; @Autowired private SeqColExtendedDataService extendedDataService; - private SHA512ChecksumCalculator sha512ChecksumCalculator = new SHA512ChecksumCalculator(); - @Container static PostgreSQLContainer postgreSQLContainer = new PostgreSQLContainer<>("postgres:15.2"); @@ -76,40 +49,21 @@ static void dataSourceProperties(DynamicPropertyRegistry registry) { } @BeforeEach - void setUp() throws FileNotFoundException { - sequencesStream = new FileInputStream( - new File(SEQUENCES_FILE_PATH_1)); - sequencesStreamReader = new InputStreamReader(sequencesStream); - sequenceReader = sequenceReaderFactory.build(sequencesStreamReader, GCA_ACCESSION); - - reportStream = new FileInputStream( - new File(REPORT_FILE_PATH_1)); - reportStreamReader = new InputStreamReader(reportStream); - reportReader = reportReaderFactory.build(reportStreamReader); + void setUp() throws IOException { + assemblyEntity = assemblyDataGenerator.generateAssemblyEntity(); + assemblySequenceEntity = assemblyDataGenerator.generateAssemblySequenceEntity(); } @AfterEach - void tearDown() throws IOException { - reportStream.close(); - reportStreamReader.close(); - sequencesStream.close(); - sequencesStreamReader.close(); - } - - AssemblyEntity getAssemblyEntity() throws IOException { - return reportReader.getAssemblyEntity(); - } - - AssemblySequenceEntity getAssemblySequenceEntity() throws IOException { - return sequenceReader.getAssemblySequencesEntity(); + void tearDown() { + assemblyEntity = null; // May speed up the object deletion by the garbage collector + assemblySequenceEntity = null; // May speed up the object deletion by the garbage collector } @Test /** * Adding multiple seqCol extended data objects*/ - void addSeqColExtendedData() throws IOException { - AssemblyEntity assemblyEntity = getAssemblyEntity(); - AssemblySequenceEntity assemblySequenceEntity = getAssemblySequenceEntity(); + void addSeqColExtendedData() { assertNotNull(assemblyEntity); assertEquals(assemblySequenceEntity.getSequences().size(), assemblyEntity.getChromosomes().size()); SeqColExtendedDataEntity seqColLengthsObject = SeqColExtendedDataEntity.constructSeqColLengthsObject(assemblyEntity); diff --git a/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelOneServiceTest.java b/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelOneServiceTest.java index 3a17935..8e6cf39 100644 --- a/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelOneServiceTest.java +++ b/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelOneServiceTest.java @@ -23,6 +23,7 @@ import uk.ac.ebi.eva.evaseqcol.entities.SeqColExtendedDataEntity; import uk.ac.ebi.eva.evaseqcol.digests.DigestCalculator; import uk.ac.ebi.eva.evaseqcol.entities.SeqColLevelTwoEntity; +import uk.ac.ebi.eva.evaseqcol.io.AssemblyDataGenerator; import java.io.File; import java.io.FileInputStream; @@ -41,26 +42,11 @@ @Testcontainers class SeqColLevelOneServiceTest { - private final String REPORT_FILE_PATH_1 = "src/test/resources/GCA_000146045.2_R64_assembly_report.txt"; - private final String SEQUENCES_FILE_PATH_1 = "src/test/resources/GCA_000146045.2_genome_sequence.fna"; - private static final String GCA_ACCESSION = "GCA_000146045.2"; - //private final String REPORT_FILE_PATH_2 = "src/test/resources/GCF_000001765.3_Dpse_3.0_assembly_report.txt"; - //private final String SEQUENCES_FILE_PATH_2 = "src/test/resources/GCF_000001765.3_genome_sequence.fna"; - - //private static final String GCF_ACCESSION = "GCF_000001765.3"; - private static InputStreamReader sequencesStreamReader; - private static InputStream sequencesStream; - - private static InputStreamReader reportStreamReader; - private static InputStream reportStream; - @Autowired - private NCBIAssemblyReportReaderFactory reportReaderFactory; - private NCBIAssemblyReportReader reportReader; + private AssemblyDataGenerator assemblyDataGenerator; - @Autowired - private NCBIAssemblySequenceReaderFactory sequenceReaderFactory; - private NCBIAssemblySequenceReader sequenceReader; + private AssemblyEntity assemblyEntity; + private AssemblySequenceEntity assemblySequenceEntity; @Autowired private SeqColExtendedDataService seqColExtendedDataService; @@ -71,8 +57,6 @@ class SeqColLevelOneServiceTest { @Autowired private SeqColLevelTwoService levelTwoService; - private final DigestCalculator digestCalculator = new DigestCalculator(); - @Container static PostgreSQLContainer postgreSQLContainer = new PostgreSQLContainer<>("postgres:15.2"); @@ -85,39 +69,20 @@ static void dataSourceProperties(DynamicPropertyRegistry registry) { } @BeforeEach - void setUp() throws FileNotFoundException { - sequencesStream = new FileInputStream( - new File(SEQUENCES_FILE_PATH_1)); - sequencesStreamReader = new InputStreamReader(sequencesStream); - sequenceReader = sequenceReaderFactory.build(sequencesStreamReader, GCA_ACCESSION); - - reportStream = new FileInputStream( - new File(REPORT_FILE_PATH_1)); - reportStreamReader = new InputStreamReader(reportStream); - reportReader = reportReaderFactory.build(reportStreamReader); + void setUp() throws IOException { + assemblyEntity = assemblyDataGenerator.generateAssemblyEntity(); + assemblySequenceEntity = assemblyDataGenerator.generateAssemblySequenceEntity(); } @AfterEach - void tearDown() throws IOException { - reportStream.close(); - reportStreamReader.close(); - sequencesStream.close(); - sequencesStreamReader.close(); - } - - AssemblyEntity getAssemblyEntity() throws IOException { - return reportReader.getAssemblyEntity(); - } - - AssemblySequenceEntity getAssemblySequenceEntity() throws IOException { - return sequenceReader.getAssemblySequencesEntity(); + void tearDown() { + assemblyEntity = null; // May speed up the object deletion by the garbage collector + assemblySequenceEntity = null; // May speed up the object deletion by the garbage collector } @Test void constructSeqColL1Test() throws IOException { // Construct seqCol L1 out of a L2 seqCol object - AssemblyEntity assemblyEntity = getAssemblyEntity(); - AssemblySequenceEntity assemblySequenceEntity = getAssemblySequenceEntity(); List extendedDataEntities = seqColExtendedDataService.constructExtendedSeqColDataList( assemblyEntity, assemblySequenceEntity, SeqColEntity.NamingConvention.GENBANK ); @@ -130,8 +95,6 @@ void constructSeqColL1Test() throws IOException { @Test void addSequenceCollectionL1() throws IOException { - AssemblyEntity assemblyEntity = getAssemblyEntity(); - AssemblySequenceEntity assemblySequenceEntity = getAssemblySequenceEntity(); List extendedDataEntities = seqColExtendedDataService.constructExtendedSeqColDataList( assemblyEntity, assemblySequenceEntity, SeqColEntity.NamingConvention.GENBANK ); // Contains the list of names, lengths and sequences exploded diff --git a/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelTwoServiceTest.java b/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelTwoServiceTest.java index 33a9ca0..08e9d9f 100644 --- a/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelTwoServiceTest.java +++ b/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColLevelTwoServiceTest.java @@ -1,5 +1,7 @@ package uk.ac.ebi.eva.evaseqcol.service; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; @@ -47,16 +49,24 @@ static void dataSourceProperties(DynamicPropertyRegistry registry) { registry.add("spring.jpa.hibernate.ddl-auto", () -> "update"); } + @BeforeEach + void setUp() throws IOException { + seqColWriter.write(); + } + + @AfterEach + void tearDown() { + seqColWriter.clearData(); + } + @Test @Transactional - void getSeqColLevelTwoByDigest() throws IOException { - seqColWriter.write(); + void getSeqColLevelTwoByDigest() { Optional levelTwoEntityUcsc = levelTwoService.getSeqColLevelTwoByDigest(LEVEL_0_DIGEST_UCSC); Optional levelTwoEntityGenbank = levelTwoService.getSeqColLevelTwoByDigest(LEVEL_0_DIGEST_GENBANK); assertTrue(levelTwoEntityUcsc.isPresent()); assertTrue(!levelTwoEntityUcsc.get().getLengths().isEmpty()); assertTrue(levelTwoEntityGenbank.isPresent()); assertTrue(!levelTwoEntityGenbank.get().getLengths().isEmpty()); - seqColWriter.clearData(); } } \ No newline at end of file diff --git a/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColServiceTest.java b/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColServiceTest.java index 79ca0aa..df96121 100644 --- a/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColServiceTest.java +++ b/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColServiceTest.java @@ -1,8 +1,8 @@ package uk.ac.ebi.eva.evaseqcol.service; -import org.junit.jupiter.api.MethodOrderer; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.junit.jupiter.api.TestMethodOrder; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.ActiveProfiles; @@ -24,7 +24,6 @@ import static org.junit.jupiter.api.Assertions.*; @SpringBootTest -@TestMethodOrder(MethodOrderer.OrderAnnotation.class) @ActiveProfiles("seqcol") @Testcontainers class SeqColServiceTest { @@ -50,15 +49,23 @@ static void dataSourceProperties(DynamicPropertyRegistry registry) { registry.add("spring.jpa.hibernate.ddl-auto", () -> "update"); } + @BeforeEach + void setUp() throws IOException { + seqColWriter.write(); // This will write some seqCol objects to the database + } + + @AfterEach + void tearDown() { + seqColWriter.clearData(); + } + @Test @Transactional - void getSeqColByDigestAndLevelTest() throws IOException { - seqColWriter.write(); + void getSeqColByDigestAndLevelTest() { Optional levelOneEntity = (Optional) seqColService.getSeqColByDigestAndLevel(TEST_DIGEST, 1); assertTrue(levelOneEntity.isPresent()); Optional levelTwoEntity = (Optional) seqColService.getSeqColByDigestAndLevel(TEST_DIGEST, 2); assertTrue(levelTwoEntity.isPresent()); - seqColWriter.clearData(); } @Test From a40c8dde79573398293430073506420daaa7e42e Mon Sep 17 00:00:00 2001 From: waterflow80 Date: Tue, 8 Aug 2023 21:01:16 +0100 Subject: [PATCH 4/5] clean up --- src/test/java/uk/ac/ebi/eva/evaseqcol/io/SeqColWriter.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/uk/ac/ebi/eva/evaseqcol/io/SeqColWriter.java b/src/test/java/uk/ac/ebi/eva/evaseqcol/io/SeqColWriter.java index 7d7a0ec..3b41aec 100644 --- a/src/test/java/uk/ac/ebi/eva/evaseqcol/io/SeqColWriter.java +++ b/src/test/java/uk/ac/ebi/eva/evaseqcol/io/SeqColWriter.java @@ -169,7 +169,6 @@ public void write() throws IOException { /** * Remove all inserted seqCol objects from the database. * */ - @Transactional public void clearData() { seqColService.removeAllSeqCol(); } From 83588ee68dc70df641f64545e0fd1af8afc02b31 Mon Sep 17 00:00:00 2001 From: waterflow80 Date: Sat, 12 Aug 2023 23:54:57 +0100 Subject: [PATCH 5/5] clean up --- .../java/uk/ac/ebi/eva/evaseqcol/service/SeqColServiceTest.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColServiceTest.java b/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColServiceTest.java index df96121..43a093a 100644 --- a/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColServiceTest.java +++ b/src/test/java/uk/ac/ebi/eva/evaseqcol/service/SeqColServiceTest.java @@ -19,6 +19,8 @@ import java.io.IOException; +import java.util.Arrays; +import java.util.List; import java.util.Optional; import static org.junit.jupiter.api.Assertions.*;