Java tutorial
/* * ==================================================================== * Copyright (c) 2005-2012 sventon project. All rights reserved. * * This software is licensed as described in the file LICENSE, which * you should have received as part of this distribution. The terms * are also available at http://www.sventon.org. * If newer versions of this license are posted there, you may use a * newer version instead, at your option. * ==================================================================== */ package org.sventon.web.ctrl.template; import org.easymock.classextension.EasyMock; import org.junit.After; import org.junit.Before; import org.junit.Test; import org.springframework.mock.web.MockHttpServletRequest; import org.springframework.mock.web.MockServletContext; import org.springframework.web.servlet.ModelAndView; import org.sventon.TestUtils; import org.sventon.appl.Application; import org.sventon.appl.ConfigDirectory; import org.sventon.appl.RepositoryConfiguration; import org.sventon.model.DirEntry; import org.sventon.model.RepositoryName; import org.sventon.model.Revision; import org.sventon.service.RepositoryService; import org.sventon.web.UserRepositoryContext; import org.sventon.web.command.BaseCommand; import java.util.Map; import static org.easymock.EasyMock.expect; import static org.easymock.classextension.EasyMock.replay; import static org.easymock.classextension.EasyMock.verify; import static org.junit.Assert.assertEquals; public class DirEntryTrayControllerTest { private final BaseCommand command = new BaseCommand(); private RepositoryService mockService; private MockHttpServletRequest request; private DirEntryTrayController ctrl; private DirEntry entry; private UserRepositoryContext context; @Before public void setUp() throws Exception { final ConfigDirectory configDirectory = TestUtils.getTestConfigDirectory(); configDirectory.setCreateDirectories(false); final MockServletContext servletContext = new MockServletContext(); servletContext.setContextPath("sventon-test"); configDirectory.setServletContext(servletContext); final Application application = new Application(configDirectory); final RepositoryConfiguration configuration = new RepositoryConfiguration("test"); configuration.setEnableEntryTray(true); application.addConfiguration(configuration); entry = new DirEntry("/", "/trunk/test", "", null, DirEntry.Kind.FILE, 0, 0); command.setPath("/trunk/test"); command.setName(new RepositoryName("test")); command.setRevision(Revision.create(10)); command.setPegRevision(Revision.create(5)); mockService = EasyMock.createMock(RepositoryService.class); request = new MockHttpServletRequest(); ctrl = new DirEntryTrayController(); ctrl.setRepositoryService(mockService); ctrl.setApplication(application); context = new UserRepositoryContext(); } @After public void tearDown() throws Exception { EasyMock.reset(mockService); } private Map executeTest() throws Exception { expect(mockService.getEntryInfo(null, command.getPath(), command.getPegRevision().getNumber())) .andStubReturn(entry); replay(mockService); final ModelAndView modelAndView = ctrl.svnHandle(null, command, 100, context, request, null, null); verify(mockService); return modelAndView.getModel(); } @Test public void testAddAndRemove() throws Exception { request.setParameter("action", DirEntryTrayController.PARAMETER_ADD); assertEquals(0, context.getDirEntryTray().getSize()); Map model = executeTest(); assertEquals(0, model.size()); assertEquals(1, context.getDirEntryTray().getSize()); EasyMock.reset(mockService); request.setParameter("action", DirEntryTrayController.PARAMETER_REMOVE); model = executeTest(); assertEquals(0, model.size()); assertEquals(0, context.getDirEntryTray().getSize()); } }