package org.jabref.logic.importer.fileformat; import java.io.IOException; import java.nio.charset.Charset; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.List; import java.util.stream.Collectors; import java.util.stream.Stream; import org.jabref.logic.util.FileExtensions; import org.junit.Assert; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.runners.MockitoJUnitRunner; import static org.junit.Assert.assertEquals; /** * Articles in the medline format can be downloaded from http://www.ncbi.nlm.nih.gov/pubmed/. * 1. Search for a term and make sure you have selected the PubMed database * 2. Select the results you want to export by checking their checkboxes * 3. Press on the 'Send to' drop down menu on top of the search results * 4. Select 'File' as Destination and 'XML' as Format * 5. Press 'Create File' to download your search results in a medline xml file * * @author Daniel Mair/Bruehl * */ @RunWith(MockitoJUnitRunner.class) public class MedlineImporterTest { private MedlineImporter importer; /** * Generates a List of all files in the package "/src/test/resources/org/jabref/logic/importer/fileformat" * @return A list of Names * @throws IOException */ public List<Path> getTestFiles() throws Exception { try (Stream<Path> stream = Files.list(Paths.get(MedlineImporterTest.class.getResource("").toURI()))) { return stream.filter(p -> !Files.isDirectory(p)).collect(Collectors.toList()); } } @Before public void setUp() throws Exception { this.importer = new MedlineImporter(); } @Test public void testGetFormatName() { assertEquals("Medline/PubMed", importer.getName()); } @Test public void testGetCLIId() { assertEquals("medline", importer.getId()); } @Test public void testsGetExtensions() { assertEquals(FileExtensions.MEDLINE, importer.getExtensions()); } @Test public void testGetDescription() { assertEquals("Importer for the Medline format.", importer.getDescription()); } @Test public void testIsRecognizedFormatReject() throws Exception { List<Path> list = getTestFiles().stream().filter(n -> !n.getFileName().toString().startsWith("MedlineImporter")) .collect(Collectors.toList()); for (Path file : list) { Assert.assertFalse(file.toString(), importer.isRecognizedFormat(file, Charset.defaultCharset())); } } }