package tv.dyndns.kishibe.qmaclone.client.ranking; import static org.mockito.Mockito.verify; import java.util.List; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.Mock; import org.mockito.runners.MockitoJUnitRunner; import tv.dyndns.kishibe.qmaclone.client.ServiceAsync; import tv.dyndns.kishibe.qmaclone.client.packet.PacketMonth; import com.google.common.collect.ImmutableList; @RunWith(MockitoJUnitRunner.class) public class DateRangeSelectorPresenterTest { private static final int FAKE_YEAR = 2112; private static final int FAKE_MONTH = 9; private static final List<PacketMonth> FAKE_MONTHS = ImmutableList.of(new PacketMonth( FAKE_YEAR, FAKE_MONTH)); @Mock private ServiceAsync mockService; @Mock private ThemeRankingPresenter mockThemeRankingPresenter; @Mock private DateRangeSelectorPresenter.View mockView; private DateRangeSelectorPresenter presenter; @Before public void setUp() throws Exception { presenter = new DateRangeSelectorPresenter(mockService, mockThemeRankingPresenter); presenter.setView(mockView); } @After public void tearDown() throws Exception { verify(mockService).getThemeRankingDateRanges(presenter.callbackGetThemeRankingDateRanges); } @Test public void callbackGetThemeRankingDateRangesShouldSetDateRangeToView() { presenter.callbackGetThemeRankingDateRanges.onSuccess(FAKE_MONTHS); verify(mockView).setDateRange(FAKE_MONTHS); } @Test public void onAllSelectedShouldDelegateToThemeRankingPresenter() { presenter.onAllSelected(); verify(mockThemeRankingPresenter).onAllSelected(); } @Test public void onOldSelectedShouldDelegateToThemeRankingPresenter() { presenter.onOldSelected(); verify(mockThemeRankingPresenter).onOldSelected(); } @Test public void testOnYearSelected() { presenter.onYearSelected(FAKE_YEAR); verify(mockThemeRankingPresenter).onYearSelected(FAKE_YEAR); } @Test public void testOnMonthSelected() { presenter.onMonthSelected(FAKE_YEAR, FAKE_MONTH); verify(mockThemeRankingPresenter).onMonthSelected(FAKE_YEAR, FAKE_MONTH); } }