package com.processpuzzle.persistence.typemapping.domain; import static org.hamcrest.core.Is.is; import static org.hamcrest.core.IsEqual.equalTo; import static org.hamcrest.core.IsInstanceOf.instanceOf; import static org.hamcrest.core.IsNull.nullValue; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertThat; import static org.junit.Assume.assumeThat; import java.util.List; import java.util.Set; import org.junit.Ignore; import org.junit.Test; import com.processpuzzle.fundamental_types.possiblevalue.domain.PossibleValueDefinition; import com.processpuzzle.fundamental_types.possiblevalue.domain.QuantityEnumeration; import com.processpuzzle.fundamental_types.possiblevalue.domain.QuantityRange; import com.processpuzzle.fundamental_types.possiblevalue.domain.StringEnumeration; import com.processpuzzle.fundamental_types.quantity.domain.Quantity; import com.processpuzzle.fundamental_types.quantity.domain.Units; import com.processpuzzle.litest.template.RepositoryTestTemplate; import com.processpuzzle.persistence.domain.DefaultUnitOfWork; import com.processpuzzle.persistence.domain.TestEntity; import com.processpuzzle.persistence.domain.TestEntityRepository; import com.processpuzzle.sharedfixtures.domaintier.DomainTierTestConfiguration; public class PossibleValueDefinitionTypeMappingTest extends RepositoryTestTemplate<TestEntityRepository, PossibleValueDefinitionTypeMappingTestFixture, TestEntity> { public PossibleValueDefinitionTypeMappingTest() { super( DomainTierTestConfiguration.FIXTURE_CONTAINER_DEFINITION_PATH ); } @Ignore @Test public void testValueForRange() { DefaultUnitOfWork work = new DefaultUnitOfWork( true ); TestEntity retrievedTestEntity = repository.findById( work, fixture.getTestEntity().getId() ); work.finish(); PossibleValueDefinition expectedValeDefinition = fixture.getTestEntity().getPossibleValues(); assumeThat( expectedValeDefinition, instanceOf( QuantityRange.class ) ); PossibleValueDefinition retrievedValueDefinition = retrievedTestEntity.getPossibleValues(); assertThat( retrievedValueDefinition, instanceOf( QuantityRange.class ) ); Quantity expectedMinValue = ((QuantityRange) expectedValeDefinition).getMinValue(); Quantity retrievedMinValue = ((QuantityRange) retrievedValueDefinition).getMinValue(); assertThat( expectedMinValue.getAmount(), equalTo( retrievedMinValue.getAmount() ) ); assertThat( expectedMinValue.getUnit().getSymbol(), equalTo( retrievedMinValue.getUnit().getSymbol() ) ); Quantity expectedMaxValue = ((QuantityRange) expectedValeDefinition).getMaxValue(); Quantity retrievedMaxValue = ((QuantityRange) retrievedValueDefinition).getMaxValue(); assertThat( expectedMaxValue.getAmount(), equalTo( retrievedMaxValue.getAmount() ) ); assertThat( expectedMaxValue.getUnit().getSymbol(), equalTo( retrievedMaxValue.getUnit().getSymbol() ) ); assertEquals( databaseSpy.retrieveColumnFromRow( "T_TEST_ENTITY", root.getId(), String.class, "valueDefinitionClassDiscriminator" ), "com.processpuzzle.framework.fundamental_types.domain.possible_value.QuantityRange" ); assertThat( fixture.getMinValue().getAmount(), equalTo( databaseSpy.retrieveColumnFromRow( "T_TEST_ENTITY", root.getId(), Double.class, "minAmount" ) ) ); assertThat( fixture.getMinValue().getUnit().getSymbol(), equalTo( databaseSpy.retrieveColumnFromRow( "T_TEST_ENTITY", root.getId(), String.class, "minUnit" ) ) ); assertThat( fixture.getMaxValue().getAmount(), equalTo( databaseSpy.retrieveColumnFromRow( "T_TEST_ENTITY", root.getId(), Double.class, "maxAmount" ) ) ); assertThat( fixture.getMinValue().getUnit().getSymbol(), equalTo( databaseSpy.retrieveColumnFromRow( "T_TEST_ENTITY", root.getId(), String.class, "maxUnit" ) ) ); assertThat( databaseSpy.retrieveColumnFromRow( "T_TEST_ENTITY", root.getId(), String.class, "possibleValues" ), nullValue() ); } @Ignore @Test public void testValueForQuantityEnumeration() { // SETUP Quantity enumValue1 = new Quantity( new Double( 5 ), fixture.getMeasurementContext().findUnitBySymbol( Units.PIECE ) ); // 5 db Quantity enumValue2 = new Quantity( new Double( 10 ), fixture.getMeasurementContext().findUnitBySymbol( Units.PIECE ) ); // 10 db Quantity enumValue3 = new Quantity( new Double( 12 ), fixture.getMeasurementContext().findUnitBySymbol( Units.PIECE ) ); // 12 db Quantity enumValue4 = new Quantity( new Double( 15 ), fixture.getMeasurementContext().findUnitBySymbol( Units.PIECE ) ); // 15 db DefaultUnitOfWork work = new DefaultUnitOfWork( true ); TestEntity testEntityForEnumeration = new TestEntity( "Test Entity with enumeration possible value definition" ); PossibleValueDefinition valueEnumeration = new QuantityEnumeration(); valueEnumeration.addPossibleValue( enumValue1 ); valueEnumeration.addPossibleValue( enumValue2 ); valueEnumeration.addPossibleValue( enumValue3 ); valueEnumeration.addPossibleValue( enumValue4 ); testEntityForEnumeration.setPossibleValues( valueEnumeration ); repository.add( work, testEntityForEnumeration ); work.finish(); // VERIFY work = new DefaultUnitOfWork( true ); TestEntity retrievedTestEntity = repository.findById( work, testEntityForEnumeration.getId() ); work.finish(); PossibleValueDefinition expectedValeDefinition = testEntityForEnumeration.getPossibleValues(); assumeThat( expectedValeDefinition, instanceOf( QuantityEnumeration.class ) ); PossibleValueDefinition retrievedValueDefinition = retrievedTestEntity.getPossibleValues(); assertThat( retrievedValueDefinition, instanceOf( QuantityEnumeration.class ) ); Set<Quantity> retrievedValues = ((QuantityEnumeration) retrievedValueDefinition).getValues(); assertThat( retrievedValues.size(), is( 4 ) ); assertThat( retrievedValues.contains( enumValue1 ), is( true ) ); assertThat( retrievedValues.contains( enumValue2 ), is( true ) ); assertThat( retrievedValues.contains( enumValue3 ), is( true ) ); assertThat( retrievedValues.contains( enumValue4 ), is( true ) ); assertThat( (String) databaseSpy.retrieveColumnFromRow( "T_TEST_ENTITY", retrievedTestEntity.getId(), String.class, "valueDefinitionClassDiscriminator" ), equalTo( "com.processpuzzle.framework.fundamental_types.domain.possible_value.QuantityEnumeration" ) ); assertThat( databaseSpy.retrieveColumnFromRow( "T_TEST_ENTITY", retrievedTestEntity.getId(), Double.class, "minAmount" ), nullValue() ); assertThat( databaseSpy.retrieveColumnFromRow( "T_TEST_ENTITY", retrievedTestEntity.getId(), String.class, "minUnit" ), nullValue() ); assertThat( databaseSpy.retrieveColumnFromRow( "T_TEST_ENTITY", retrievedTestEntity.getId(), Double.class, "maxAmount" ), nullValue() ); assertThat( databaseSpy.retrieveColumnFromRow( "T_TEST_ENTITY", retrievedTestEntity.getId(), String.class, "maxUnit" ), nullValue() ); assertThat( (String) databaseSpy.retrieveColumnFromRow( "T_TEST_ENTITY", retrievedTestEntity.getId(), String.class, "possibleValues" ), equalTo( "5.0 pc;10.0 pc;12.0 pc;15.0 pc" ) ); } @Ignore @Test public void testValueForStringEnumeration() { // SETUP DefaultUnitOfWork work = new DefaultUnitOfWork( true ); TestEntity testEntityForEnumeration = new TestEntity( "Test Entity with string enumeration possible value definition" ); PossibleValueDefinition valueEnumeration = new StringEnumeration(); valueEnumeration.addPossibleValue( "k�rte" ); valueEnumeration.addPossibleValue( "alma" ); valueEnumeration.addPossibleValue( "szilva" ); testEntityForEnumeration.setPossibleValues( valueEnumeration ); repository.add( work, testEntityForEnumeration ); work.finish(); // VERIFY work = new DefaultUnitOfWork( true ); TestEntity retrievedTestEntity = repository.findById( work, testEntityForEnumeration.getId() ); work.finish(); PossibleValueDefinition expectedValeDefinition = testEntityForEnumeration.getPossibleValues(); assumeThat( expectedValeDefinition, instanceOf( StringEnumeration.class ) ); PossibleValueDefinition retrievedValueDefinition = retrievedTestEntity.getPossibleValues(); assertThat( retrievedValueDefinition, instanceOf( StringEnumeration.class ) ); List<String> retrievedValues = ((StringEnumeration) retrievedValueDefinition).getValues(); assertThat( retrievedValues.size(), is( 3 ) ); assertThat( retrievedValues.contains( "körte" ), is( true ) ); assertThat( retrievedValues.contains( "alma" ), is( true ) ); assertThat( retrievedValues.contains( "szilva" ), is( true ) ); assertThat( (String) databaseSpy.retrieveColumnFromRow( "T_TEST_ENTITY", retrievedTestEntity.getId(), String.class, "valueDefinitionClassDiscriminator" ), equalTo( "com.processpuzzle.framework.fundamental_types.domain.possible_value.StringEnumeration" ) ); assertThat( databaseSpy.retrieveColumnFromRow( "T_TEST_ENTITY", retrievedTestEntity.getId(), Double.class, "minAmount" ), nullValue() ); assertThat( databaseSpy.retrieveColumnFromRow( "T_TEST_ENTITY", retrievedTestEntity.getId(), String.class, "minUnit" ), nullValue() ); assertThat( databaseSpy.retrieveColumnFromRow( "T_TEST_ENTITY", retrievedTestEntity.getId(), Double.class, "maxAmount" ), nullValue() ); assertThat( databaseSpy.retrieveColumnFromRow( "T_TEST_ENTITY", retrievedTestEntity.getId(), String.class, "maxUnit" ), nullValue() ); assertThat( (String) databaseSpy.retrieveColumnFromRow( "T_TEST_ENTITY", retrievedTestEntity.getId(), String.class, "possibleValues" ), equalTo( "körte;alma;szilva" ) ); } @Override public void testAdd_ForOwnedAttributesAndComponents() { // TODO Auto-generated method stub } @Override public void testAdd_ForReferencedAggregateRoots() { // TODO Auto-generated method stub } @Override public void testDelete_ForOwnedAttributesAndComponents() { // TODO Auto-generated method stub } @Override public void testFindAll_ForResultCount() { // TODO Auto-generated method stub } @Override public void testFindById() { // TODO Auto-generated method stub } @Override public void testFindById_ForEagerLoadedComponents() { // TODO Auto-generated method stub } @Override public void testFindById_ForLazyLoadedComponents() { // TODO Auto-generated method stub } @Override public void testFindByQuery_ForComponentAttributes() { // TODO Auto-generated method stub } @Override public void testFindByQuery_ForDirectAttributes() { // TODO Auto-generated method stub } @Override public void testUpdate_ForOwnedAttributesAndComponents() { // TODO Auto-generated method stub } @Override public void testUpdate_ForReferencedAggregateRoots() { // TODO Auto-generated method stub } }