package org.springframework.roo.classpath.details; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.SortedMap; import java.util.TreeMap; import org.junit.Test; import org.springframework.roo.classpath.PhysicalTypeCategory; import org.springframework.roo.model.CustomData; import org.springframework.roo.model.DataType; import org.springframework.roo.model.JavaPackage; import org.springframework.roo.model.JavaType; /** * Unit test of {@link DefaultItdTypeDetails} * * @author Andrew Swan * @since 1.2.0 */ public class DefaultItdTypeDetailsTest extends ItdTypeDetailsTestCase { private static final String MINIMAL_ITD = "// WARNING: DO NOT EDIT THIS FILE. THIS FILE IS MANAGED BY SPRING ROO.\n" + "// You may push code into the target .java compilation unit if you wish to edit any member(s).\n" + "\n" + "package com.foo.bar;\n" + "\n" + "import com.foo.bar.Person;\n" + "\n" + "aspect Person_Roo_Extra {\n" + " \n" + "}\n"; @Test public void testMinimalInstance() { // Set up final boolean privilegedAspect = false; final int modifier = 42; final ClassOrInterfaceTypeDetails mockGovernor = mock(ClassOrInterfaceTypeDetails.class); when(mockGovernor.getPhysicalTypeCategory()).thenReturn(PhysicalTypeCategory.CLASS); final JavaPackage mockPackage = mock(JavaPackage.class); when(mockPackage.getFullyQualifiedPackageName()).thenReturn("com.foo.bar"); final JavaType mockGovernorType = mock(JavaType.class); when(mockGovernorType.getPackage()).thenReturn(mockPackage); when(mockGovernor.getType()).thenReturn(mockGovernorType); when(mockGovernorType.getSimpleTypeName()).thenReturn("Person"); when(mockGovernorType.getFullyQualifiedTypeName()).thenReturn("com.foo.bar.Person"); when(mockGovernorType.getDataType()).thenReturn(DataType.TYPE); final CustomData mockCustomData = mock(CustomData.class); final JavaType mockAspectType = mock(JavaType.class); when(mockAspectType.getPackage()).thenReturn(mockPackage); when(mockAspectType.isDefaultPackage()).thenReturn(false); when(mockAspectType.getSimpleTypeName()).thenReturn("Person_Roo_Extra"); SortedMap<JavaType, Boolean> imports = new TreeMap<JavaType, Boolean>(); final JavaType mockImportType = mock(JavaType.class); when(mockImportType.getSimpleTypeName()).thenReturn("Person"); when(mockImportType.getFullyQualifiedTypeName()).thenReturn("com.foo.bar.Person"); when(mockImportType.getDataType()).thenReturn(DataType.TYPE); imports.put(mockImportType, false); final String declaredByMetadataId = "MID:foo#bar"; // Invoke final DefaultItdTypeDetails itd = new DefaultItdTypeDetails(mockCustomData, declaredByMetadataId, modifier, mockGovernor, mockAspectType, privilegedAspect, imports, null, null, null, null, null, null, null, null, null, null); // Check assertEquals(0, itd.getAnnotations().size()); assertEquals(0, itd.getDeclaredConstructors().size()); assertEquals(0, itd.getDeclaredFields().size()); assertEquals(0, itd.getDeclaredInitializers().size()); assertEquals(0, itd.getDeclaredInnerTypes().size()); assertEquals(0, itd.getDeclaredMethods().size()); assertEquals(0, itd.getExtendsTypes().size()); assertEquals(0, itd.getFieldAnnotations().size()); assertEquals(0, itd.getImplementsTypes().size()); assertEquals(0, itd.getInnerTypes().size()); assertEquals(0, itd.getDeclarePrecedence().size()); assertEquals(0, itd.getMethodAnnotations().size()); assertEquals(1, itd.getRegisteredImports().size()); assertEquals(mockAspectType, itd.getAspect()); assertEquals(mockCustomData, itd.getCustomData()); assertEquals(declaredByMetadataId, itd.getDeclaredByMetadataId()); assertEquals(modifier, itd.getModifier()); assertEquals(mockGovernorType, itd.getType()); assertEquals(DefaultItdTypeDetails.PHYSICAL_TYPE_CATEGORY, itd.getPhysicalTypeCategory()); assertEquals(privilegedAspect, itd.isPrivilegedAspect()); assertEquals(mockGovernor, itd.getGovernor()); assertFalse(itd.extendsType(mock(JavaType.class))); assertOutput(MINIMAL_ITD, itd); } }