#1284 Divide tests
This commit is contained in:
@ -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());
|
||||
}
|
||||
|
Reference in New Issue
Block a user