package org.ryu22e.nico2cal.controller.myCalendar; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import java.lang.reflect.Type; import java.util.Map; import org.junit.Test; import org.ryu22e.nico2cal.meta.MyCalendarMeta; import org.ryu22e.nico2cal.model.MyCalendar; import org.slim3.datastore.Datastore; import org.slim3.tester.ControllerTestCase; import com.google.appengine.api.users.User; import com.google.appengine.api.users.UserServiceFactory; import com.google.gson.Gson; import com.google.gson.reflect.TypeToken; /** * @author ryu22e * */ public final class SaveControllerTest extends ControllerTestCase { /** * @throws Exception */ @Test public void 連携対象のGoogleCalendarを登録する_パラメータを渡していない() throws Exception { tester.environment.setEmail("dummy@gmail.com"); tester.request.setMethod("POST"); tester.start("/myCalendar/save"); SaveController controller = tester.getController(); assertThat(controller, is(notNullValue())); assertThat(tester.isRedirect(), is(false)); assertThat(tester.response.getStatus(), is(403)); assertThat(tester.getDestinationPath(), is(nullValue())); } /** * @throws Exception */ @Test public void 連携対象のGoogleCalendarを登録する_パラメータを渡している() throws Exception { tester.environment.setEmail("dummy@gmail.com"); tester.request.setMethod("POST"); tester.param("calendarId", "test1"); tester.param("notifyErrorMail", "true"); tester.param("keyword", "keyword1 keyword2"); tester.start("/myCalendar/save"); SaveController controller = tester.getController(); assertThat(controller, is(notNullValue())); assertThat(tester.isRedirect(), is(false)); assertThat(tester.response.getStatus(), is(200)); assertThat(tester.getDestinationPath(), is(nullValue())); String output = tester.response.getOutputAsString(); assertThat(output, is(notNullValue())); Gson gson = new Gson(); Type type = new TypeToken<Map<String, Object>>() { }.getType(); Map<String, String> json = gson.fromJson(output, type); assertThat(json, is(notNullValue())); assertThat(json.get("status"), is("ok")); User user = UserServiceFactory.getUserService().getCurrentUser(); MyCalendarMeta mc = MyCalendarMeta.get(); MyCalendar myCalendar = Datastore.query(mc).filter(mc.user.equal(user)).asSingle(); assertThat(myCalendar, is(notNullValue())); assertThat(myCalendar.getCalendarId(), is("test1")); assertThat(myCalendar.isNotifyErrorMail(), is(true)); assertThat(myCalendar.getKeyword(), is(notNullValue())); assertThat(myCalendar.getKeyword(), is("keyword1 keyword2")); } }