package no.dusken.aranea.web.control;
import no.dusken.aranea.model.Issue;
import no.dusken.aranea.service.IssueService;
import no.dusken.common.exception.PageNotFoundException;
import org.junit.Before;
import org.junit.Test;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.util.*;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
/**
* @author <a href="mailto:erlend@hamnaberg.net">Erlend Hamnaberg</a>
* @version $Id $
*/
public class IssueControllerTest {
private IssueController controller;
private IssueService issueService;
@Before
public void setup() {
controller = new IssueController();
issueService = mock(IssueService.class);
controller.setIssueService(issueService);
}
@Test
public void noThisYear() throws PageNotFoundException {
int year =(new GregorianCalendar()).get(GregorianCalendar.YEAR);
List<Issue> issuesPreviousYear = new LinkedList<Issue>();
issuesPreviousYear.add(new Issue());
when(issueService.getIssuesPublished(year)).thenReturn(Collections.<Issue>emptyList());
when(issueService.getIssuesPublished(year - 1)).thenReturn(issuesPreviousYear);
HttpServletRequest request = mock(HttpServletRequest.class);
HttpServletResponse response = mock(HttpServletResponse.class);
ModelAndView modelAndView = controller.handleRequestInternal(request, response);
assertNotNull(modelAndView);
assertTrue("Model was empty", !modelAndView.getModel().isEmpty());
Map<Integer, Collection> issues = (Map<Integer, Collection>) modelAndView.getModel().get("issueMap");
assertTrue("issues has wrong value", issues.get(year).size() == 0);
assertTrue("issues has wrong value", issues.get(year - 1).size() == 1);
}
}