package edu.asu.spring.quadriga.web.workbench;
import static org.junit.Assert.assertEquals;
import java.security.Principal;
import java.util.ArrayList;
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.web.servlet.ModelAndView;
import org.springframework.web.servlet.mvc.support.RedirectAttributes;
import edu.asu.spring.quadriga.exceptions.QuadrigaAccessException;
import edu.asu.spring.quadriga.exceptions.QuadrigaStorageException;
import edu.asu.spring.quadriga.service.workbench.IModifyProjectManager;
public class DeleteProjectControllerTest {
@InjectMocks
private DeleteProjectController deleteProjectController;
@Mock
private IModifyProjectManager projectManager;
private Principal principal;
@Before
public void setup(){
projectManager = Mockito.mock(IModifyProjectManager.class);
MockitoAnnotations.initMocks(this);
principal = new Principal() {
@Override
public String getName() {
return "test";
}
};
}
@Test
public void deleteProjectRequestTest() throws QuadrigaStorageException, QuadrigaAccessException{
String mockProjectId = "testProjectId";
RedirectAttributes redirectAttributes = Mockito.mock(RedirectAttributes.class);
ArrayList<String> projectIdList = new ArrayList<String>();
projectIdList.add(mockProjectId);
ModelAndView actualModel = deleteProjectController.deleteProjectRequest(mockProjectId, redirectAttributes,principal);
Mockito.verify(projectManager, Mockito.atLeastOnce()).deleteProjectRequest(projectIdList,principal);
String expectedViewName = "redirect:/auth/workbench";
assertEquals(expectedViewName,actualModel.getViewName());
}
}