package edu.asu.spring.quadriga.web;
import static org.junit.Assert.assertEquals;
import java.security.Principal;
import java.util.ArrayList;
import java.util.Locale;
import java.util.Properties;
import edu.asu.spring.quadriga.domain.workbench.IProject;
import edu.asu.spring.quadriga.service.workbench.IRetrieveProjectManager;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.springframework.ui.Model;
import org.springframework.ui.ModelMap;
import org.springframework.validation.support.BindingAwareModelMap;
import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException;
public class HomeControllerTest {
@Mock
private Properties messages;
@Mock
private IRetrieveProjectManager projectManager = Mockito.mock(IRetrieveProjectManager.class);
@InjectMocks
private HomeController homeController;
private Model model;
private Principal principal;
/**
* This method sets up the needed objects for testing the {@link LoginController}
*
*/
@Before
public void setUp() throws Exception {
messages = Mockito.mock(Properties.class);
MockitoAnnotations.initMocks(this);
model = new BindingAwareModelMap();
principal = new Principal() {
@Override
public String getName() {
return "jdoe";
}
};
Mockito.when(messages.get(Mockito.anyString())).thenReturn("mocked property");
// mock project manager
Mockito.when(projectManager.getRecentProjectList(principal.getName())).thenReturn(new ArrayList<>());
}
@Test
public void homeTest() throws QuadrigaStorageException {
assertEquals("auth/home", homeController.home(new Locale("us"), model, principal));
assertEquals(principal.getName(), ((ModelMap)model).get("username"));
}
}