Project

General

Profile

Download (4.84 KB) Statistics
| Branch: | Tag: | Revision:
1
// $Id$
2
/**
3
 * Copyright (C) 2015 EDIT
4
 * European Distributed Institute of Taxonomy
5
 * http://www.e-taxonomy.eu
6
 *
7
 * The contents of this file are subject to the Mozilla Public License Version 1.1
8
 * See LICENSE.TXT at the top of this package for the full license terms.
9
 */
10
package eu.etaxonomy.cdm.api.validation.batch;
11

    
12
import java.io.FileNotFoundException;
13
import java.sql.SQLException;
14
import java.util.List;
15
import java.util.Set;
16

    
17
import javax.validation.Validation;
18
import javax.validation.Validator;
19
import javax.validation.ValidatorFactory;
20

    
21
import org.hibernate.validator.HibernateValidator;
22
import org.hibernate.validator.HibernateValidatorConfiguration;
23
import org.junit.Assert;
24
import org.junit.Ignore;
25
import org.junit.Test;
26
import org.springframework.context.ApplicationContext;
27
import org.unitils.spring.annotation.SpringApplicationContext;
28

    
29
import eu.etaxonomy.cdm.api.application.CdmApplicationController;
30
import eu.etaxonomy.cdm.api.application.ICdmApplicationConfiguration;
31
import eu.etaxonomy.cdm.api.service.IEntityValidationService;
32
import eu.etaxonomy.cdm.api.service.IReferenceService;
33
import eu.etaxonomy.cdm.database.CdmDataSource;
34
import eu.etaxonomy.cdm.database.DbSchemaValidation;
35
import eu.etaxonomy.cdm.database.ICdmDataSource;
36
import eu.etaxonomy.cdm.model.reference.Reference;
37
import eu.etaxonomy.cdm.model.reference.ReferenceFactory;
38
import eu.etaxonomy.cdm.model.validation.EntityValidation;
39
import eu.etaxonomy.cdm.test.integration.CdmTransactionalIntegrationTest;
40

    
41
/**
42
 * @author admin.ayco.holleman
43
 * @date 11 feb. 2015
44
 *
45
 */
46
public class BatchValidatorTest extends CdmTransactionalIntegrationTest {
47

    
48
//    @SpringBeanByType
49
//    private BatchValidator batchValidator;
50

    
51
//    @SpringBeanByName  //does not exist as such
52
    private ICdmApplicationConfiguration app;
53

    
54
    @SpringApplicationContext
55
    private ApplicationContext applicationContext;
56

    
57
    /**
58
     * Test method for
59
     * {@link eu.etaxonomy.cdm.api.validation.batch.BatchValidator#run()}.
60
     *
61
     * @throws SQLException
62
     */
63
    @Test
64
    @Ignore
65
    public void testRun() throws SQLException {
66

    
67
        ICdmDataSource dataSource = CdmDataSource.NewH2EmbeddedInstance("PUBLIC", "sa", "");
68
        app = CdmApplicationController.NewInstance(dataSource, DbSchemaValidation.CREATE);
69

    
70
        HibernateValidatorConfiguration config = Validation.byProvider(HibernateValidator.class).configure();
71
        ValidatorFactory validatorFactory = config.buildValidatorFactory();
72
        Validator validator = validatorFactory.getValidator();
73

    
74
        BatchValidator batchValidator = new BatchValidator();
75
        batchValidator.setAppController(app);
76
        batchValidator.setValidator(validator);
77
        batchValidator.setValidationGroups(BatchValidator.DEFAULT_VALIDATION_GROUPS);
78

    
79
        // Create 10 References of type book and 10 of type Journal
80

    
81
        IReferenceService refService = app.getReferenceService();
82
        for (int i = 0; i < 10; ++i) {
83
            Reference ref0 = ReferenceFactory.newBook();
84
            ref0.setIsbn("bla bla");
85
            ref0.setIssn("foo foo");
86
            // Each book should violate 3 constraints
87
            if (i == 0) {
88
                Set<?> errors = validator.validate(ref0, BatchValidator.DEFAULT_VALIDATION_GROUPS);
89
                // We 're really not testing the BatchValidator here, but our
90
                // knowledge of the constraints on the Reference class, so we
91
                // do a plain java language assert here.
92
                assert (errors.size() == 3);
93
            }
94
            refService.save(ref0);
95
            Reference ref1 = ReferenceFactory.newJournal();
96
            ref1.setIsbn("bar bar");
97
            ref1.setIssn("baz baz");
98
            // Each journal should violate 4 constraints
99
            if (i == 0) {
100
                Set<?> errors = validator.validate(ref1, BatchValidator.DEFAULT_VALIDATION_GROUPS);
101
                assert (errors.size() == 4);
102
            }
103
            refService.save(ref1);
104
        }
105

    
106
        batchValidator.run();
107

    
108
        // So we should have 20 validation results (10 for books, 10 for
109
        // journals);
110
        IEntityValidationService validationResultService = app.getEntityValidationService();
111
        List<EntityValidation> results = validationResultService.getValidationResults();
112
        Assert.assertEquals("Expected 20 validation results", 20, results.size());
113

    
114
        // And we should have a total of 70 (10 * (3+4)) constraint violations
115
        int errors = 0;
116
        for(EntityValidation result: results) {
117
            errors += result.getEntityConstraintViolations().size();
118
        }
119
        Assert.assertEquals("Expected 70 errors", 70, errors);
120

    
121
    }
122

    
123
    @Override
124
    public void createTestDataSet() throws FileNotFoundException {
125
        // TODO Auto-generated method stub
126
    }
127

    
128
}
    (1-1/1)