package org.springframework.roo.project.packaging; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import static org.mockito.Mockito.when; import java.util.Arrays; import java.util.Collection; import java.util.List; import org.junit.Before; import org.junit.Test; import org.mockito.Mock; import org.mockito.MockitoAnnotations; /** * Unit test of {@link PackagingProviderRegistryImpl} * * @author Andrew Swan * @since 1.2.0 */ public class PackagingProviderRegistryTest { private static final String CORE_JAR_ID = "jar"; private static final String CORE_WAR_ID = "war"; private static final String CUSTOM_JAR_ID = "jar_custom"; @Mock private CorePackagingProvider mockCoreJarPackaging; @Mock private PackagingProvider mockCustomJarPackaging; @Mock private CorePackagingProvider mockWarPackaging; // Fixture private PackagingProviderRegistryImpl registry; @Before public void setUp() { // Mocks MockitoAnnotations.initMocks(this); setUpMockPackagingProvider(mockCoreJarPackaging, CORE_JAR_ID, true); setUpMockPackagingProvider(mockCustomJarPackaging, CUSTOM_JAR_ID, true); setUpMockPackagingProvider(mockWarPackaging, CORE_WAR_ID, false); // Object under test registry = new PackagingProviderRegistryImpl(); registry.bindPackagingProvider(mockCoreJarPackaging); registry.bindPackagingProvider(mockCustomJarPackaging); registry.bindPackagingProvider(mockWarPackaging); } private void setUpMockPackagingProvider(final PackagingProvider mockPackagingProvider, final String id, final boolean isDefault) { when(mockPackagingProvider.getId()).thenReturn(id); when(mockPackagingProvider.isDefault()).thenReturn(isDefault); } @Test public void testGetAllPackagingProviders() { // Invoke final Collection<PackagingProvider> packagingProviders = registry.getAllPackagingProviders(); // Check final List<PackagingProvider> expectedProviders = Arrays.asList(mockCoreJarPackaging, mockCustomJarPackaging, mockWarPackaging); assertEquals(expectedProviders.size(), packagingProviders.size()); assertTrue(packagingProviders.containsAll(expectedProviders)); } @Test public void testGetDefaultPackagingProviderWhenACustomIsDefault() { assertEquals(mockCustomJarPackaging, registry.getDefaultPackagingProvider()); } @Test public void testGetDefaultPackagingProviderWhenNoCustomIsDefault() { when(mockCustomJarPackaging.isDefault()).thenReturn(false); assertEquals(mockCoreJarPackaging, registry.getDefaultPackagingProvider()); } @Test public void testGetPackagingProviderByInvalidId() { assertNull(registry.getPackagingProvider("no-such-provider")); } @Test public void testGetPackagingProviderByValidId() { assertEquals(mockCustomJarPackaging, registry.getPackagingProvider(CUSTOM_JAR_ID)); } }