package org.pentaho.platform.plugin.action.mondrian.catalog; import org.junit.Test; import org.pentaho.platform.api.repository2.unified.IUnifiedRepository; import org.pentaho.platform.api.repository2.unified.RepositoryFile; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.core.StringContains.containsString; import static org.mockito.Matchers.any; import static org.mockito.Matchers.anyString; import static org.mockito.Mockito.*; import static org.mockito.Mockito.doNothing; /** * Thee tests related to MONDRIAN-2229 issue */ public class MondrianCatalogHelper_Mondrian_2229_Test { @Test public void testGenerateInMemoryDatasourcesXml_DataSourceNameProviderUsingLegacyDbName() throws Exception { String result = prepareResultForMondrian2229Tests( true ); assertThat( result, containsString( "<DataSourceName>Provider=Mondrian</DataSourceName>" ) ); } @Test public void testGenerateInMemoryDatasourcesXml_DataSourceNameProviderNotUsingLegacyDbName() throws Exception { String result = prepareResultForMondrian2229Tests( false ); assertThat( result, containsString( "<DataSourceName>Pentaho Mondrian</DataSourceName>" ) ); } @Test public void testGenerateInMemoryDatasourcesXml_DataSourceInfoProvider() throws Exception { String result = prepareResultForMondrian2229Tests( true ); assertThat( result, containsString( "<DataSourceInfo>Provider=Mondrian</DataSourceInfo>" ) ); } private String prepareResultForMondrian2229Tests( boolean isUseLegacyDbName ) { MondrianCatalogHelper helper = new MondrianCatalogHelper( isUseLegacyDbName ); MondrianCatalogHelper helperSpy = spy( helper ); IUnifiedRepository unifiedRepositoryMock = mock( IUnifiedRepository.class ); RepositoryFile repositoryFileMock = mock( RepositoryFile.class ); when( unifiedRepositoryMock.getFile( any( String.class ) ) ).thenReturn( repositoryFileMock ); String contextPathStub = "Stub"; doReturn( contextPathStub ).when( helperSpy ).contextPathFromRequestContextHolder(); doNothing().when( helperSpy ) .appendCatalogsSection( any( IUnifiedRepository.class ), anyString(), any( RepositoryFile.class ), any( StringBuffer.class ) ); return helperSpy.generateInMemoryDatasourcesXml( unifiedRepositoryMock ); } }