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; import org.junit.Test; import org.springframework.ui.ExtendedModelMap; import org.springframework.ui.Model; import org.springframework.validation.BindingResult; import org.springframework.web.servlet.ModelAndView; import org.sventon.appl.Application; import org.sventon.model.RepositoryName; import org.sventon.web.command.ConfigCommand; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import static org.hamcrest.CoreMatchers.is; import static org.junit.Assert.assertThat; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import static org.springframework.test.web.ModelAndViewAssert.assertModelAttributeValues; import static org.springframework.test.web.ModelAndViewAssert.assertViewName; @SuppressWarnings({ "unchecked" }) public class ConfigurationFormControllerTest { private static final String CONFIG_FORM_VIEW_NAME = "config/configForm"; private static final String LIST_CONFIGS_VIEW_NAME = "config/listConfigs"; @Test public void setUpForm() throws Exception { Application application = mock(Application.class); HashSet<RepositoryName> repositoryNames = new HashSet<RepositoryName>(); repositoryNames.add(new RepositoryName("sventon")); repositoryNames.add(new RepositoryName("nordpolen")); when(application.getRepositoryNames()).thenReturn(repositoryNames); ConfigurationFormController controller = new ConfigurationFormController(application); ModelAndView modelAndView = controller.setUpForm(new ModelAndView()); Map expectedModel = new HashMap(); expectedModel.put("addedRepositories", repositoryNames); expectedModel.put("command", new ConfigCommand()); assertModelAttributeValues(modelAndView, expectedModel); assertViewName(modelAndView, CONFIG_FORM_VIEW_NAME); } @Test public void setUpFormWhereThereAreNowReposConfigured() throws Exception { Application application = mock(Application.class); HashSet<RepositoryName> emptyRepoNames = new HashSet<RepositoryName>(); when(application.getRepositoryNames()).thenReturn(emptyRepoNames); ConfigurationFormController controller = new ConfigurationFormController(application); ModelAndView modelAndView = controller.setUpForm(new ModelAndView()); Map expectedModel = new HashMap(); expectedModel.put("addedRepositories", emptyRepoNames); expectedModel.put("command", new ConfigCommand()); assertModelAttributeValues(modelAndView, expectedModel); assertViewName(modelAndView, CONFIG_FORM_VIEW_NAME); } //--- @Test public void onFormSubmitRedirectsToFormOnValidationError() { Application application = mock(Application.class); ConfigurationFormController controller = new ConfigurationFormController(application); BindingResult bindingResult = mock(BindingResult.class); when(bindingResult.hasErrors()).thenReturn(true); String formView = controller.onFormSubmit(new ConfigCommand(), bindingResult, mock(Model.class)); assertThat(formView, is(CONFIG_FORM_VIEW_NAME)); } @Test public void onFormSubmitRepositoryAdded() throws Exception { Application application = mock(Application.class); HashSet<RepositoryName> repositoryNames = new HashSet<RepositoryName>(); repositoryNames.add(new RepositoryName("sventon")); repositoryNames.add(new RepositoryName("nordpolen")); when(application.getRepositoryNames()).thenReturn(repositoryNames); ConfigCommand command = new ConfigCommand(); command.setName("nordpolen"); command.setRepositoryUrl("svn://northpole.com/repo"); BindingResult bindingResult = mock(BindingResult.class); when(bindingResult.hasErrors()).thenReturn(false); Model model = new ExtendedModelMap(); ConfigurationFormController controller = new ConfigurationFormController(application); String listConfigView = controller.onFormSubmit(command, bindingResult, model); Map expectedModel = new HashMap(); expectedModel.put("addedRepositories", repositoryNames); expectedModel.put("latestAddedRepository", command.getName()); assertThat(listConfigView, is(LIST_CONFIGS_VIEW_NAME)); assertThat(model.asMap(), is(expectedModel)); } }