/**
* This Source Code Form is subject to the terms of the Mozilla Public License,
* v. 2.0. If a copy of the MPL was not distributed with this file, You can
* obtain one at http://mozilla.org/MPL/2.0/. OpenMRS is also distributed under
* the terms of the Healthcare Disclaimer located at http://openmrs.org/license.
*
* Copyright (C) OpenMRS Inc. OpenMRS is a registered trademark and the OpenMRS
* graphic logo is a trademark of OpenMRS Inc.
*/
package org.openmrs.api.handler;
import java.util.Date;
import org.junit.Assert;
import org.junit.Test;
import org.openmrs.BaseOpenmrsObject;
import org.openmrs.ConceptReferenceTerm;
import org.openmrs.ConceptSource;
import org.openmrs.OpenmrsObject;
import org.openmrs.Role;
import org.openmrs.User;
import org.openmrs.annotation.AllowEmptyStrings;
import org.openmrs.annotation.AllowLeadingOrTrailingWhitespace;
/**
* Tests for {@link OpenmrsObjectSaveHandler}
*/
public class OpenmrsObjectSaveHandlerTest {
/**
* @see OpenmrsObjectSaveHandler#handle(OpenmrsObject,User,Date,String)
*/
@Test
public void handle_shouldSetEmptyStringPropertiesToNull() {
Role role = new Role();
role.setName("");
role.setDescription("");
role.setRole("");
new OpenmrsObjectSaveHandler().handle(role, null, null, null);
Assert.assertNull(role.getName());
Assert.assertNull(role.getDescription());
Assert.assertNull(role.getRole());
}
/**
* @see OpenmrsObjectSaveHandler#handle(OpenmrsObject,User,Date,String)
*/
@Test
public void handle_shouldNotSetEmptyStringPropertiesToNullForAllowEmptyStringsAnnotation() {
SomeClass obj = new SomeClass("");
new OpenmrsObjectSaveHandler().handle(obj, null, null, null);
Assert.assertNotNull(obj.getName());
}
/**
* @see OpenmrsObjectSaveHandler#handle(OpenmrsObject,User,Date,String)
*/
@Test
public void handle_shouldNotTrimEmptyStringsForAllowLeadingOrTrailingWhitespaceAnnotation() {
SomeClass obj = new SomeClass(null, " ");
new OpenmrsObjectSaveHandler().handle(obj, null, null, null);
Assert.assertNotNull(obj.getDescription());
}
/**
* @see OpenmrsObjectSaveHandler#handle(OpenmrsObject,User,Date,String)
*/
@Test
public void handle_shouldTrimStringsWithoutAllowLeadingOrTrailingWhitespaceAnnotation() {
ConceptReferenceTerm term = new ConceptReferenceTerm();
term.setCode(" code ");
term.setConceptSource(new ConceptSource(1));
new OpenmrsObjectSaveHandler().handle(term, null, null, null);
Assert.assertEquals("code", term.getCode());
}
/**
* @see OpenmrsObjectSaveHandler#handle(OpenmrsObject,User,Date,String)
*/
@Test
public void handle_shouldTrimEmptyStringsForAllowEmptyStringsAnnotation() {
SomeClass obj = new SomeClass(" name ");
new OpenmrsObjectSaveHandler().handle(obj, null, null, null);
Assert.assertEquals("name", obj.getName());
}
public class SomeClass extends BaseOpenmrsObject {
private Integer id;
private String name;
private String description;
public SomeClass(String name) {
setName(name);
}
public SomeClass(String name, String description) {
setName(name);
setDescription(description);
}
public String getName() {
return name;
}
@AllowEmptyStrings
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
@AllowLeadingOrTrailingWhitespace
public void setDescription(String description) {
this.description = description;
}
@Override
public void setId(Integer id) {
this.id = id;
}
@Override
public Integer getId() {
return id;
}
}
}