package org.wikipedia.descriptions;
import android.support.annotation.NonNull;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import com.rd.PageIndicatorView;
import org.junit.experimental.theories.Theory;
import org.junit.experimental.theories.suppliers.TestedOn;
import org.wikipedia.R;
import org.wikipedia.test.theories.TestedOnBool;
import org.wikipedia.test.view.FontScale;
import org.wikipedia.test.view.LayoutDirection;
import org.wikipedia.test.view.ViewTest;
import org.wikipedia.theme.Theme;
import butterknife.ButterKnife;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
public class DescriptionEditTutorialPageViewTest extends ViewTest {
private DescriptionEditTutorialPageView subject;
@Theory public void testWidth(@TestedOn(ints = {WIDTH_DP_XL, WIDTH_DP_L}) int widthDp, @NonNull FontScale fontScale) {
for (DescriptionEditTutorialPage page : DescriptionEditTutorialPage.values()) {
setUp(page, widthDp, LayoutDirection.LOCALE, fontScale, Theme.LIGHT);
snap(subject, page.name());
}
}
@Theory public void testLayoutDirection(@NonNull LayoutDirection direction) {
for (DescriptionEditTutorialPage page : DescriptionEditTutorialPage.values()) {
setUp(page, WIDTH_DP_L, direction, FontScale.DEFAULT, Theme.LIGHT);
snap(subject, page.name());
}
}
@Theory public void testTheme(@NonNull Theme theme) {
for (DescriptionEditTutorialPage page : DescriptionEditTutorialPage.values()) {
setUp(page, WIDTH_DP_L, LayoutDirection.LOCALE, FontScale.DEFAULT, theme);
snap(subject, page.name());
}
}
@Theory public void testFocus(@NonNull Theme theme) {
for (DescriptionEditTutorialPage page : DescriptionEditTutorialPage.values()) {
setUp(page, WIDTH_DP_L, LayoutDirection.LOCALE, FontScale.DEFAULT, theme);
requestFocus(subject);
snap(subject, page.name());
}
}
@Theory public void testSetCallback(@TestedOnBool boolean nul) {
for (DescriptionEditTutorialPage page : DescriptionEditTutorialPage.values()) {
setUp(page, WIDTH_DP_L, LayoutDirection.LOCALE, FontScale.DEFAULT, Theme.LIGHT);
subject = new DescriptionEditTutorialPageView(ctx());
DescriptionEditTutorialPageView.Callback callback = nul ? null : mock(DescriptionEditTutorialPageView.Callback.class);
subject.setCallback(callback);
subject.onButtonClick();
if (callback != null) {
verify(callback).onButtonClick(subject);
}
}
}
private void setUp(@NonNull DescriptionEditTutorialPage page, int widthDp, @NonNull LayoutDirection layoutDirection, @NonNull FontScale fontScale, @NonNull Theme theme) {
super.setUp(widthDp, layoutDirection, fontScale, theme);
LayoutInflater inflater = LayoutInflater.from(ctx());
subject = (DescriptionEditTutorialPageView) inflater.inflate(page.getLayout(), null, false);
ButterKnife.bind(subject);
ViewPager viewPager = new ViewPager(ctx());
viewPager.setAdapter(new DescriptionEditTutorialPagerAdapter(mock(DescriptionEditTutorialPagerAdapter.Callback.class)));
PageIndicatorView pageIndicatorView = ButterKnife.findById(subject, R.id.view_description_edit_tutorial_page_indicator);
pageIndicatorView.setViewPager(viewPager);
pageIndicatorView.setSelection(page.code());
}
}