/** * Copyright (c) Codice Foundation * <p> * This is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser * General Public License as published by the Free Software Foundation, either version 3 of the * License, or any later version. * <p> * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. A copy of the GNU Lesser General Public License * is distributed along with this program and can be found at * <http://www.gnu.org/licenses/lgpl.html>. */ package org.codice.ddf.spatial.ogc.csw.catalog.common.transformer; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.hasItems; import static org.hamcrest.Matchers.is; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import java.util.ArrayList; import java.util.List; import org.junit.BeforeClass; import org.junit.Test; import org.osgi.framework.BundleContext; import org.osgi.framework.ServiceReference; import ddf.catalog.transform.InputTransformer; public class TransformerManagerTest { private static List<ServiceReference> serviceReferences = new ArrayList<>(); private static InputTransformer transformerA = mock(InputTransformer.class); private static InputTransformer transformerB = mock(InputTransformer.class); private static final String ID_A = "idA"; private static final String ID_B = "idB"; private static final String MIME_TYPE_A = "mimeTypeA"; private static final String MIME_TYPE_B = "mimeTypeB"; private static final String SCHEMA_A = "urn:example:schema:A"; private static final String SCHEMA_B = "urn:example:schema:B"; private static BundleContext mockContext = mock(BundleContext.class); private static class MockTransformerManager extends TransformerManager { public MockTransformerManager(List<ServiceReference> serviceReferences) { super(serviceReferences); } @Override protected BundleContext getBundleContext() { return mockContext; } } private static MockTransformerManager manager; @BeforeClass public static void setUp() { ServiceReference serviceRefA = mock(ServiceReference.class); ServiceReference serviceRefB = mock(ServiceReference.class); when(serviceRefA.getPropertyKeys()).thenReturn(new String[] {TransformerManager.ID, TransformerManager.SCHEMA, TransformerManager.MIME_TYPE}); when(serviceRefA.getProperty(TransformerManager.ID)).thenReturn(ID_A); when(serviceRefA.getProperty(TransformerManager.MIME_TYPE)).thenReturn(MIME_TYPE_A); when(serviceRefA.getProperty(TransformerManager.SCHEMA)).thenReturn(SCHEMA_A); when(serviceRefB.getPropertyKeys()).thenReturn(new String[] {TransformerManager.ID, TransformerManager.SCHEMA, TransformerManager.MIME_TYPE}); when(serviceRefB.getProperty(TransformerManager.ID)).thenReturn(ID_B); when(serviceRefB.getProperty(TransformerManager.MIME_TYPE)).thenReturn(MIME_TYPE_B); when(serviceRefB.getProperty(TransformerManager.SCHEMA)).thenReturn(SCHEMA_B); serviceReferences.add(serviceRefA); serviceReferences.add(serviceRefB); when(mockContext.getService(serviceRefA)).thenReturn(transformerA); when(mockContext.getService(serviceRefB)).thenReturn(transformerB); manager = new MockTransformerManager(serviceReferences); } @Test public void testGetAvailableMimeTypes() throws Exception { List<String> mimeTypes = manager.getAvailableMimeTypes(); assertThat(mimeTypes, hasItems(MIME_TYPE_A, MIME_TYPE_B)); } @Test public void testGetAvailableSchemas() throws Exception { List<String> schemas = manager.getAvailableSchemas(); assertThat(schemas, hasItems(SCHEMA_A, SCHEMA_B)); } @Test public void testGetTransformerBySchema() throws Exception { assertThat(manager.getTransformerBySchema(SCHEMA_A), is(transformerA)); assertThat(manager.getTransformerBySchema(SCHEMA_B), is(transformerB)); } @Test public void testGetTransformerByMimeType() throws Exception { assertThat(manager.getTransformerByMimeType(MIME_TYPE_A), is(transformerA)); assertThat(manager.getTransformerByMimeType(MIME_TYPE_B), is(transformerB)); } @Test public void testGetTransformerIdForSchema() throws Exception { assertThat(manager.getTransformerIdForSchema(SCHEMA_A), is(ID_A)); assertThat(manager.getTransformerIdForSchema(SCHEMA_B), is(ID_B)); } @Test public void testGetTransformerSchemaForId() throws Exception { assertThat(manager.getTransformerSchemaForId(ID_A), is(SCHEMA_A)); assertThat(manager.getTransformerSchemaForId(ID_B), is(SCHEMA_B)); } @Test public void testGetTransformerSchemaForInvalidId() throws Exception { assertThat(manager.getTransformerSchemaForId("abc123"), is("")); } @Test public void testGetTransformerIdForInvalidSchema() throws Exception { assertThat(manager.getTransformerIdForSchema("abc123"), is("")); } }