package org.pentaho.platform.dataaccess.datasource.wizard; import org.jmock.Mockery; import org.jmock.integration.junit4.JUnit4Mockery; import org.junit.Test; import static org.junit.Assert.*; import org.pentaho.platform.dataaccess.datasource.wizard.models.IWizardModel; import org.pentaho.platform.dataaccess.datasource.wizard.models.WizardModel; import org.pentaho.platform.dataaccess.datasource.wizard.service.IXulAsyncDatasourceService; import org.pentaho.platform.dataaccess.datasource.wizard.sources.query.QueryDatasource; import org.pentaho.ui.xul.XulException; /** * User: nbaker * Date: 3/31/11 */ public class WizardModelTest { Mockery context = new JUnit4Mockery(); @Test public void testDatasourceAdditionAndRemoval(){ WizardModel model = new WizardModel(); QueryDatasource queryDatasource = new QueryDatasource( context.mock(IXulAsyncDatasourceService.class), null); model.addDatasource(queryDatasource); assertTrue(model.getDatasources().contains(queryDatasource)); model.removeDatasourceByType(QueryDatasource.class); assertFalse(model.getDatasources().contains(queryDatasource)); } @Test /** * Due to the initialization path of the wizard, datasources may be added after a call to remove them has come in from * the client. In this case the addition should be ignored */ public void testIgnoredAddition() throws XulException { WizardModel model = new WizardModel(); model.removeDatasourceByType(QueryDatasource.class); IXulAsyncDatasourceService datasource = context.mock(IXulAsyncDatasourceService.class); QueryDatasource queryDatasource = new QueryDatasource(datasource , null); model.addDatasource(queryDatasource); assertFalse(model.getDatasources().contains(queryDatasource)); // this mechninism shouldn't prevent subclasses from being added though QueryDatasource subClass = new QueryDatasource( datasource, null){ }; model.addDatasource(subClass); assertTrue(model.getDatasources().contains(subClass)); } }