package org.mockserver.examples.web.controller;
import org.junit.Before;
import org.junit.Test;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockserver.examples.model.Book;
import org.mockserver.examples.service.BookService;
import org.springframework.ui.Model;
import static org.junit.Assert.assertEquals;
import static org.mockito.Matchers.eq;
import static org.mockito.Matchers.same;
import static org.mockito.Mockito.*;
import static org.mockito.MockitoAnnotations.initMocks;
/**
* @author jamesdbloom
*/
public class BooksPageControllerTest {
@Mock
private BookService bookService;
@InjectMocks
private BooksPageController booksPageController;
@Before
public void setupMocks() {
booksPageController = new BooksPageController();
initMocks(this);
}
@Test
public void shouldLoadListOfBooks() {
// given
Model mockModel = mock(Model.class);
Book[] bookList = {};
when(bookService.getAllBooks()).thenReturn(bookList);
// when
String viewName = booksPageController.getBookList(mockModel);
// then
assertEquals("books", viewName);
verify(mockModel).addAttribute(eq("books"), eq(bookList));
}
@Test
public void shouldLoadSingleBook() {
// given
Model mockModel = mock(Model.class);
Book book = new Book(1, "title", "author", "isbn", "publicationDate");
when(bookService.getBook("1")).thenReturn(book);
// when
String viewName = booksPageController.getBook("1", mockModel);
// then
assertEquals("book", viewName);
verify(mockModel).addAttribute(eq("book"), same(book));
}
}