Skip to content

Commit e388a19

Browse files
committed
added unit test for mixture component type leading/trailing blank
removal
1 parent ea6d875 commit e388a19

2 files changed

Lines changed: 36 additions & 3 deletions

File tree

gsrs-module-substance-example/src/test/java/example/substance/validation/MixtureValidationTest.java

Lines changed: 34 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@
1818
import org.springframework.beans.factory.annotation.Autowired;
1919
import org.springframework.security.test.context.support.WithMockUser;
2020

21+
import java.util.UUID;
2122
import java.util.stream.Stream;
2223

23-
import static org.junit.Assert.assertFalse;
24-
import static org.junit.Assert.assertTrue;
24+
import static org.junit.Assert.*;
2525

2626
/**
2727
* Created by katzelda on 7/20/18.
@@ -199,4 +199,36 @@ public void mixtureMustAtLeast2OneOfComponents() throws Exception{
199199

200200

201201
}
202+
203+
@Test
204+
public void mixtureComponentsTypeMustHaveNoTrailingBlanks() throws Exception{
205+
206+
String inputComponentType = "MAY_BE_PRESENT_ONE_OF ";
207+
String componentTypeTrimmed =inputComponentType.trim();
208+
String inputComponentType2 = " MUST_BE_PRESENT";
209+
String componentType2Trimmed = inputComponentType2.trim();
210+
JsonNode toSubmit = new MixtureSubstanceBuilder()
211+
.addName("foo " + UUID.randomUUID())
212+
.addComponents(inputComponentType, s1)
213+
.addComponents(inputComponentType2, s2)
214+
.addComponents(componentTypeTrimmed, s3)
215+
.buildJson();
216+
217+
GsrsEntityService.CreationResult<Substance> result = substanceEntityService.createEntity(toSubmit);
218+
219+
ValidationResponse response = result.getValidationResponse();
220+
assertTrue(response.isValid());
221+
//this is split up and stored as a variable for java 8 type inference to work...
222+
Stream<ValidationMessage>s1 = response.getValidationMessages().stream();
223+
224+
assertEquals(2, s1
225+
.filter(m->m.getMessageType() == ValidationMessage.MESSAGE_TYPE.WARNING)
226+
.map(ValidationMessage::getMessage)
227+
.filter(m-> m.contains(MixtureValidator.NO_LEAD_TRAIL_SPACES_IN_TYPE))
228+
.count());
229+
MixtureSubstance completed = (MixtureSubstance) result.getCreatedEntity();
230+
assertEquals(2, completed.mixture.components.stream().map(component -> component.type).filter(t->t.equals(componentTypeTrimmed)).count());
231+
assertEquals(1, completed.mixture.components.stream().map(component -> component.type).filter(t->t.equals(componentType2Trimmed)).count());
232+
}
233+
202234
}

gsrs-module-substances-core/src/main/java/ix/ginas/utils/validation/validators/MixtureValidator.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ public class MixtureValidator extends AbstractValidatorPlugin<Substance> {
2727
@Autowired
2828
private ReferenceRepository referenceRepository;
2929

30+
public final static String NO_LEAD_TRAIL_SPACES_IN_TYPE = "Mixture component type must not start or end with a space";
3031
@Override
3132
@Transactional(readOnly = true)
3233
public void validate(Substance objnew, Substance objold, ValidatorCallback callback) {
@@ -51,7 +52,7 @@ public void validate(Substance objnew, Substance objold, ValidatorCallback callb
5152
callback.addMessage(GinasProcessingMessage.ERROR_MESSAGE("Mixture components must specify a type"));
5253
} else if(c.type.length() != c.type.trim().length()) {
5354
c.type = c.type.trim();
54-
GinasProcessingMessage message = GinasProcessingMessage.WARNING_MESSAGE("Mixture component type must not start or end with a space");
55+
GinasProcessingMessage message = GinasProcessingMessage.WARNING_MESSAGE(NO_LEAD_TRAIL_SPACES_IN_TYPE);
5556
message.appliableChange(true);
5657
callback.addMessage(message);
5758
}else {

0 commit comments

Comments
 (0)