package de.geeksfactory.opacclient.apis;
import org.json.JSONException;
import org.json.JSONObject;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
import de.geeksfactory.opacclient.i18n.DummyStringProvider;
import de.geeksfactory.opacclient.objects.Copy;
import de.geeksfactory.opacclient.objects.Detail;
import de.geeksfactory.opacclient.objects.DetailedItem;
import de.geeksfactory.opacclient.objects.Volume;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
@RunWith(Parameterized.class)
public class SISISSearchTest extends BaseHtmlTest {
private String file;
public SISISSearchTest(String file) {
this.file = file;
}
private static final String[] FILES =
new String[]{"berlin_htw.html"};
@Parameterized.Parameters(name = "{0}")
public static Collection<String[]> files() {
List<String[]> files = new ArrayList<>();
for (String file : FILES) {
files.add(new String[]{file});
}
return files;
}
@Test
public void testParseDetail()
throws OpacApi.OpacErrorException, JSONException, IOException {
String html1 = readResource("/sisis/result_detail/" + file.replace(".html", "_1.html"));
String html2 = readResource("/sisis/result_detail/" + file.replace(".html", "_2.html"));
String html3 = readResource("/sisis/result_detail/" + file.replace(".html", "_3.html"));
String coverJs = readResource("/sisis/result_detail/" + file.replace(".html", ".js"));
if (html1 == null || html2 == null || html3 == null) {
return; // we may not have all files for all libraries
}
DetailedItem result = SISIS.parseDetail(html1, html2, html3, coverJs, new JSONObject(),
new DummyStringProvider());
for (Copy copy : result.getCopies()) {
assertContainsData(copy.getStatus());
assertNullOrNotEmpty(copy.getBarcode());
assertNullOrNotEmpty(copy.getBranch());
assertNullOrNotEmpty(copy.getDepartment());
assertNullOrNotEmpty(copy.getLocation());
assertNullOrNotEmpty(copy.getReservations());
assertNullOrNotEmpty(copy.getShelfmark());
assertNullOrNotEmpty(copy.getUrl());
if (copy.getStatus().equals("Entliehen")) assertNotNull(copy.getReturnDate());
}
for (Volume volume : result.getVolumes()) {
assertContainsData(volume.getId());
assertContainsData(volume.getTitle());
}
assertEquals(result.getTitle(), getDetailTitle(file));
if (file.equals("berlin_htw.html")) {
assertTrue(result.getDetails().contains(new Detail("Signatur:", "15/2322")));
assertNotNull(result.getCover());
}
}
private String getDetailTitle(String file) {
switch (file) {
case "berlin_htw.html":
return "Agile business intelligence";
}
return null;
}
}