#1284 Divide tests
This commit is contained in:
@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
package com.iluwatar.versionnumber;
|
package com.iluwatar.versionnumber;
|
||||||
|
|
||||||
|
import org.junit.jupiter.api.BeforeEach;
|
||||||
import org.junit.jupiter.api.Test;
|
import org.junit.jupiter.api.Test;
|
||||||
|
|
||||||
import static org.junit.jupiter.api.Assertions.*;
|
import static org.junit.jupiter.api.Assertions.*;
|
||||||
@ -31,40 +32,54 @@ import static org.junit.jupiter.api.Assertions.*;
|
|||||||
* Tests for {@link BookRepository}
|
* Tests for {@link BookRepository}
|
||||||
*/
|
*/
|
||||||
class BookRepositoryTest {
|
class BookRepositoryTest {
|
||||||
@Test
|
private final long bookId = 1;
|
||||||
void testBookRepository() throws BookDuplicateException, BookNotFoundException, VersionMismatchException {
|
private final BookRepository bookRepository = new BookRepository();
|
||||||
final var bookId = 1;
|
|
||||||
|
|
||||||
var bookRepository = new BookRepository();
|
@BeforeEach
|
||||||
|
public void setUp() throws BookDuplicateException {
|
||||||
var book = new Book();
|
var book = new Book();
|
||||||
book.setId(bookId);
|
book.setId(bookId);
|
||||||
bookRepository.add(book);
|
bookRepository.add(book);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testDefaultVersionRemainsZeroAfterAdd() throws BookNotFoundException {
|
||||||
|
var book = bookRepository.get(bookId);
|
||||||
assertEquals(0, book.getVersion());
|
assertEquals(0, book.getVersion());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void testAliceAndBobHaveDifferentVersionsAfterAliceUpdate() throws BookNotFoundException, VersionMismatchException {
|
||||||
final var aliceBook = bookRepository.get(bookId);
|
final var aliceBook = bookRepository.get(bookId);
|
||||||
final var bobBook = 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");
|
aliceBook.setTitle("Kama Sutra");
|
||||||
bookRepository.update(aliceBook);
|
bookRepository.update(aliceBook);
|
||||||
|
|
||||||
assertEquals(1, aliceBook.getVersion());
|
assertEquals(1, aliceBook.getVersion());
|
||||||
assertEquals(0, bobBook.getVersion());
|
assertEquals(0, bobBook.getVersion());
|
||||||
assertEquals(aliceBook.getVersion(), bookRepository.get(bookId).getVersion());
|
var actualBook = bookRepository.get(bookId);
|
||||||
assertEquals(aliceBook.getTitle(), bookRepository.get(bookId).getTitle());
|
assertEquals(aliceBook.getVersion(), actualBook.getVersion());
|
||||||
|
assertEquals(aliceBook.getTitle(), actualBook.getTitle());
|
||||||
assertNotEquals(aliceBook.getTitle(), bobBook.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");
|
bobBook.setAuthor("Vatsyayana Mallanaga");
|
||||||
try {
|
try {
|
||||||
bookRepository.update(bobBook);
|
bookRepository.update(bobBook);
|
||||||
} catch (VersionMismatchException e) {
|
} catch (VersionMismatchException e) {
|
||||||
assertEquals(0, bobBook.getVersion());
|
assertEquals(0, bobBook.getVersion());
|
||||||
assertEquals(1, bookRepository.get(bookId).getVersion());
|
var actualBook = bookRepository.get(bookId);
|
||||||
assertEquals(aliceBook.getVersion(), bookRepository.get(bookId).getVersion());
|
assertEquals(1, actualBook.getVersion());
|
||||||
|
assertEquals(aliceBook.getVersion(), actualBook.getVersion());
|
||||||
assertEquals("", bobBook.getTitle());
|
assertEquals("", bobBook.getTitle());
|
||||||
assertNotEquals(aliceBook.getAuthor(), bobBook.getAuthor());
|
assertNotEquals(aliceBook.getAuthor(), bobBook.getAuthor());
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user