package com.ctp.cdi.query.meta.extractor; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; import org.junit.Test; import com.ctp.cdi.query.Dao; import com.ctp.cdi.query.meta.DaoEntity; import com.ctp.cdi.query.test.domain.Simple; import com.ctp.cdi.query.test.service.DaoInterface; public class AnnotationMetadataExtractorTest { @Test public void should_extract_entity_class_from_dao_annotation() { // given AnnotationMetadataExtractor extractor = new AnnotationMetadataExtractor(); // when DaoEntity result = extractor.extract(DaoInterface.class); // then assertNotNull(result); assertEquals(Simple.class, result.getEntityClass()); assertEquals(Long.class, result.getPrimaryClass()); } @Test public void should_throw_excption_when_annotation_with_entity_class_not_present() { // given AnnotationMetadataExtractor extractor = new AnnotationMetadataExtractor(); // when DaoEntity result = extractor.extract(NoEntityPresentDao.class); // then assertNull(result); } @Test public void should_throw_exception_when_annotation_with_non_entity_class() { // given AnnotationMetadataExtractor extractor = new AnnotationMetadataExtractor(); // when DaoEntity result = extractor.extract(NonEntityDao.class); // then assertNull(result); } @Dao private static class NoEntityPresentDao { } @Dao(Object.class) private static class NonEntityDao { } }