package org.jabref.logic.integrity;
import java.util.Collections;
import java.util.List;
import org.jabref.model.database.BibDatabase;
import org.jabref.model.entry.BibEntry;
import org.junit.Before;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.fail;
public class EntryLinkCheckerTest {
private BibDatabase database;
private EntryLinkChecker checker;
private BibEntry entry;
@Before
public void setUp() {
database = new BibDatabase();
checker = new EntryLinkChecker(database);
entry = new BibEntry();
database.insertEntry(entry);
}
@SuppressWarnings("unused")
@Test(expected = NullPointerException.class)
public void testEntryLinkChecker() {
new EntryLinkChecker(null);
fail();
}
@Test
public void testCheckNoFields() {
assertEquals(Collections.emptyList(), checker.check(entry));
}
@Test
public void testCheckNonRelatedFieldsOnly() {
entry.setField("year", "2016");
assertEquals(Collections.emptyList(), checker.check(entry));
}
@Test
public void testCheckNonExistingCrossref() {
entry.setField("crossref", "banana");
List<IntegrityMessage> message = checker.check(entry);
assertFalse(message.toString(), message.isEmpty());
}
@Test
public void testCheckExistingCrossref() {
entry.setField("crossref", "banana");
BibEntry entry2 = new BibEntry();
entry2.setCiteKey("banana");
database.insertEntry(entry2);
List<IntegrityMessage> message = checker.check(entry);
assertEquals(Collections.emptyList(), message);
}
@Test
public void testCheckExistingRelated() {
entry.setField("related", "banana,pineapple");
BibEntry entry2 = new BibEntry();
entry2.setCiteKey("banana");
database.insertEntry(entry2);
BibEntry entry3 = new BibEntry();
entry3.setCiteKey("pineapple");
database.insertEntry(entry3);
List<IntegrityMessage> message = checker.check(entry);
assertEquals(Collections.emptyList(), message);
}
@Test
public void testCheckNonExistingRelated() {
BibEntry entry1 = new BibEntry();
entry1.setField("related", "banana,pineapple,strawberry");
database.insertEntry(entry1);
BibEntry entry2 = new BibEntry();
entry2.setCiteKey("banana");
database.insertEntry(entry2);
BibEntry entry3 = new BibEntry();
entry3.setCiteKey("pineapple");
database.insertEntry(entry3);
List<IntegrityMessage> message = checker.check(entry1);
assertFalse(message.toString(), message.isEmpty());
}
}