package no.dusken.aranea.web.control;
import no.dusken.aranea.model.Person;
import no.dusken.aranea.model.Role;
import no.dusken.aranea.service.RoleService;
import org.junit.Before;
import org.junit.Test;
import org.springframework.ui.ExtendedModelMap;
import org.springframework.ui.Model;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import static junit.framework.Assert.*;
import static org.mockito.Mockito.*;
/**
* @author Benjamin Bjørnseth <benjamin@underdusken.no>
*/
public class ContactPageControllerTest {
private RoleService roleService;
private ContactPageController contactPageController;
@Before
public void setUp() {
roleService = mock(RoleService.class);
contactPageController = new ContactPageController();
contactPageController.setRoleService(roleService);
}
@Test
public void testGetContactPageView() {
String[] roles = contactPageController.getRoles();
Map<String, Person> expectedPerson = new HashMap<String, Person>();
for (String roleAsStr: roles) {
Role role = mock(Role.class);
when(roleService.getRolesByName(roleAsStr)).thenReturn(role);
Person p = new Person();
p.setFirstname(roleAsStr);
p.setActive(true);
when(role.getPersons()).thenReturn(Arrays.asList(p));
expectedPerson.put(roleAsStr, p);
}
Model model = new ExtendedModelMap();
String viewLocation = contactPageController.getContactPageView(model);
assertEquals("Unexpected view location", "no/dusken/aranea/base/common/contact", viewLocation);
for (String roleAsStr: roles) {
assertEquals("Wrong person for role " + roleAsStr + " returned",
expectedPerson.get(roleAsStr), ((Map)model.asMap().get("persons")).get(roleAsStr));
}
}
}