package org.jabref.logic.importer.fetcher;
import java.net.MalformedURLException;
import java.net.URISyntaxException;
import java.net.URL;
import java.util.Collections;
import java.util.List;
import org.jabref.logic.importer.FetcherException;
import org.jabref.model.entry.BibEntry;
import org.jabref.model.entry.BiblatexEntryTypes;
import org.jabref.testutils.category.FetcherTests;
import org.junit.Before;
import org.junit.Test;
import org.junit.experimental.categories.Category;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
@Category(FetcherTests.class)
public class GvkFetcherTest {
private GvkFetcher fetcher;
private BibEntry bibEntryPPN591166003;
private BibEntry bibEntryPPN66391437X;
@Before
public void setUp() {
fetcher = new GvkFetcher();
bibEntryPPN591166003 = new BibEntry();
bibEntryPPN591166003.setType(BiblatexEntryTypes.BOOK);
bibEntryPPN591166003.setField("title", "Effective Java");
bibEntryPPN591166003.setField("publisher", "Addison-Wesley");
bibEntryPPN591166003.setField("year", "2008");
bibEntryPPN591166003.setField("author", "Joshua Bloch");
bibEntryPPN591166003.setField("series", "The @Java series");
bibEntryPPN591166003.setField("address", "Upper Saddle River, NJ [u.a.]");
bibEntryPPN591166003.setField("edition", "2. ed., 5. print.");
bibEntryPPN591166003.setField("note", "Literaturverz. S. 321 - 325");
bibEntryPPN591166003.setField("isbn", "9780321356680");
bibEntryPPN591166003.setField("pagetotal", "XXI, 346");
bibEntryPPN591166003.setField("ppn_gvk", "591166003");
bibEntryPPN591166003.setField("subtitle", "[revised and updated for JAVA SE 6]");
bibEntryPPN66391437X = new BibEntry();
bibEntryPPN66391437X.setType(BiblatexEntryTypes.BOOK);
bibEntryPPN66391437X.setField("title", "Effective unit testing");
bibEntryPPN66391437X.setField("publisher", "Manning");
bibEntryPPN66391437X.setField("year", "2013");
bibEntryPPN66391437X.setField("author", "Lasse Koskela");
bibEntryPPN66391437X.setField("address", "Shelter Island, NY");
bibEntryPPN66391437X.setField("isbn", "9781935182573");
bibEntryPPN66391437X.setField("pagetotal", "XXIV, 223");
bibEntryPPN66391437X.setField("ppn_gvk", "66391437X");
bibEntryPPN66391437X.setField("subtitle", "A guide for Java developers");
}
@Test
public void testGetName() {
assertEquals("GVK", fetcher.getName());
}
@Test
public void testGetHelpPage() {
assertEquals("GVK", fetcher.getHelpPage().getPageName());
}
@Test
public void simpleSearchQueryStringCorrect() throws FetcherException {
String query = "java jdk";
String result = fetcher.getSearchQueryString(query);
assertEquals("pica.all=java jdk", result);
}
@Test
public void simpleSearchQueryURLCorrect() throws MalformedURLException, URISyntaxException, FetcherException {
String query = "java jdk";
URL url = fetcher.getURLForQuery(query);
assertEquals("http://sru.gbv.de/gvk?version=1.1&operation=searchRetrieve&query=pica.all%3Djava+jdk&maximumRecords=50&recordSchema=picaxml&sortKeys=Year%2C%2C1", url.toString());
}
@Test
public void complexSearchQueryStringCorrect() throws FetcherException {
String query = "kon java tit jdk";
String result = fetcher.getSearchQueryString(query);
assertEquals("pica.kon=java and pica.tit=jdk", result);
}
@Test
public void complexSearchQueryURLCorrect() throws MalformedURLException, URISyntaxException, FetcherException {
String query = "kon java tit jdk";
URL url = fetcher.getURLForQuery(query);
assertEquals("http://sru.gbv.de/gvk?version=1.1&operation=searchRetrieve&query=pica.kon%3Djava+and+pica.tit%3Djdk&maximumRecords=50&recordSchema=picaxml&sortKeys=Year%2C%2C1", url.toString());
}
@Test
public void testPerformSearchMatchingMultipleEntries() throws FetcherException {
List<BibEntry> searchResult = fetcher.performSearch("tit effective java");
assertTrue(searchResult.contains(bibEntryPPN591166003));
assertTrue(searchResult.contains(bibEntryPPN66391437X));
}
@Test
public void testPerformSearch591166003() throws FetcherException {
List<BibEntry> searchResult = fetcher.performSearch("ppn 591166003");
assertEquals(Collections.singletonList(bibEntryPPN591166003), searchResult);
}
@Test
public void testPerformSearch66391437X() throws FetcherException {
List<BibEntry> searchResult = fetcher.performSearch("ppn 66391437X");
assertEquals(Collections.singletonList(bibEntryPPN66391437X), searchResult);
}
@Test
public void testPerformSearchEmpty() throws FetcherException {
List<BibEntry> searchResult = fetcher.performSearch("");
assertEquals(Collections.emptyList(), searchResult);
}
}