package org.om.core.impl.persistence.interceptor.handler; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.notNullValue; import static org.hamcrest.Matchers.nullValue; import static org.junit.Assert.assertThat; import org.junit.Test; import org.om.core.api.mapping.EntityMapping; import org.om.core.api.mapping.MappedField; import org.om.core.api.persistence.PersistenceAdapter; import org.om.core.impl.mapping.extractor.EntityMappingExtractorImpl; import org.om.core.impl.test.EntityWithPrimitiveProperties; public class PrimitivePropertyHandlerTest { private PrimitiveHandler handler = new PrimitiveHandler(); @Test public void testNullInput() { EntityMapping entityMapping = new EntityMappingExtractorImpl().extract(EntityWithPrimitiveProperties.class); MappedField field = entityMapping.getByFieldName("fieldWithDefaultSettings"); assertThat(field, notNullValue()); PersistenceAdapter delegate = new TestingPassThroughPersistenceAdapter(null); Object retrieve = handler.retrieve(field, delegate); assertThat(retrieve, nullValue()); } @Test public void testWithStringInput() { EntityMapping entityMapping = new EntityMappingExtractorImpl().extract(EntityWithPrimitiveProperties.class); MappedField field = entityMapping.getByFieldName("fieldWithDefaultSettings"); PersistenceAdapter delegate = new TestingPassThroughPersistenceAdapter("I'm a String!"); String retrieve = (String) handler.retrieve(field, delegate); assertThat(retrieve, notNullValue()); assertThat(retrieve, is("I'm a String!")); } @Test public void testIntegerFieldWithStringInput() { EntityMapping entityMapping = new EntityMappingExtractorImpl().extract(EntityWithPrimitiveProperties.class); MappedField field = entityMapping.getByFieldName("primitiveInt"); PersistenceAdapter delegate = new TestingPassThroughPersistenceAdapter("1234"); Integer retrieve = (Integer) handler.retrieve(field, delegate); assertThat(retrieve, notNullValue()); assertThat(retrieve, is(1234)); } @Test(expected = NumberFormatException.class) public void testIntegerFieldWithInvalidStringInput() { EntityMapping entityMapping = new EntityMappingExtractorImpl().extract(EntityWithPrimitiveProperties.class); MappedField field = entityMapping.getByFieldName("primitiveInt"); PersistenceAdapter delegate = new TestingPassThroughPersistenceAdapter("BAM"); Integer retrieve = (Integer) handler.retrieve(field, delegate); assertThat(retrieve, notNullValue()); assertThat(retrieve, is(1234)); } }