Project

General

Profile

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

    
11
import static org.junit.Assert.assertFalse;
12
import static org.junit.Assert.assertTrue;
13

    
14
import java.util.Set;
15

    
16
import javax.validation.ConstraintViolation;
17

    
18
import org.apache.log4j.Logger;
19
import org.junit.Assert;
20
import org.junit.Before;
21
import org.junit.Test;
22

    
23
import eu.etaxonomy.cdm.model.name.HybridRelationshipType;
24
import eu.etaxonomy.cdm.model.name.Rank;
25
import eu.etaxonomy.cdm.model.name.TaxonName;
26
import eu.etaxonomy.cdm.model.name.TaxonNameFactory;
27
import eu.etaxonomy.cdm.validation.constraint.NameMustFollowCodeValidator;
28

    
29
/**
30
 * Test class for {@link NameMustFollowCodeValidator}
31
 *
32
 * @author a.mueller
33
 * @since 11.03.2017
34
 */
35
public class NameMustFollowCodeTest extends ValidationTestBase {
36
	@SuppressWarnings("unused")
37
    private static final Logger logger = Logger.getLogger(NameMustFollowCodeTest.class);
38

    
39
	private TaxonName nonViralName;
40
    private TaxonName viralName;
41
    private TaxonName bacterialName;
42
    private TaxonName zoologicalName;
43
    private TaxonName cultivarName;
44

    
45
	@Before
46
	public void setUp() {
47
		nonViralName = TaxonNameFactory.NewNonViralInstance(Rank.SPECIES());
48
		viralName = TaxonNameFactory.NewViralInstance(Rank.SPECIES());
49
		zoologicalName = TaxonNameFactory.NewZoologicalInstance(Rank.SPECIES());
50
		bacterialName = TaxonNameFactory.NewBacterialInstance(Rank.SPECIES());
51
	    cultivarName = TaxonNameFactory.NewCultivarInstance(Rank.CULTIVAR());
52
	}
53

    
54
/****************** TESTS *****************************/
55

    
56
    @Test
57
    public void testValidEmptyNames() {
58
        Set<ConstraintViolation<TaxonName>> constraintViolations
59
                            = validator.validate(cultivarName);
60
        assertTrue("There should be no constraint violations as this name has data set and therefore no unvalid attributes set", constraintViolations.isEmpty());
61

    
62
        constraintViolations  = validator.validate(nonViralName);
63
        assertTrue("There should be no constraint violations as this name has data set and therefore no unvalid attributes set", constraintViolations.isEmpty());
64

    
65
        constraintViolations  = validator.validate(viralName);
66
        assertTrue("There should be no constraint violations as this name has data set and therefore no unvalid attributes set", constraintViolations.isEmpty());
67

    
68
        constraintViolations  = validator.validate(zoologicalName);
69
        assertTrue("There should be no constraint violations as this name has data set and therefore no unvalid attributes set", constraintViolations.isEmpty());
70

    
71
        constraintViolations  = validator.validate(bacterialName);
72
        assertTrue("There should be no constraint violations as this name has data set and therefore no unvalid attributes set", constraintViolations.isEmpty());
73
    }
74

    
75
    @Test
76
    public void testMessage() {
77
        nonViralName.setAcronym("acronym");
78
        Set<ConstraintViolation<TaxonName>> constraintViolations  = validator.validate(nonViralName);
79
        assertFalse("There should be a constraint violation as a nonViralName must not have an acronym", constraintViolations.isEmpty());
80
        String message = constraintViolations.iterator().next().getMessage();
81
        String expected = "Taxon name must only have attributes set that are available according to their code. E.g. 'acronym name' should only be available for viral names.";
82
        Assert.assertEquals(expected, message);
83
    }
84

    
85
	@Test
86
	public void testValidNonViralName() {
87
	    nonViralName.setAcronym("acronym");
88
	    Set<ConstraintViolation<TaxonName>> constraintViolations  = validator.validate(nonViralName);
89
        assertFalse("There should be a constraint violation as a nonViralName must not have an acronym", constraintViolations.isEmpty());
90

    
91
        nonViralName = TaxonNameFactory.NewNonViralInstance(Rank.SPECIES());
92
        nonViralName.setBreed("Breed");
93
        constraintViolations  = validator.validate(nonViralName);
94
        assertFalse("There should be a constraint violation as pure NonViralNames must not have a breed", constraintViolations.isEmpty());
95

    
96
        nonViralName = TaxonNameFactory.NewNonViralInstance(Rank.SPECIES());
97
        nonViralName.setOriginalPublicationYear(1987);
98
        constraintViolations  = validator.validate(nonViralName);
99
        assertFalse("There should be a constraint violation as pure NonViralNames must not have an original publication year", constraintViolations.isEmpty());
100

    
101
        nonViralName = TaxonNameFactory.NewNonViralInstance(Rank.SPECIES());
102
        nonViralName.setPublicationYear(2001);
103
        constraintViolations  = validator.validate(nonViralName);
104
        assertFalse("There should be a constraint violation as pure NonViralNames must not have a publication year", constraintViolations.isEmpty());
105

    
106
        nonViralName = TaxonNameFactory.NewNonViralInstance(Rank.SPECIES());
107
        nonViralName.setSubGenusAuthorship("SubGenusAuthor");
108
        constraintViolations  = validator.validate(nonViralName);
109
        assertFalse("There should be a constraint violation as pure NonViralNames must not have a subgenus author", constraintViolations.isEmpty());
110

    
111
        nonViralName = TaxonNameFactory.NewNonViralInstance(Rank.SPECIES());
112
        nonViralName.setNameApprobation("Name approbation");
113
        constraintViolations  = validator.validate(nonViralName);
114
        assertFalse("There should be a constraint violation as pure NonViralNames must not have a name approbation", constraintViolations.isEmpty());
115

    
116
        //Valid
117
        nonViralName = TaxonNameFactory.NewNonViralInstance(Rank.SPECIES());
118
        nonViralName.setMonomHybrid(true);
119
        constraintViolations  = validator.validate(nonViralName);
120
        assertTrue("There should be no constraint violation as NonViralNames may have a hybrid flag set", constraintViolations.isEmpty());
121

    
122
        nonViralName = TaxonNameFactory.NewNonViralInstance(Rank.SPECIES());
123
        nonViralName.setGenusOrUninomial("Genus");
124
        constraintViolations  = validator.validate(nonViralName);
125
        assertTrue("There should be no constraint violation as NonViralNames may have a genus name set", constraintViolations.isEmpty());
126

    
127
        nonViralName = TaxonNameFactory.NewNonViralInstance(Rank.SPECIES());
128
        nonViralName.setNameCache("NameCache");
129
        constraintViolations  = validator.validate(nonViralName);
130
        assertTrue("There should be no constraint violation as NonViralNames may have the name cache set", constraintViolations.isEmpty());
131

    
132
        nonViralName = TaxonNameFactory.NewNonViralInstance(Rank.SPECIES());
133
        TaxonName childName = TaxonNameFactory.NewViralInstance(Rank.SPECIES());
134
        nonViralName.addHybridChild(childName, HybridRelationshipType.FIRST_PARENT(), null);
135
        constraintViolations  = validator.validate(nonViralName);
136
        assertTrue("There should be no constraint violation as NonViralNames may have a hybrid child", constraintViolations.isEmpty());
137

    
138
        //TBC
139
	}
140

    
141
    @Test
142
    public void testValidViralName() {
143
        viralName.setAcronym("acronym");
144
        Set<ConstraintViolation<TaxonName>> constraintViolations  = validator.validate(viralName);
145
        assertTrue("There should be no constraint violation as a viral name may have acronym set", constraintViolations.isEmpty());
146

    
147
        //Invalid
148
        viralName = TaxonNameFactory.NewViralInstance(Rank.SPECIES());
149
        viralName.setMonomHybrid(true);
150
        constraintViolations  = validator.validate(viralName);
151
        assertFalse("There should be a constraint violation as a ViralName must not have a hybrid flag set", constraintViolations.isEmpty());
152

    
153
        viralName = TaxonNameFactory.NewViralInstance(Rank.SPECIES());
154
        viralName.setGenusOrUninomial("Genus");
155
        constraintViolations  = validator.validate(viralName);
156
        assertFalse("There should be a constraint violation as a ViralName must not have the genus name set", constraintViolations.isEmpty());
157

    
158
        viralName = TaxonNameFactory.NewViralInstance(Rank.SPECIES());
159
        viralName.setNameCache("NameCache");
160
        constraintViolations  = validator.validate(viralName);
161
        assertFalse("There should be a constraint violation as a ViralName must not have the nameCache set", constraintViolations.isEmpty());
162

    
163
        viralName = TaxonNameFactory.NewViralInstance(Rank.SPECIES());
164
        TaxonName childName = TaxonNameFactory.NewViralInstance(Rank.SPECIES());
165
        viralName.addHybridChild(childName, HybridRelationshipType.FIRST_PARENT(), null);
166
        constraintViolations  = validator.validate(viralName);
167
        assertFalse("There should be a constraint violation as a ViralName must not have hybrid child", constraintViolations.isEmpty());
168

    
169
        //TBC
170
    }
171

    
172
    @Test
173
    public void testValidZoologicalName() {
174
        zoologicalName.setBreed("Breed");
175
        zoologicalName.setOriginalPublicationYear(1987);
176
        zoologicalName.setPublicationYear(2001);
177

    
178
        Set<ConstraintViolation<TaxonName>> constraintViolations  = validator.validate(zoologicalName);
179
        assertTrue("There should be no constraint violation as a zoological name may have breed and years set", constraintViolations.isEmpty());
180
    }
181

    
182
    @Test
183
    public void testValidBacterialName() {
184
        bacterialName.setSubGenusAuthorship("Subgenus author");
185
        bacterialName.setNameApprobation("Name approbation");
186

    
187
        Set<ConstraintViolation<TaxonName>> constraintViolations  = validator.validate(bacterialName);
188
        assertTrue("There should be no constraint violation as a bacterial name may have subgenus authorship or name approbation set", constraintViolations.isEmpty());
189
    }
190
}
(5-5/13)