package sagan.blog.support;
import sagan.blog.Post;
import sagan.blog.PostBuilder;
import sagan.blog.PostCategory;
import sagan.support.DateFactory;
import javax.servlet.http.HttpServletRequest;
import org.junit.Before;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.ui.ExtendedModelMap;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.Matchers.*;
import static org.mockito.BDDMockito.given;
public class BlogController_ShowTests {
@Mock
private BlogService blogService;
@Mock
private HttpServletRequest request;
private DateFactory dateFactory;
private BlogController controller;
private ExtendedModelMap model = new ExtendedModelMap();
private String viewName;
private Post post;
@Before
public void setUp() throws Exception {
MockitoAnnotations.initMocks(this);
controller = new BlogController(blogService, dateFactory);
post = PostBuilder.post().publishAt("2012-02-01 11:00").build();
given(blogService.getPublishedPost("2012/02/01/title")).willReturn(post);
given(blogService.getDisqusShortname()).willReturn("spring-io-test");
viewName = controller.showPost("2012", "02", "01", "title", model);
}
@Test
public void providesActiveCategoryInModel() {
assertThat((String) model.get("activeCategory"), equalTo(post.getCategory().getDisplayName()));
}
@Test
public void providesAllCategoriesInModel() {
assertThat((PostCategory[]) model.get("categories"), is(PostCategory.values()));
}
@Test
public void providesDisqusShortnameInModel() {
assertThat((String) model.get("disqusShortname"), equalTo("spring-io-test"));
}
@Test
public void viewNameIsShow() {
assertThat(viewName, is("blog/show"));
}
@Test
public void singlePostInModelForOnePost() {
assertThat(((PostView) model.get("post")).getId(), is(post.getId()));
}
}