package org.jabref.logic.importer.fileformat;
import java.io.IOException;
import java.io.InputStream;
import java.net.URISyntaxException;
import java.nio.charset.StandardCharsets;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.Arrays;
import java.util.List;
import org.jabref.logic.bibtex.BibEntryAssert;
import org.jabref.logic.importer.ImportFormatPreferences;
import org.jabref.logic.util.FileExtensions;
import org.jabref.model.entry.BibEntry;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class RepecNepImporterTest {
private RepecNepImporter testImporter;
@Before
public void setUp() {
ImportFormatPreferences importFormatPreferences = mock(ImportFormatPreferences.class);
when(importFormatPreferences.getKeywordSeparator()).thenReturn(',');
testImporter = new RepecNepImporter(importFormatPreferences);
}
@Test
public final void testIsRecognizedFormat() throws IOException, URISyntaxException {
List<String> accepted = Arrays.asList("RepecNepImporterTest1.txt", "RepecNepImporterTest2.txt",
"RepecNepImporterTest3.txt");
for (String s : accepted) {
Path file = Paths.get(RepecNepImporter.class.getResource(s).toURI());
Assert.assertTrue(testImporter.isRecognizedFormat(file, StandardCharsets.UTF_8));
}
}
@Test
public final void testIsNotRecognizedFormat() throws IOException, URISyntaxException {
List<String> notAccepted = Arrays.asList("RepecNep1.xml", "CopacImporterTest1.txt", "RisImporterTest1.ris",
"CopacImporterTest2.txt", "IEEEImport1.txt");
for (String s : notAccepted) {
Path file = Paths.get(RepecNepImporter.class.getResource(s).toURI());
Assert.assertFalse(testImporter.isRecognizedFormat(file, StandardCharsets.UTF_8));
}
}
@Test
public final void testImportEntries1() throws IOException, URISyntaxException {
Path file = Paths.get(RepecNepImporter.class.getResource("RepecNepImporterTest1.txt").toURI());
try (InputStream bibIn = RepecNepImporter.class.getResourceAsStream("RepecNepImporterTest1.bib")) {
List<BibEntry> entries = testImporter.importDatabase(file, StandardCharsets.UTF_8).getDatabase().getEntries();
Assert.assertEquals(1, entries.size());
BibEntryAssert.assertEquals(bibIn, entries.get(0));
}
}
@Test
public final void testImportEntries2() throws IOException, URISyntaxException {
Path file = Paths.get(RepecNepImporter.class.getResource("RepecNepImporterTest2.txt").toURI());
try (InputStream bibIn = RepecNepImporter.class.getResourceAsStream("RepecNepImporterTest2.bib")) {
List<BibEntry> entries = testImporter.importDatabase(file, StandardCharsets.UTF_8).getDatabase()
.getEntries();
Assert.assertEquals(1, entries.size());
BibEntryAssert.assertEquals(bibIn, entries.get(0));
}
}
@Test
public final void testImportEntries3() throws IOException, URISyntaxException {
Path file = Paths.get(RepecNepImporter.class.getResource("RepecNepImporterTest3.txt").toURI());
try (InputStream bibIn = RepecNepImporter.class.getResourceAsStream("RepecNepImporterTest3.bib")) {
List<BibEntry> entries = testImporter.importDatabase(file, StandardCharsets.UTF_8).getDatabase()
.getEntries();
Assert.assertEquals(1, entries.size());
BibEntryAssert.assertEquals(bibIn, entries.get(0));
}
}
@Test
public final void testGetFormatName() {
Assert.assertEquals("REPEC New Economic Papers (NEP)", testImporter.getName());
}
@Test
public final void testGetCliId() {
Assert.assertEquals("repecnep", testImporter.getId());
}
@Test
public void testGetExtension() {
Assert.assertEquals(FileExtensions.REPEC, testImporter.getExtensions());
}
@Test
public final void testGetDescription() {
Assert.assertEquals("Imports a New Economics Papers-Message from the REPEC-NEP Service.",
testImporter.getDescription());
}
}