#1284 Divide tests

This commit is contained in:
Pavel Manannikov
2020-11-23 20:59:00 +02:00
parent 97e3a3debc
commit 9ead3adf73

View File

@ -23,6 +23,7 @@
package com.iluwatar.versionnumber;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import static org.junit.jupiter.api.Assertions.*;
@ -31,40 +32,54 @@ import static org.junit.jupiter.api.Assertions.*;
* Tests for {@link BookRepository}
*/
class BookRepositoryTest {
@Test
void testBookRepository() throws BookDuplicateException, BookNotFoundException, VersionMismatchException {
final var bookId = 1;
private final long bookId = 1;
private final BookRepository bookRepository = new BookRepository();
var bookRepository = new BookRepository();
@BeforeEach
public void setUp() throws BookDuplicateException {
var book = new Book();
book.setId(bookId);
bookRepository.add(book);
}
@Test
void testDefaultVersionRemainsZeroAfterAdd() throws BookNotFoundException {
var book = bookRepository.get(bookId);
assertEquals(0, book.getVersion());
}
@Test
void testAliceAndBobHaveDifferentVersionsAfterAliceUpdate() throws BookNotFoundException, VersionMismatchException {
final var aliceBook = bookRepository.get(bookId);
final var bobBook = bookRepository.get(bookId);
assertEquals(aliceBook.getTitle(), bobBook.getTitle());
assertEquals(aliceBook.getAuthor(), bobBook.getAuthor());
assertEquals(aliceBook.getVersion(), bobBook.getVersion());
aliceBook.setTitle("Kama Sutra");
bookRepository.update(aliceBook);
assertEquals(1, aliceBook.getVersion());
assertEquals(0, bobBook.getVersion());
assertEquals(aliceBook.getVersion(), bookRepository.get(bookId).getVersion());
assertEquals(aliceBook.getTitle(), bookRepository.get(bookId).getTitle());
var actualBook = bookRepository.get(bookId);
assertEquals(aliceBook.getVersion(), actualBook.getVersion());
assertEquals(aliceBook.getTitle(), actualBook.getTitle());
assertNotEquals(aliceBook.getTitle(), bobBook.getTitle());
}
@Test
void testShouldThrowVersionMismatchExceptionOnStaleUpdate() throws BookNotFoundException, VersionMismatchException {
final var aliceBook = bookRepository.get(bookId);
final var bobBook = bookRepository.get(bookId);
aliceBook.setTitle("Kama Sutra");
bookRepository.update(aliceBook);
bobBook.setAuthor("Vatsyayana Mallanaga");
try {
bookRepository.update(bobBook);
} catch (VersionMismatchException e) {
assertEquals(0, bobBook.getVersion());
assertEquals(1, bookRepository.get(bookId).getVersion());
assertEquals(aliceBook.getVersion(), bookRepository.get(bookId).getVersion());
var actualBook = bookRepository.get(bookId);
assertEquals(1, actualBook.getVersion());
assertEquals(aliceBook.getVersion(), actualBook.getVersion());
assertEquals("", bobBook.getTitle());
assertNotEquals(aliceBook.getAuthor(), bobBook.getAuthor());
}