From 2d5d11645df95ad01b4b15bf851e04bd18f5115a Mon Sep 17 00:00:00 2001 From: Viktor Lofgren Date: Wed, 6 Dec 2023 19:00:29 +0100 Subject: [PATCH] (warc) Refactor WarcSideloaderTest to not rely on specific test files on the computer --- .../sideload/warc/WarcSideloaderTest.java | 58 ++++++++++++++----- 1 file changed, 43 insertions(+), 15 deletions(-) diff --git a/code/processes/converting-process/src/test/java/nu/marginalia/converting/sideload/warc/WarcSideloaderTest.java b/code/processes/converting-process/src/test/java/nu/marginalia/converting/sideload/warc/WarcSideloaderTest.java index dfa3c972..4e9fb406 100644 --- a/code/processes/converting-process/src/test/java/nu/marginalia/converting/sideload/warc/WarcSideloaderTest.java +++ b/code/processes/converting-process/src/test/java/nu/marginalia/converting/sideload/warc/WarcSideloaderTest.java @@ -5,33 +5,61 @@ import com.google.inject.Guice; import nu.marginalia.converting.ConverterModule; import nu.marginalia.converting.processor.ConverterDomainTypes; import nu.marginalia.converting.sideload.SideloaderProcessing; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.Mockito; +import org.netpreserve.jwarc.WarcWriter; import java.io.IOException; +import java.net.URI; +import java.net.URISyntaxException; +import java.nio.file.Files; import java.nio.file.Path; import static org.mockito.Mockito.when; -class WarcSideloaderTest { - @Test - public void test() throws IOException { +class WarcSideloaderTest extends AbstractModule { + SideloaderProcessing processing; + + Path warcFile; + @BeforeEach + public void setUp() throws IOException { + processing = Guice.createInjector(new ConverterModule(), this) + .getInstance(SideloaderProcessing.class); + warcFile = Files.createTempFile(getClass().getSimpleName(), ".warc.gz"); + } + + @AfterEach + public void tearDown() throws IOException { + Files.deleteIfExists(warcFile); + } + + public void configure() { var domainTypesMock = Mockito.mock(ConverterDomainTypes.class); when(domainTypesMock.isBlog(Mockito.any())).thenReturn(false); - var processing = Guice.createInjector(new ConverterModule(), - new AbstractModule() { - public void configure() { - bind(ConverterDomainTypes.class).toInstance(domainTypesMock); - } - } - ) - .getInstance(SideloaderProcessing.class); + bind(ConverterDomainTypes.class).toInstance(domainTypesMock); + } - var sideloader = new WarcSideloader(Path.of("/home/vlofgren/marginalia.warc.gz"), processing); - var domain = sideloader.getDomain(); - System.out.println(domain); - sideloader.getDocumentsStream().forEachRemaining(System.out::println); + @Test + public void test() throws IOException { + try (var writer = new WarcWriter(Files.newOutputStream(warcFile))) { + writer.fetch(new URI("https://www.marginalia.nu/")); + writer.fetch(new URI("https://www.marginalia.nu/log/93_atags/")); + writer.fetch(new URI("https://www.marginalia.nu/links/")); + } catch (URISyntaxException e) { + throw new RuntimeException(e); + } + + try (var sideloader = new WarcSideloader(warcFile, processing)) { + + var domain = sideloader.getDomain(); + System.out.println(domain); + sideloader.getDocumentsStream().forEachRemaining(System.out::println); + } catch (Exception e) { + throw new RuntimeException(e); + } } } \ No newline at end of file