package edu.ualberta.med.biobank.test.presenters; import java.util.ArrayList; import java.util.List; import org.junit.Before; import org.junit.Test; import org.mockito.Mockito; import org.mockito.MockitoAnnotations; import com.google.inject.AbstractModule; import com.google.inject.Guice; import com.google.inject.Injector; import com.google.inject.Singleton; import com.google.inject.Stage; import com.google.web.bindery.event.shared.EventBus; import com.google.web.bindery.event.shared.SimpleEventBus; import edu.ualberta.med.biobank.common.action.Dispatcher; import edu.ualberta.med.biobank.common.action.info.StudyCountInfo; import edu.ualberta.med.biobank.model.ActivityStatus; import edu.ualberta.med.biobank.model.Comment; import edu.ualberta.med.biobank.mvp.PresenterModule; import edu.ualberta.med.biobank.mvp.presenter.impl.ActivityStatusComboPresenter; import edu.ualberta.med.biobank.mvp.presenter.impl.AddressEntryPresenter; import edu.ualberta.med.biobank.mvp.presenter.impl.FormManagerPresenter; import edu.ualberta.med.biobank.mvp.presenter.impl.SiteEntryPresenter; import edu.ualberta.med.biobank.mvp.user.ui.ListField; import edu.ualberta.med.biobank.mvp.user.ui.SelectedValueField; import edu.ualberta.med.biobank.mvp.user.ui.ValueField; import edu.ualberta.med.biobank.test.TestingDispatcher; public class TestSiteEntryPresenter { private Injector injector; private SiteEntryPresenter.View siteEntryView; private AddressEntryPresenter.View addressView; private ActivityStatusComboPresenter.View activityStatusView; @Before public void init() { MockitoAnnotations.initMocks(this); } @SuppressWarnings("unchecked") @Test public void testValidInput() { activityStatusView = Mockito .mock(ActivityStatusComboPresenter.View.class); addressView = Mockito.mock(AddressEntryPresenter.View.class); siteEntryView = Mockito.mock(SiteEntryPresenter.View.class); AbstractModule module = new AbstractModule() { @Override protected void configure() { install(new PresenterModule()); bind(EventBus.class).to(SimpleEventBus.class).in( Singleton.class); bind(Dispatcher.class).to(TestingDispatcher.class).in( Singleton.class); bind(ActivityStatusComboPresenter.View.class).toInstance( activityStatusView); bind(AddressEntryPresenter.View.class).toInstance(addressView); bind(FormManagerPresenter.View.class).toInstance( Mockito.mock(FormManagerPresenter.View.class)); bind(SiteEntryPresenter.View.class).toInstance(siteEntryView); } }; injector = Guice.createInjector(Stage.PRODUCTION, module); SiteEntryPresenter presenter = injector .getInstance(SiteEntryPresenter.class); ValueField<String> nameHs = Mockito.mock(ValueField.class); ValueField<String> nameShortHs = Mockito.mock(ValueField.class); ValueField<List<Comment>> commentsHs = Mockito.mock(ValueField.class); ListField<StudyCountInfo> studiesHs = Mockito .mock(ListField.class); ValueField<String> nullString = Mockito.mock(ValueField.class); SelectedValueField<ActivityStatus> astatus = Mockito .mock(SelectedValueField.class); List<Comment> comments = new ArrayList<Comment>(); Mockito.when(nameHs.getValue()).thenReturn("Test Site"); Mockito.when(nameShortHs.getValue()).thenReturn("TS"); Mockito.when(commentsHs.getValue()).thenReturn(comments); Mockito.when(nullString.getValue()).thenReturn(null); Mockito.when(astatus.getValue()).thenReturn(ActivityStatus.ACTIVE); Mockito.when(siteEntryView.getName()).thenReturn(nameHs); Mockito.when(siteEntryView.getNameShort()).thenReturn(nameShortHs); // Mockito.when(siteEntryView.getCommentCollection()).thenReturn( // commentsHs); Mockito.when(siteEntryView.getStudies()).thenReturn(studiesHs); Mockito.when(addressView.getStreet1()).thenReturn(nullString); Mockito.when(addressView.getStreet2()).thenReturn(nullString); Mockito.when(addressView.getCity()).thenReturn(nullString); Mockito.when(addressView.getProvince()).thenReturn(nullString); Mockito.when(addressView.getPostalCode()).thenReturn(nullString); Mockito.when(addressView.getPhoneNumber()).thenReturn(nullString); Mockito.when(addressView.getFaxNumber()).thenReturn(nullString); Mockito.when(addressView.getCountry()).thenReturn(nullString); Mockito.when(activityStatusView.getActivityStatus()) .thenReturn(astatus); presenter.bind(); try { // TODO: deal with this better presenter.createSite(); } catch (Exception e) { throw new RuntimeException(e); } siteEntryView.getSave(); } }