/* * Copyright 2012 Kazumune Katagiri. (http://d.hatena.ne.jp/nemuzuka) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, * either express or implied. See the License for the specific language * governing permissions and limitations under the License. */ package jp.co.nemuzuka.service.impl; import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.*; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import jp.co.nemuzuka.core.entity.GlobalTransaction; import jp.co.nemuzuka.core.entity.TransactionEntity; import jp.co.nemuzuka.dao.MilestoneDao; import jp.co.nemuzuka.dao.ProjectDao; import jp.co.nemuzuka.dao.TicketDao.Param; import jp.co.nemuzuka.entity.TicketModelEx; import jp.co.nemuzuka.model.MilestoneModel; import jp.co.nemuzuka.model.ProjectModel; import jp.co.nemuzuka.model.TicketModel; import jp.co.nemuzuka.service.GanttService; import jp.co.nemuzuka.service.GanttService.Result; import jp.co.nemuzuka.tester.AppEngineTestCase4HRD; import jp.co.nemuzuka.utils.ConvertUtils; import jp.co.nemuzuka.utils.CurrentDateUtils; import jp.co.nemuzuka.utils.DateTimeUtils; import org.junit.Test; import org.slim3.datastore.Datastore; import com.google.appengine.api.datastore.Key; import com.google.appengine.api.datastore.Text; /** * GanttServiceImplのテストクラス. * @author kazumune */ public class GanttServiceServiceImplTest extends AppEngineTestCase4HRD { GanttServiceImpl service = GanttServiceImpl.getInstance(); SimpleDateFormat sdf = DateTimeUtils.createSdf("yyyyMMdd"); MilestoneDao milestoneDao = MilestoneDao.getInstance(); ProjectDao projectDao = ProjectDao.getInstance(); List<Key> milestoneKeyList; Key projectKey; /** * reCreateTicketListのテスト. * ・親-子の関係 * ・親Ticketの指定はあるが、親Ticketが存在しない * ・親のみ * パターンの混在 */ @Test public void testReCreateTicketList7() { List<TicketModelEx> ticketList = createTicketList7(); service.reCreateTicketList(ticketList); assertThat(ticketList.size(), is(6)); assertThat(ticketList.get(0).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 151L))); assertThat(ticketList.get(0).getNestingLevel(), is(0)); assertThat(ticketList.get(1).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 301L))); assertThat(ticketList.get(1).getNestingLevel(), is(0)); assertThat(ticketList.get(2).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 302L))); assertThat(ticketList.get(2).getNestingLevel(), is(0)); assertThat(ticketList.get(3).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 854L))); assertThat(ticketList.get(3).getNestingLevel(), is(0)); assertThat(ticketList.get(4).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 853L))); assertThat(ticketList.get(4).getNestingLevel(), is(1)); assertThat(ticketList.get(5).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 855L))); assertThat(ticketList.get(5).getNestingLevel(), is(0)); } /** * テスト用List作成. * @return テスト用List */ private List<TicketModelEx> createTicketList7() { List<TicketModelEx> list = new ArrayList<TicketModelEx>(); TicketModelEx model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 151L)); model.getModel().setParentTicketKey(null); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 301L)); model.getModel().setParentTicketKey(null); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 302L)); model.getModel().setParentTicketKey(null); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 853L)); model.getModel().setParentTicketKey(Datastore.createKey(TicketModel.class, 854L)); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 854L)); model.getModel().setParentTicketKey(null); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 855L)); model.getModel().setParentTicketKey(null); return list; } /** * reCreateTicketListのテスト. * ・親-子の関係 * ・親Ticketの指定はあるが、親Ticketが存在しない * パターンの混在 */ @Test public void testReCreateTicketList6() { List<TicketModelEx> ticketList = createTicketList6(); service.reCreateTicketList(ticketList); assertThat(ticketList.size(), is(5)); assertThat(ticketList.get(0).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 1L))); assertThat(ticketList.get(0).getNestingLevel(), is(0)); assertThat(ticketList.get(1).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 2L))); assertThat(ticketList.get(1).getNestingLevel(), is(1)); assertThat(ticketList.get(2).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 3L))); assertThat(ticketList.get(2).getNestingLevel(), is(0)); assertThat(ticketList.get(3).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 10L))); assertThat(ticketList.get(3).getNestingLevel(), is(0)); assertThat(ticketList.get(4).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 4L))); assertThat(ticketList.get(4).getNestingLevel(), is(1)); } /** * テスト用List作成. * @return テスト用List */ private List<TicketModelEx> createTicketList6() { List<TicketModelEx> list = new ArrayList<TicketModelEx>(); TicketModelEx model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 1L)); model.getModel().setParentTicketKey(null); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 2L)); model.getModel().setParentTicketKey(Datastore.createKey(TicketModel.class, 1L)); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 3L)); model.getModel().setParentTicketKey(Datastore.createKey(TicketModel.class, 9L)); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 4L)); model.getModel().setParentTicketKey(Datastore.createKey(TicketModel.class, 10L)); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 10L)); model.getModel().setParentTicketKey(Datastore.createKey(TicketModel.class, 11L)); return list; } /** * reCreateTicketListのテスト. * 親Ticketの指定はあるが、親Ticketが存在しないパターン */ @Test public void testReCreateTicketList5() { List<TicketModelEx> ticketList = createTicketList5(); service.reCreateTicketList(ticketList); assertThat(ticketList.size(), is(3)); assertThat(ticketList.get(0).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 1L))); assertThat(ticketList.get(0).getNestingLevel(), is(0)); assertThat(ticketList.get(1).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 2L))); assertThat(ticketList.get(1).getNestingLevel(), is(0)); assertThat(ticketList.get(2).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 3L))); assertThat(ticketList.get(2).getNestingLevel(), is(0)); } /** * テスト用List作成. * @return テスト用List */ private List<TicketModelEx> createTicketList5() { List<TicketModelEx> list = new ArrayList<TicketModelEx>(); TicketModelEx model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 1L)); model.getModel().setParentTicketKey(null); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 2L)); model.getModel().setParentTicketKey(Datastore.createKey(TicketModel.class, 5L)); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 3L)); model.getModel().setParentTicketKey(Datastore.createKey(TicketModel.class, 9L)); return list; } /** * reCreateTicketListのテスト. * 親-子-孫-曾孫Ticketが存在するパターン */ @Test public void testReCreateTicketList4() { List<TicketModelEx> ticketList = createTicketList4(); service.reCreateTicketList(ticketList); assertThat(ticketList.size(), is(4)); assertThat(ticketList.get(0).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 1L))); assertThat(ticketList.get(0).getNestingLevel(), is(0)); assertThat(ticketList.get(1).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 2L))); assertThat(ticketList.get(1).getNestingLevel(), is(1)); assertThat(ticketList.get(2).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 3L))); assertThat(ticketList.get(2).getNestingLevel(), is(2)); assertThat(ticketList.get(3).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 4L))); assertThat(ticketList.get(3).getNestingLevel(), is(3)); } /** * テスト用List作成. * @return テスト用List */ private List<TicketModelEx> createTicketList4() { List<TicketModelEx> list = new ArrayList<TicketModelEx>(); TicketModelEx model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 1L)); model.getModel().setParentTicketKey(null); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 2L)); model.getModel().setParentTicketKey(Datastore.createKey(TicketModel.class, 1L)); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 3L)); model.getModel().setParentTicketKey(Datastore.createKey(TicketModel.class, 2L)); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 4L)); model.getModel().setParentTicketKey(Datastore.createKey(TicketModel.class, 3L)); return list; } /** * reCreateTicketListのテスト. * 親-子-孫Ticketが存在するパターン */ @Test public void testReCreateTicketList3() { List<TicketModelEx> ticketList = createTicketList3(); service.reCreateTicketList(ticketList); assertThat(ticketList.size(), is(3)); assertThat(ticketList.get(0).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 1L))); assertThat(ticketList.get(0).getNestingLevel(), is(0)); assertThat(ticketList.get(1).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 2L))); assertThat(ticketList.get(1).getNestingLevel(), is(1)); assertThat(ticketList.get(2).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 3L))); assertThat(ticketList.get(2).getNestingLevel(), is(2)); } /** * テスト用List作成. * @return テスト用List */ private List<TicketModelEx> createTicketList3() { List<TicketModelEx> list = new ArrayList<TicketModelEx>(); TicketModelEx model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 1L)); model.getModel().setParentTicketKey(null); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 2L)); model.getModel().setParentTicketKey(Datastore.createKey(TicketModel.class, 1L)); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 3L)); model.getModel().setParentTicketKey(Datastore.createKey(TicketModel.class, 2L)); return list; } /** * reCreateTicketListのテスト. * 親-子Ticketが存在するパターン */ @Test public void testReCreateTicketList2() { List<TicketModelEx> ticketList = createTicketList2(); service.reCreateTicketList(ticketList); assertThat(ticketList.size(), is(2)); assertThat(ticketList.get(0).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 1L))); assertThat(ticketList.get(0).getNestingLevel(), is(0)); assertThat(ticketList.get(1).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 2L))); assertThat(ticketList.get(1).getNestingLevel(), is(1)); } /** * テスト用List作成. * @return テスト用List */ private List<TicketModelEx> createTicketList2() { List<TicketModelEx> list = new ArrayList<TicketModelEx>(); TicketModelEx model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 1L)); model.getModel().setParentTicketKey(null); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 2L)); model.getModel().setParentTicketKey(Datastore.createKey(TicketModel.class, 1L)); return list; } /** * reCreateTicketListのテスト. * 親Ticketのみ存在するパターン */ @Test public void testReCreateTicketList1() { //nullのものしか存在しないパターン List<TicketModelEx> ticketList = createTicketList1(); service.reCreateTicketList(ticketList); assertThat(ticketList.size(), is(2)); assertThat(ticketList.get(0).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 1L))); assertThat(ticketList.get(0).getNestingLevel(), is(0)); assertThat(ticketList.get(1).getModel().getKey(), is(Datastore.createKey(TicketModel.class, 2L))); assertThat(ticketList.get(1).getNestingLevel(), is(0)); } /** * テスト用List作成. * @return テスト用List */ private List<TicketModelEx> createTicketList1() { List<TicketModelEx> list = new ArrayList<TicketModelEx>(); TicketModelEx model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 1L)); model.getModel().setParentTicketKey(null); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setKey(Datastore.createKey(TicketModel.class, 2L)); model.getModel().setParentTicketKey(null); return list; } /** * getListのテスト. * @throws Exception */ @Test public void testGetList() throws Exception { createTestData(); //マイルストーンが設定されている場合 Param param = new Param(); param.milestone = Datastore.keyToString(milestoneKeyList.get(0)); param.projectKeyString = Datastore.keyToString(projectKey); Result actual = service.getList(param); assertThat(actual.milestoneName, is("マイルストン_0")); assertThat(actual.milestoneStartDate, is("20120401")); assertThat(actual.milestoneEndDate, is("20120430")); //マイルストーンが設定されていない場合 param = new Param(); param.projectKeyString = Datastore.keyToString(projectKey); actual = service.getList(param); assertThat(actual.milestoneName, is(nullValue())); assertThat(actual.milestoneStartDate, is(nullValue())); assertThat(actual.milestoneEndDate, is(nullValue())); //設定されているが、存在しない場合 param = new Param(); param.milestone = Datastore.keyToString(Datastore.createKey(MilestoneModel.class, -1L)); param.projectKeyString = Datastore.keyToString(projectKey); actual = service.getList(param); assertThat(actual.milestoneName, is(nullValue())); assertThat(actual.milestoneStartDate, is(nullValue())); assertThat(actual.milestoneEndDate, is(nullValue())); } /** * setDateのテスト. * マイルストーン未指定、全てのTicket日付null */ @Test public void testSetDate() { GanttService.Result result = createTestData1(); service.setDate(result, null, null); //ガントチャート開始日がシステム日であること Date currentDate = CurrentDateUtils.getInstance().getCurrentDate(); assertThat(result.startDate, is(ConvertUtils.toString(currentDate, sdf))); //ガントチャート終了日がシステム日+1月であること Date endDate = DateTimeUtils.addMonths(currentDate, 1); assertThat(result.endDate, is(ConvertUtils.toString(endDate, sdf))); //Ticketの開始日、終了日が上書きされていること TicketModelEx actual = result.ticketList.get(0); assertThat(actual.getStartDate(), is(ConvertUtils.toString(currentDate, sdf))); assertThat(actual.isUpdateStartDate(), is(true)); assertThat(actual.getPeriod(), is(ConvertUtils.toString(endDate, sdf))); assertThat(actual.isUpdatePeriod(), is(true)); //マイルストーンの開始日、終了日が上書きされていること assertThat(result.milestoneStartDate, is(ConvertUtils.toString(currentDate, sdf))); assertThat(result.updateStartDate, is(true)); assertThat(result.milestoneEndDate, is(ConvertUtils.toString(endDate, sdf))); assertThat(result.updateEndDate, is(true)); } /** * setDateのテスト. * マイルストーン未指定、Ticket開始日設定、終了日null */ @Test public void testSetDate2() { GanttService.Result result = createTestData2(); service.setDate(result, null, null); //ガントチャート開始日がチケットの開始日であること assertThat(result.startDate, is("20120101")); //ガントチャート終了日がチケットの開始日+1月であること assertThat(result.endDate, is("20120201")); //Ticketの開始日、終了日が上書きされていること TicketModelEx actual = result.ticketList.get(0); assertThat(actual.getStartDate(), is("20120101")); assertThat(actual.isUpdateStartDate(), is(false)); assertThat(actual.getPeriod(), is("20120201")); assertThat(actual.isUpdatePeriod(), is(true)); //マイルストーンの開始日、終了日が上書きされていること assertThat(result.milestoneStartDate, is("20120101")); assertThat(result.updateStartDate, is(true)); assertThat(result.milestoneEndDate, is("20120201")); assertThat(result.updateEndDate, is(true)); } /** * setDateのテスト. * マイルストーン未指定、Ticket開始日null、終了日設定 */ @Test public void testSetDate3() { GanttService.Result result = createTestData3(); service.setDate(result, null, null); //ガントチャート開始日がチケットの終了日であること assertThat(result.startDate, is("20120101")); //ガントチャート終了日がチケットの開始日+15日であること assertThat(result.endDate, is("20120116")); //Ticketの開始日が上書きされていること TicketModelEx actual = result.ticketList.get(0); assertThat(actual.getStartDate(), is("20120101")); assertThat(actual.isUpdateStartDate(), is(true)); assertThat(actual.getPeriod(), is("20120101")); assertThat(actual.isUpdatePeriod(), is(false)); //マイルストーンの開始日、終了日が上書きされていること assertThat(result.milestoneStartDate, is("20120101")); assertThat(result.updateStartDate, is(true)); assertThat(result.milestoneEndDate, is("20120116")); assertThat(result.updateEndDate, is(true)); } /** * setDateのテスト. * マイルストーン未指定、Ticket開始日設定、終了日設定 */ @Test public void testSetDate4() { GanttService.Result result = createTestData4(); service.setDate(result, null, null); //ガントチャート開始日がチケットの開始日であること assertThat(result.startDate, is("20120101")); //ガントチャート終了日がチケットの終了日であること assertThat(result.endDate, is("20120120")); //Ticketの開始日、終了日が上書きされていないこと TicketModelEx actual = result.ticketList.get(0); assertThat(actual.getStartDate(), is("20120101")); assertThat(actual.isUpdateStartDate(), is(false)); assertThat(actual.getPeriod(), is("20120120")); assertThat(actual.isUpdatePeriod(), is(false)); //マイルストーンの開始日、終了日が上書きされていること assertThat(result.milestoneStartDate, is("20120101")); assertThat(result.updateStartDate, is(true)); assertThat(result.milestoneEndDate, is("20120120")); assertThat(result.updateEndDate, is(true)); } /** * setDateのテスト. * マイルストーン未指定、Ticket開始日null、終了日設定(過去) */ @Test public void testSetDate5() { GanttService.Result result = createTestData5(); service.setDate(result, null, null); //ガントチャート開始日がチケットの開始日であること assertThat(result.startDate, is("20100101")); //ガントチャート終了日がチケットの終了日であること assertThat(result.endDate, is("20100116")); //Ticketの終了日が上書きされていないこと TicketModelEx actual = result.ticketList.get(0); assertThat(actual.getStartDate(), is("20100101")); assertThat(actual.isUpdateStartDate(), is(true)); assertThat(actual.getPeriod(), is("20100101")); assertThat(actual.isUpdatePeriod(), is(false)); //マイルストーンの開始日、終了日が上書きされていること assertThat(result.milestoneStartDate, is("20100101")); assertThat(result.updateStartDate, is(true)); assertThat(result.milestoneEndDate, is("20100116")); assertThat(result.updateEndDate, is(true)); } /** * setDateのテスト. * 複数Ticketより、ガントチャートの開始日、終了日を判断する */ @Test public void testSetDate6() { GanttService.Result result = createTestData6(); service.setDate(result, null, null); //ガントチャート開始日がチケットの中で一番過去の開始日であること assertThat(result.startDate, is("20091231")); //ガントチャート終了日がチケットの中で一番未来の終了日であること assertThat(result.endDate, is("20100115")); TicketModelEx actual = result.ticketList.get(0); assertThat(actual.getStartDate(), is("20100101")); assertThat(actual.isUpdateStartDate(), is(false)); assertThat(actual.getPeriod(), is("20100102")); assertThat(actual.isUpdatePeriod(), is(false)); actual = result.ticketList.get(1); assertThat(actual.getStartDate(), is("20091231")); assertThat(actual.isUpdateStartDate(), is(false)); assertThat(actual.getPeriod(), is("20100115")); assertThat(actual.isUpdatePeriod(), is(false)); actual = result.ticketList.get(2); assertThat(actual.getStartDate(), is("20091231")); assertThat(actual.isUpdateStartDate(), is(true)); assertThat(actual.getPeriod(), is("20100115")); assertThat(actual.isUpdatePeriod(), is(true)); actual = result.ticketList.get(3); assertThat(actual.getStartDate(), is("20100110")); assertThat(actual.isUpdateStartDate(), is(false)); assertThat(actual.getPeriod(), is("20100110")); assertThat(actual.isUpdatePeriod(), is(false)); //マイルストーンの開始日、終了日が上書きされていること assertThat(result.milestoneStartDate, is("20091231")); assertThat(result.updateStartDate, is(true)); assertThat(result.milestoneEndDate, is("20100115")); assertThat(result.updateEndDate, is(true)); } /** * setDateのテスト. * マイルストーン指定、Ticket開始日設定、終了日設定 */ @Test public void testSetDate7() { GanttService.Result result = createTestData7(); service.setDate(result, ConvertUtils.toDate("20120103", sdf), ConvertUtils.toDate("20120110", sdf)); //ガントチャート開始日がチケットの開始日であること assertThat(result.startDate, is("20120101")); //ガントチャート終了日がチケットの終了日であること assertThat(result.endDate, is("20120120")); //Ticketの開始日、終了日が上書きされていないこと TicketModelEx actual = result.ticketList.get(0); assertThat(actual.getStartDate(), is("20120101")); assertThat(actual.isUpdateStartDate(), is(false)); assertThat(actual.getPeriod(), is("20120120")); assertThat(actual.isUpdatePeriod(), is(false)); //マイルストーンの開始日、終了日が上書きされていないこと assertThat(result.milestoneStartDate, is("20120103")); assertThat(result.updateStartDate, is(false)); assertThat(result.milestoneEndDate, is("20120110")); assertThat(result.updateEndDate, is(false)); } /** * テストデータ作成. * マイルストーン未指定のケース * @return テストデータ */ private Result createTestData7() { GanttService.Result result = new GanttService.Result(); result.milestoneName = "a"; result.milestoneStartDate = "20120103"; result.milestoneEndDate = "20120110"; result.ticketList = createTicketModelEx4(); return result; } /** * テストデータ作成. * マイルストーン未指定のケース * @return テストデータ */ private Result createTestData6() { GanttService.Result result = new GanttService.Result(); result.milestoneName = "a"; result.ticketList = createTicketModelEx6(); return result; } /** * テストデータ作成. * 複数Ticket設定 * @return テストデータ */ private List<TicketModelEx> createTicketModelEx6() { List<TicketModelEx> list = new ArrayList<TicketModelEx>(); TicketModelEx model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setStartDate(ConvertUtils.toDate("20100101", sdf)); model.getModel().setPeriod(ConvertUtils.toDate("20100102", sdf)); model.setStartDate("20100101"); model.setPeriod("20100102"); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setStartDate(ConvertUtils.toDate("20091231", sdf)); model.getModel().setPeriod(ConvertUtils.toDate("20100115", sdf)); model.setStartDate("20091231"); model.setPeriod("20100115"); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setStartDate(ConvertUtils.toDate("20100110", sdf)); model.getModel().setPeriod(ConvertUtils.toDate("20100110", sdf)); model.setStartDate("20100110"); model.setPeriod("20100110"); return list; } /** * テストデータ作成. * マイルストーン未指定のケース * @return テストデータ */ private Result createTestData5() { GanttService.Result result = new GanttService.Result(); result.milestoneName = "a"; result.ticketList = createTicketModelEx5(); return result; } /** * テストデータ作成. * 開始日、終了日設定 * @return テストデータ */ private List<TicketModelEx> createTicketModelEx5() { Date endDate = ConvertUtils.toDate("20100101", sdf); List<TicketModelEx> list = new ArrayList<TicketModelEx>(); TicketModelEx model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setPeriod(endDate); model.setPeriod("20100101"); return list; } /** * テストデータ作成. * マイルストーン未指定のケース * @return テストデータ */ private Result createTestData4() { GanttService.Result result = new GanttService.Result(); result.milestoneName = "a"; result.ticketList = createTicketModelEx4(); return result; } /** * テストデータ作成. * 開始日、終了日設定 * @return テストデータ */ private List<TicketModelEx> createTicketModelEx4() { Date startDate = ConvertUtils.toDate("20120101", sdf); Date endDate = ConvertUtils.toDate("20120120", sdf); List<TicketModelEx> list = new ArrayList<TicketModelEx>(); TicketModelEx model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setStartDate(startDate); model.getModel().setPeriod(endDate); model.setStartDate("20120101"); model.setPeriod("20120120"); return list; } /** * テストデータ作成. * マイルストーン未指定のケース * @return テストデータ */ private Result createTestData3() { GanttService.Result result = new GanttService.Result(); result.milestoneName = "a"; result.ticketList = createTicketModelEx3(); return result; } /** * テストデータ作成. * 終了日のみ設定されている * @return テストデータ */ private List<TicketModelEx> createTicketModelEx3() { Date endDate = ConvertUtils.toDate("20120101", sdf); List<TicketModelEx> list = new ArrayList<TicketModelEx>(); TicketModelEx model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setPeriod(endDate); model.setPeriod("20120101"); return list; } /** * テストデータ作成. * マイルストーン未指定のケース * @return テストデータ */ private Result createTestData2() { GanttService.Result result = new GanttService.Result(); result.milestoneName = "a"; result.ticketList = createTicketModelEx2(); return result; } /** * テストデータ作成. * 開始日のみ設定されている * @return テストデータ */ private List<TicketModelEx> createTicketModelEx2() { Date startDate = ConvertUtils.toDate("20120101", sdf); List<TicketModelEx> list = new ArrayList<TicketModelEx>(); TicketModelEx model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); model.getModel().setStartDate(startDate); model.setStartDate("20120101"); return list; } /** * テストデータ作成. * マイルストーン未指定のケース * @return テストデータ */ private Result createTestData1() { GanttService.Result result = new GanttService.Result(); result.milestoneName = "a"; result.ticketList = createTicketModelEx1(); return result; } /** * テストデータ作成. * 全ての開始日と終了日がnullであるケース * @return テストデータ */ private List<TicketModelEx> createTicketModelEx1() { List<TicketModelEx> list = new ArrayList<TicketModelEx>(); TicketModelEx model = new TicketModelEx(); list.add(model); model.setModel(new TicketModel()); return list; } /** * テストデータ作成. * プロジェクト1件 * マイルストーン3件を作成します。 * @throws ParseException 例外 */ private void createTestData() throws ParseException { ProjectModel model = new ProjectModel(); model.setProjectId("test_project"); model.setProjectName("テストプロジェクト"); model.setProjectSummary(new Text("テスト用プロジェクトですってば")); projectDao.put(model); projectKey = model.getKey(); milestoneKeyList = new ArrayList<Key>(); SimpleDateFormat sdf = DateTimeUtils.createSdf("yyyyMMdd"); for(int i = 0; i < 3; i++) { MilestoneModel milestoneModel = new MilestoneModel(); milestoneModel.setMilestoneName("マイルストン_" + i); Date startDate = null; if(i == 0 || i == 2) { startDate = sdf.parse("20120401"); } milestoneModel.setStartDate(startDate); Date endDate = null; if(i == 0 || i == 1) { endDate = sdf.parse("20120430"); } milestoneModel.setEndDate(endDate); milestoneModel.setProjectKey(projectKey); milestoneModel.setSortNum(Long.MAX_VALUE); milestoneDao.put(milestoneModel); milestoneKeyList.add(milestoneModel.getKey()); } GlobalTransaction.transaction.get().commit(); GlobalTransaction.transaction.get().begin(); return; } /* (非 Javadoc) * @see org.slim3.tester.AppEngineTestCase#setUp() */ @Override public void setUp() throws Exception { super.setUp(); TransactionEntity transactionEntity = new TransactionEntity(); GlobalTransaction.transaction.set(transactionEntity); } }