/**
* 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;
import org.junit.Assert;
import org.junit.Test;
import org.openmrs.api.context.Context;
import org.openmrs.test.BaseContextSensitiveTest;
/**
* Tests the {@link ConceptNumeric} object
*/
public class ConceptNumericTest extends BaseContextSensitiveTest {
/**
* Regression test for TRUNK-82 (old TRAC-1511)
*
* @see ConceptNumeric#equals(Object)
*/
@Test
public void equals_shouldNotReturnTrueIfObjIsConcept() {
ConceptNumeric cn = new ConceptNumeric(123);
Concept c = new Concept(123);
Assert.assertNotSame(c, cn);
Assert.assertNotSame(cn, c);
}
@Test
public void equals_shouldNotBeTheSameReference() {
Concept c = new Concept(123);
ConceptNumeric cn = new ConceptNumeric(c);
Assert.assertNotSame(c.getAnswers(), cn.getAnswers());
Assert.assertNotSame(c.getConceptSets(), cn.getConceptSets());
Assert.assertNotSame(cn.getConceptSets(), c.getConceptSets());
Assert.assertNotSame(c.getNames(), cn.getNames());
Assert.assertNotSame(c.getConceptMappings(), cn.getConceptMappings());
Assert.assertNotSame(c.getDescriptions(), cn.getDescriptions());
}
@Test
public void shouldChangeConceptAnswerReferenceToParentConcept() {
Concept c = new Concept(123);
c.addAnswer(new ConceptAnswer(1));
c.addAnswer(new ConceptAnswer(2));
ConceptNumeric cn = new ConceptNumeric(c);
for (ConceptAnswer cAnswer : cn.getAnswers()) {
Assert.assertSame(cn, cAnswer.getConcept());
}
}
@Test
public void shouldChangeConceptSetReferenceToParentConcept() {
Concept c = new Concept(123);
c.addSetMember(new Concept(1));
c.addSetMember(new Concept(2));
ConceptNumeric cn = new ConceptNumeric(c);
for (ConceptSet cSet : cn.getConceptSets()) {
Assert.assertSame(cn, cSet.getConceptSet());
}
}
@Test
public void shouldChangeConceptNameReferenceToParentConcept() {
Concept c = new Concept(123);
c.addName(new ConceptName(1));
c.addName(new ConceptName(2));
ConceptNumeric cn = new ConceptNumeric(c);
for (ConceptName cName : cn.getNames()) {
Assert.assertSame(cn, cName.getConcept());
}
}
@Test
public void shouldChangeConceptDescriptionReferenceToParentConcept() {
Concept c = new Concept(123);
c.addDescription(new ConceptDescription(1));
c.addDescription(new ConceptDescription(2));
ConceptNumeric cn = new ConceptNumeric(c);
for (ConceptDescription cDesc : cn.getDescriptions()) {
Assert.assertSame(cn, cDesc.getConcept());
}
}
@Test
public void shouldChangeConceptMapReferenceToParentConcept() {
Concept c = new Concept(123);
c.getConceptMappings().add(new ConceptMap(1));
c.getConceptMappings().add(new ConceptMap(2));
ConceptNumeric cn = new ConceptNumeric(c);
for (ConceptMap cMap : cn.getConceptMappings()) {
Assert.assertSame(cn, cMap.getConcept());
}
}
/**
* Tests if {@link org.openmrs.api.ConceptService#saveConcept(Concept)} saves a ConceptNumeric with allowDecimal value
*/
@Test
public void shouldSaveAConceptNumericWithAllowDecimalValue() {
Concept c = Context.getConceptService().getConcept(22);
ConceptNumeric cn = new ConceptNumeric(c);
cn.addDescription(new ConceptDescription("some description", null));
Context.getConceptService().saveConcept(cn);
Assert.assertFalse(Context.getConceptService().getConceptNumeric(22).getAllowDecimal());
cn.setAllowDecimal(true);
Context.getConceptService().saveConcept(cn);
Assert.assertTrue(Context.getConceptService().getConceptNumeric(22).getAllowDecimal());
}
}