package org.adaptlab.chpir.android.survey.QuestionFragments;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.doNothing;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
import org.adaptlab.chpir.android.robolectric.shadows.ShadowDatePicker;
import org.adaptlab.chpir.android.survey.SurveyActivity;
import org.adaptlab.chpir.android.survey.Models.Response;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.robolectric.Robolectric;
import org.robolectric.RobolectricTestRunner;
import org.robolectric.annotation.Config;
import android.view.ViewGroup;
import android.widget.DatePicker;
import android.widget.FrameLayout;
@Config(shadows = {ShadowDatePicker.class} )
@RunWith(RobolectricTestRunner.class)
public class DateQuestionFragmentTest extends QuestionFragmentBaseTest {
private SurveyActivity activity;
private DateQuestionFragment qFragment;
private ViewGroup qComponent;
private Response response;
@Before
public void setUp() throws Exception {
activity = Robolectric.buildActivity(SurveyActivity.class).create().get();
qFragment = spy(new DateQuestionFragment());
doNothing().when(qFragment).init();
setBundleArgs(qFragment);
startFragment(activity, qFragment);
qComponent = new FrameLayout(Robolectric.application);
response = spy(new Response());
doReturn(response).when(qFragment).getResponse();
}
@Test
public void shouldNotBeNull() throws Exception {
assertNotNull(qFragment);
}
@Test
public void shouldHaveDatePickerView() throws Exception {
qFragment.createQuestionComponent(qComponent);
assertThat(qComponent.getChildAt(0), instanceOf(DatePicker.class));
}
/*@Test
public void datePickerViewCalendarShouldNotBeVisible() throws Exception {
qFragment.createQuestionComponent(qComponent);
assertEquals(((DatePicker) qComponent.getChildAt(0)).getCalendarViewShown(), false);
}*/
@Test
public void shouldHaveDateChangeListener() throws Exception {
qFragment.createQuestionComponent(qComponent);
DatePicker picker = (DatePicker) qComponent.getChildAt(0);
picker.updateDate(2013, 12, 20);
assertEquals(picker.getYear(), 2013);
assertEquals(picker.getMonth(), 12);
assertEquals(picker.getDayOfMonth(), 20);
}
@Test
public void shouldFormatDate() throws Exception {
qFragment.createQuestionComponent(qComponent);
String date = 1 + "-" + 0 + "-" + 0;
assertEquals(qFragment.serialize(), date);
/*DatePicker picker = (DatePicker) qComponent.getChildAt(0);
picker.updateDate(2013, 12, 20);
date = 12 + "-" + 20 + "-" + 2013;
assertEquals(qFragment.serialize(), date);*/
}
}