Project

General

Profile

1
package eu.dnetlib.data.mapreduce.hbase.dataexport;
2

    
3
import com.google.gson.Gson;
4
import eu.dnetlib.data.mapreduce.hbase.bulktag.ProtoMap;
5
import org.dom4j.Document;
6
import org.dom4j.DocumentException;
7
import org.dom4j.io.SAXReader;
8
import org.junit.Assert;
9
import org.junit.Test;
10

    
11
import java.text.ParseException;
12
import java.util.Map;
13

    
14
public class RecordFilterTest {
15

    
16
    private static final String REGEX = ".*\\\\s(interdisciplinar.*|transdisciplinary.*)\\\\s.*";
17

    
18
    private static final String DEFAULT_CRITERIA = "{ " +
19
            "\"/*[local-name() ='record']/*[local-name() ='result']/*[local-name() ='metadata']/*[local-name() ='entity']/*[local-name() ='result']/*[local-name() ='datainfo']/*[local-name() ='deletedbyinference']/text()\" : \"false\", " +
20
            "\"local-name(//*[local-name()='entity']/*)\" : \"result\" " +
21
            "}";
22

    
23
    private static final String CRITERIA = "{ " +
24
            "\"/*[local-name() ='record']/*[local-name() ='result']/*[local-name() ='metadata']/*[local-name() ='entity']/*[local-name() ='result']/*[local-name() ='title']/text()\" : \""+REGEX+"\", " +
25
            "\"/*[local-name() ='record']/*[local-name() ='result']/*[local-name() ='metadata']/*[local-name() ='entity']/*[local-name() ='result']/*[local-name() ='description']/text()\" : \""+REGEX+"\", " +
26
            "\"/*[local-name() ='record']/*[local-name() ='result']/*[local-name() ='metadata']/*[local-name() ='entity']/*[local-name() ='result']/*[local-name() ='subject']/text()\" : \""+REGEX+"\" " +
27
            "}";
28

    
29
    private static final String YEAR_XPATH = "/*[local-name() ='record']/*[local-name() ='result']/*[local-name() ='metadata']/*[local-name() ='entity']/*[local-name() ='result']/*[local-name() ='dateofacceptance']";
30

    
31
    @Test
32
    public void recordNonMatchFilterTest() throws DocumentException, ParseException {
33

    
34
        final Map<String, String> defaultCriteria = new Gson().fromJson(DEFAULT_CRITERIA, ProtoMap.class);
35

    
36
        final RecordFilter defaultFilter = new RecordFilter(defaultCriteria, YEAR_XPATH, 1990, 2019);
37

    
38
        final Document doc = new SAXReader().read(getClass().getResourceAsStream("non_match_record.xml"));
39
        Assert.assertTrue(defaultFilter.matches(doc, true));
40

    
41
        final RecordFilter filter = new RecordFilter(new Gson().fromJson(CRITERIA, ProtoMap.class), YEAR_XPATH, 1990, 2019);
42
        Assert.assertFalse(filter.matches(doc, false));
43
    }
44

    
45
    @Test
46
    public void recordMatchFilterTest() throws DocumentException, ParseException {
47

    
48
        final Map<String, String> defaultCriteria = new Gson().fromJson(DEFAULT_CRITERIA, ProtoMap.class);
49

    
50
        final RecordFilter defaultFilter = new RecordFilter(defaultCriteria, YEAR_XPATH, 1990, 2019);
51

    
52
        final Document doc = new SAXReader().read(getClass().getResourceAsStream("match_record.xml"));
53
        Assert.assertTrue(defaultFilter.matches(doc, true));
54

    
55
        final RecordFilter filter = new RecordFilter(new Gson().fromJson(CRITERIA, ProtoMap.class), YEAR_XPATH, 1990, 2019);
56
        Assert.assertTrue(filter.matches(doc, false));
57
    }
58

    
59
}
    (1-1/1)