Java tutorial
/** * MOTECH PLATFORM OPENSOURCE LICENSE AGREEMENT * * Copyright (c) 2010-11 The Trustees of Columbia University in the City of * New York and Grameen Foundation USA. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * 3. Neither the name of Grameen Foundation USA, Columbia University, or * their respective contributors may be used to endorse or promote products * derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY GRAMEEN FOUNDATION USA, COLUMBIA UNIVERSITY * AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, * BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL GRAMEEN FOUNDATION * USA, COLUMBIA UNIVERSITY OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.motechproject.server.omod.web.controller; import static org.easymock.EasyMock.capture; import static org.easymock.EasyMock.createMock; import static org.easymock.EasyMock.expect; import static org.easymock.EasyMock.replay; import static org.easymock.EasyMock.verify; import java.sql.Time; import java.text.ParseException; import junit.framework.TestCase; import org.easymock.Capture; import org.motechproject.server.model.Blackout; import org.motechproject.server.model.TroubledPhone; import org.motechproject.server.service.ContextService; import org.motechproject.server.service.MotechService; import org.motechproject.server.svc.RegistrarBean; import org.springframework.ui.ModelMap; public class MotechModuleFormControllerTest extends TestCase { RegistrarBean registrarBean; MotechModuleFormController controller; ContextService contextService; MotechService motechService; @Override protected void setUp() { registrarBean = createMock(RegistrarBean.class); motechService = createMock(MotechService.class); contextService = createMock(ContextService.class); controller = new MotechModuleFormController(); controller.setRegistrarBean(registrarBean); controller.setContextService(contextService); } @Override protected void tearDown() { controller = null; registrarBean = null; } public void testViewBlackoutForm() throws ParseException { Time startTime = Time.valueOf("07:00:00"), endTime = Time.valueOf("19:00:00"); Blackout interval = new Blackout(startTime, endTime); expect(contextService.getMotechService()).andReturn(motechService); expect(motechService.getBlackoutSettings()).andReturn(interval); replay(contextService, motechService); ModelMap model = new ModelMap(); String path = controller.viewBlackoutSettings(model); verify(contextService, motechService); assertEquals("/module/motechmodule/blackout", path); assertEquals(model.get("startTime"), startTime); assertEquals(model.get("endTime"), endTime); } public void testViewBlackoutFormNoData() throws ParseException { expect(contextService.getMotechService()).andReturn(motechService); expect(motechService.getBlackoutSettings()).andReturn(null); replay(contextService, motechService); ModelMap model = new ModelMap(); String path = controller.viewBlackoutSettings(model); verify(contextService, motechService); assertEquals("/module/motechmodule/blackout", path); } public void testSaveBlackoutSettings() throws ParseException { String startTime = "07:00:00", endTime = "19:00:00"; Capture<Blackout> boCap = new Capture<Blackout>(); expect(contextService.getMotechService()).andReturn(motechService); expect(motechService.getBlackoutSettings()).andReturn(null); motechService.setBlackoutSettings(capture(boCap)); replay(contextService, motechService); ModelMap model = new ModelMap(); String path = controller.saveBlackoutSettings(startTime, endTime, model); verify(contextService, motechService); assertEquals("/module/motechmodule/blackout", path); assertEquals(startTime, model.get("startTime").toString()); assertEquals(endTime, model.get("endTime").toString()); assertEquals(startTime, boCap.getValue().getStartTime().toString()); assertEquals(endTime, boCap.getValue().getEndTime().toString()); } public void testUpdateBlackoutSettings() throws ParseException { String startTime = "07:00:00", endTime = "19:00:00"; Capture<Blackout> boCap = new Capture<Blackout>(); expect(contextService.getMotechService()).andReturn(motechService); Blackout blackout = new Blackout(null, null); expect(motechService.getBlackoutSettings()).andReturn(blackout); motechService.setBlackoutSettings(capture(boCap)); replay(contextService, motechService); ModelMap model = new ModelMap(); String path = controller.saveBlackoutSettings(startTime, endTime, model); verify(contextService, motechService); assertEquals("/module/motechmodule/blackout", path); assertEquals(startTime, model.get("startTime").toString()); assertEquals(endTime, model.get("endTime").toString()); assertEquals(startTime, boCap.getValue().getStartTime().toString()); assertEquals(endTime, boCap.getValue().getEndTime().toString()); } public void testLookupTroubledPhoneNoPhone() { String phone = null; ModelMap model = new ModelMap(); String path = controller.handleTroubledPhone(phone, null, model); assertNull(model.get("troubledPhone")); assertEquals("/module/motechmodule/troubledphone", path); } public void testLookupTroubledPhone() { String phone = "378378373"; TroubledPhone tp = new TroubledPhone(); tp.setId(38903L); tp.setPhoneNumber(phone); expect(contextService.getMotechService()).andReturn(motechService); expect(motechService.getTroubledPhone(phone)).andReturn(tp); replay(contextService, motechService); ModelMap model = new ModelMap(); String path = controller.handleTroubledPhone(phone, null, model); verify(contextService, motechService); assertEquals(tp, model.get("troubledPhone")); assertEquals("/module/motechmodule/troubledphone", path); } public void testRemoveTroubledPhone() { String phone = "378378373"; TroubledPhone tp = new TroubledPhone(); tp.setId(38903L); tp.setPhoneNumber(phone); expect(contextService.getMotechService()).andReturn(motechService); expect(motechService.getTroubledPhone(phone)).andReturn(tp); motechService.removeTroubledPhone(phone); replay(contextService, motechService); ModelMap model = new ModelMap(); String path = controller.handleTroubledPhone(phone, true, model); verify(contextService, motechService); assertNull(model.get("troubledPhone")); assertEquals("redirect:/module/motechmodule/troubledphone.form", path); } }