Skip to content

Commit fb97d33

Browse files
committed
Testing UniquenessChecker
1 parent bd7e66c commit fb97d33

File tree

6 files changed

+94
-12
lines changed

6 files changed

+94
-12
lines changed

src/main/java/de/gwdg/metadataqa/api/calculator/CalculatorFactory.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import de.gwdg.metadataqa.api.rule.RuleCatalog;
1010
import de.gwdg.metadataqa.api.rule.RuleChecker;
1111
import de.gwdg.metadataqa.api.rule.logical.LogicalChecker;
12-
import de.gwdg.metadataqa.api.rule.singlefieldchecker.UniqunessChecker;
12+
import de.gwdg.metadataqa.api.rule.singlefieldchecker.UniquenessChecker;
1313
import de.gwdg.metadataqa.api.schema.Schema;
1414
import de.gwdg.metadataqa.api.schema.edm.EdmSchema;
1515
import de.gwdg.metadataqa.api.uniqueness.DefaultSolrClient;
@@ -109,9 +109,9 @@ private void addRuleCatalogMeasurement() {
109109

110110
private void injectSolr(List<RuleChecker> ruleCheckers) {
111111
for (RuleChecker ruleChecker : ruleCheckers) {
112-
if (ruleChecker instanceof UniqunessChecker) {
112+
if (ruleChecker instanceof UniquenessChecker) {
113113
initializeSolrConfiguration();
114-
((UniqunessChecker)ruleChecker).setSolrClient(configuration.getSolrClient());
114+
((UniquenessChecker)ruleChecker).setSolrClient(configuration.getSolrClient());
115115
} else if (ruleChecker instanceof LogicalChecker) {
116116
injectSolr(((LogicalChecker)ruleChecker).getCheckers());
117117
}

src/main/java/de/gwdg/metadataqa/api/calculator/UniquenessCalculator.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@
1717
import java.util.List;
1818

1919
/**
20-
* Uniquness calculator
20+
* Uniqueness calculator
2121
*
2222
* @author Péter Király <peter.kiraly at gwdg.de>
2323
*/

src/main/java/de/gwdg/metadataqa/api/rule/singlefieldchecker/UniqunessChecker.java renamed to src/main/java/de/gwdg/metadataqa/api/rule/singlefieldchecker/UniquenessChecker.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,22 +10,20 @@
1010
import de.gwdg.metadataqa.api.uniqueness.SolrClient;
1111
import de.gwdg.metadataqa.api.uniqueness.UniquenessExtractor;
1212

13-
import java.util.ArrayList;
1413
import java.util.List;
15-
import java.util.logging.Level;
1614

17-
public class UniqunessChecker extends SingleFieldChecker {
15+
public class UniquenessChecker extends SingleFieldChecker {
1816

1917
private static final long serialVersionUID = -1432138574479246596L;
20-
public static final String PREFIX = "uniquness";
18+
public static final String PREFIX = "uniqueness";
2119
protected String solrField;
2220
private SolrClient solrClient;
2321

24-
public UniqunessChecker(JsonBranch field) {
22+
public UniquenessChecker(JsonBranch field) {
2523
this(field, field.getLabel());
2624
}
2725

28-
public UniqunessChecker(JsonBranch field, String header) {
26+
public UniquenessChecker(JsonBranch field, String header) {
2927
super(field, header + ":" + PREFIX);
3028
this.solrField = field.getLabel().equals("recordId") ? "id" : field.getIndexField() + "_ss";
3129
}

src/main/java/de/gwdg/metadataqa/api/schema/SchemaUtils.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
import de.gwdg.metadataqa.api.rule.singlefieldchecker.NumericValueChecker;
2424
import de.gwdg.metadataqa.api.rule.singlefieldchecker.PatternChecker;
2525
import de.gwdg.metadataqa.api.rule.RuleChecker;
26-
import de.gwdg.metadataqa.api.rule.singlefieldchecker.UniqunessChecker;
26+
import de.gwdg.metadataqa.api.rule.singlefieldchecker.UniquenessChecker;
2727
import org.apache.commons.lang3.StringUtils;
2828

2929
import java.util.ArrayList;
@@ -123,7 +123,7 @@ private static List<RuleChecker> processRule(Schema schema, JsonBranch branch, R
123123
ruleCheckers.add(new DependencyChecker(branch, rule.getDependencies()));
124124

125125
if (rule.getUnique() != null && rule.getUnique().equals(Boolean.TRUE))
126-
ruleCheckers.add(new UniqunessChecker(branch));
126+
ruleCheckers.add(new UniquenessChecker(branch));
127127

128128
if (rule.getLessThan() != null)
129129
pair(schema, ruleCheckers, branch, rule.getLessThan(), "LessThan");
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
package de.gwdg.metadataqa.api.rule.singlefieldchecker;
2+
3+
import de.gwdg.metadataqa.api.calculator.Indexer;
4+
import de.gwdg.metadataqa.api.counter.FieldCounter;
5+
import de.gwdg.metadataqa.api.json.JsonBranch;
6+
import de.gwdg.metadataqa.api.model.PathCacheFactory;
7+
import de.gwdg.metadataqa.api.model.pathcache.CsvPathCache;
8+
import de.gwdg.metadataqa.api.rule.RuleCheckerOutput;
9+
import de.gwdg.metadataqa.api.rule.RuleCheckingOutputStatus;
10+
import de.gwdg.metadataqa.api.rule.RuleCheckingOutputType;
11+
import de.gwdg.metadataqa.api.schema.BaseSchema;
12+
import de.gwdg.metadataqa.api.schema.CsvAwareSchema;
13+
import de.gwdg.metadataqa.api.schema.Format;
14+
import de.gwdg.metadataqa.api.schema.Schema;
15+
import de.gwdg.metadataqa.api.uniqueness.SolrClientMock;
16+
import de.gwdg.metadataqa.api.uniqueness.SolrConfiguration;
17+
import de.gwdg.metadataqa.api.util.CsvReader;
18+
import org.junit.Before;
19+
import org.junit.Test;
20+
21+
import java.util.regex.Pattern;
22+
23+
import static org.junit.Assert.*;
24+
25+
public class UniquenessCheckerTest {
26+
27+
CsvPathCache cache;
28+
SolrClientMock solrClient;
29+
Schema schema;
30+
31+
@Before
32+
public void setUp() throws Exception {
33+
SolrConfiguration solrConfiguration = new SolrConfiguration("localhost", "8983", "solr");
34+
schema = getSchema(Format.CSV);
35+
solrClient = new SolrClientMock(solrConfiguration);
36+
37+
cache = (CsvPathCache) PathCacheFactory.getInstance(schema.getFormat(), "URL,two three");
38+
cache.setCsvReader(new CsvReader().setHeader( ((CsvAwareSchema) schema).getHeader() ));
39+
}
40+
41+
@Test
42+
public void success() {
43+
UniquenessChecker checker = new UniquenessChecker(schema.getPathByLabel("name"));
44+
checker.setSolrClient(solrClient);
45+
46+
FieldCounter<RuleCheckerOutput> fieldCounter = new FieldCounter<>();
47+
checker.update(cache, fieldCounter, RuleCheckingOutputType.BOTH);
48+
49+
assertEquals(2, fieldCounter.size());
50+
assertEquals("name:uniqueness", checker.getHeaderWithoutId());
51+
assertEquals("name:uniqueness:0", checker.getHeader());
52+
assertTrue(Pattern.compile("^name:uniqueness:\\d+$").matcher(checker.getHeader()).matches());
53+
assertEquals(RuleCheckingOutputStatus.PASSED, fieldCounter.get(checker.getHeader(RuleCheckingOutputType.STATUS)).getStatus());
54+
}
55+
56+
@Test
57+
public void failure() {
58+
UniquenessChecker checker = new UniquenessChecker(schema.getPathByLabel("url"));
59+
checker.setSolrClient(solrClient);
60+
61+
FieldCounter<RuleCheckerOutput> fieldCounter = new FieldCounter<>();
62+
checker.update(cache, fieldCounter, RuleCheckingOutputType.BOTH);
63+
64+
assertEquals(2, fieldCounter.size());
65+
assertEquals("url:uniqueness", checker.getHeaderWithoutId());
66+
assertEquals("url:uniqueness:0", checker.getHeader());
67+
assertTrue(Pattern.compile("^url:uniqueness:\\d+$").matcher(checker.getHeader()).matches());
68+
assertEquals(RuleCheckingOutputStatus.FAILED, fieldCounter.get(checker.getHeader(RuleCheckingOutputType.STATUS)).getStatus());
69+
}
70+
71+
private Schema getSchema(Format format) {
72+
BaseSchema schema = new BaseSchema()
73+
.setFormat(format)
74+
.addField(new JsonBranch("url").setExtractable().setIndexField("url"))
75+
.addField(new JsonBranch("name").setExtractable().setIndexField("name"));
76+
schema.setRecordId(schema.getPathByLabel("url"));
77+
return schema;
78+
}
79+
80+
}

src/test/java/de/gwdg/metadataqa/api/uniqueness/SolrClientMock.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,10 @@ public String getSolrSearchResponse(String solrField, String value) {
3131
} else if (solrField.equals("dc_title_ss")
3232
&& value.equals("Pyrker-Oberwart, Johann Ladislaus")) {
3333
return "{\"response\":{\"numFound\":3}}";
34+
} else if (solrField.equals("url_ss") && value.equals("URL")) {
35+
return "{\"response\":{\"numFound\":3}}";
36+
} else if (solrField.equals("name_ss") && value.equals("two three")) {
37+
return "{\"response\":{\"numFound\":1}}";
3438
} else {
3539
System.err.printf("solrField: %s, value: %s\n", solrField, value);
3640
}

0 commit comments

Comments
 (0)