Skip to content

Commit 57720ab

Browse files
authored
cover boundary cases & add more unit tests (#7694)
1 parent 2bf1a87 commit 57720ab

File tree

4 files changed

+106
-0
lines changed

4 files changed

+106
-0
lines changed

src/test/java/org/jabref/logic/formatter/bibtexfields/RemoveBracesFormatterTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,11 @@ public void formatKeepsShortString() {
3737
assertEquals("t", formatter.format("t"));
3838
}
3939

40+
@Test
41+
public void formatRemovesBracesOnly() {
42+
assertEquals("", formatter.format("{}"));
43+
}
44+
4045
@Test
4146
public void formatKeepsEmptyString() {
4247
assertEquals("", formatter.format(""));

src/test/java/org/jabref/logic/integrity/BracesCorrectorTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@ public void inputWithoutBraces() {
2222
assertEquals("banana", BracesCorrector.apply("banana"));
2323
}
2424

25+
@Test
26+
public void inputAlreadyCorrect() {
27+
assertEquals("{banana}", BracesCorrector.apply("{banana}"));
28+
}
29+
2530
@Test
2631
public void inputMissingClosing() {
2732
assertEquals("{banana}", BracesCorrector.apply("{banana"));
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package org.jabref.logic.integrity;
2+
3+
import java.util.Collections;
4+
import java.util.List;
5+
6+
import org.jabref.logic.citationkeypattern.AbstractCitationKeyPattern;
7+
import org.jabref.logic.citationkeypattern.CitationKeyPatternPreferences;
8+
import org.jabref.logic.citationkeypattern.GlobalCitationKeyPattern;
9+
import org.jabref.logic.l10n.Localization;
10+
import org.jabref.model.database.BibDatabase;
11+
import org.jabref.model.database.BibDatabaseContext;
12+
import org.jabref.model.entry.BibEntry;
13+
import org.jabref.model.entry.field.InternalField;
14+
import org.jabref.model.entry.field.StandardField;
15+
import org.jabref.model.metadata.MetaData;
16+
17+
import org.junit.jupiter.api.BeforeEach;
18+
import org.junit.jupiter.api.Test;
19+
20+
import static org.junit.jupiter.api.Assertions.assertEquals;
21+
import static org.mockito.Mockito.mock;
22+
import static org.mockito.Mockito.when;
23+
24+
public class CitationKeyDeviationCheckerTest {
25+
26+
private final BibDatabaseContext bibDatabaseContext = mock(BibDatabaseContext.class);
27+
private final BibDatabase bibDatabase = mock(BibDatabase.class);
28+
private final MetaData metaData = mock(MetaData.class);
29+
private final AbstractCitationKeyPattern abstractCitationKeyPattern = mock(AbstractCitationKeyPattern.class);
30+
private final GlobalCitationKeyPattern globalCitationKeyPattern = mock(GlobalCitationKeyPattern.class);
31+
private final CitationKeyPatternPreferences citationKeyPatternPreferences = mock(CitationKeyPatternPreferences.class);
32+
private final CitationKeyDeviationChecker checker = new CitationKeyDeviationChecker(bibDatabaseContext, citationKeyPatternPreferences);
33+
34+
@BeforeEach
35+
void setUp() {
36+
when(bibDatabaseContext.getMetaData()).thenReturn(metaData);
37+
when(citationKeyPatternPreferences.getKeyPattern()).thenReturn(globalCitationKeyPattern);
38+
when(metaData.getCiteKeyPattern(citationKeyPatternPreferences.getKeyPattern())).thenReturn(abstractCitationKeyPattern);
39+
when(bibDatabaseContext.getDatabase()).thenReturn(bibDatabase);
40+
}
41+
42+
@Test
43+
void citationKeyDeviatesFromGeneratedKey() {
44+
BibEntry entry = new BibEntry().withField(InternalField.KEY_FIELD, "Knuth2014")
45+
.withField(StandardField.AUTHOR, "Knuth")
46+
.withField(StandardField.YEAR, "2014");
47+
List<IntegrityMessage> expected = Collections.singletonList(new IntegrityMessage(
48+
Localization.lang("Citation key deviates from generated key"), entry, InternalField.KEY_FIELD));
49+
assertEquals(expected, checker.check(entry));
50+
}
51+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
package org.jabref.logic.integrity;
2+
3+
import java.util.Collections;
4+
import java.util.List;
5+
6+
import org.jabref.logic.l10n.Localization;
7+
import org.jabref.model.database.BibDatabase;
8+
import org.jabref.model.entry.BibEntry;
9+
import org.jabref.model.entry.field.InternalField;
10+
import org.jabref.model.entry.field.StandardField;
11+
12+
import org.junit.jupiter.api.Test;
13+
14+
import static org.junit.jupiter.api.Assertions.assertEquals;
15+
16+
public class CitationKeyDuplicationCheckerTest {
17+
18+
@Test
19+
void emptyCitationKey() {
20+
BibEntry entry = new BibEntry().withField(InternalField.KEY_FIELD, "")
21+
.withField(StandardField.AUTHOR, "Knuth")
22+
.withField(StandardField.YEAR, "2014");
23+
BibDatabase bibDatabase = new BibDatabase(List.of(entry));
24+
CitationKeyDuplicationChecker checker = new CitationKeyDuplicationChecker(bibDatabase);
25+
26+
List<IntegrityMessage> expected = Collections.emptyList();
27+
assertEquals(expected, checker.check(entry));
28+
}
29+
30+
@Test
31+
void hasDuplicateCitationKey() {
32+
BibEntry entry = new BibEntry().withField(InternalField.KEY_FIELD, "Knuth2014")
33+
.withField(StandardField.AUTHOR, "Knuth")
34+
.withField(StandardField.YEAR, "2014");
35+
BibEntry entry2 = new BibEntry().withField(InternalField.KEY_FIELD, "Knuth2014")
36+
.withField(StandardField.AUTHOR, "Knuth")
37+
.withField(StandardField.YEAR, "2014");
38+
BibDatabase bibDatabase = new BibDatabase(List.of(entry, entry2));
39+
CitationKeyDuplicationChecker checker = new CitationKeyDuplicationChecker(bibDatabase);
40+
41+
List<IntegrityMessage> expected = Collections.singletonList(
42+
new IntegrityMessage(Localization.lang("Duplicate citation key"), entry, StandardField.KEY));
43+
assertEquals(expected, checker.check(entry));
44+
}
45+
}

0 commit comments

Comments
 (0)