Skip to content

Commit 9ead3ad

Browse files
author
Pavel Manannikov
committed
iluwatar#1284 Divide tests
1 parent 97e3a3d commit 9ead3ad

File tree

1 file changed

+27
-12
lines changed

1 file changed

+27
-12
lines changed

version-number/src/test/java/com/iluwatar/versionnumber/BookRepositoryTest.java

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323

2424
package com.iluwatar.versionnumber;
2525

26+
import org.junit.jupiter.api.BeforeEach;
2627
import org.junit.jupiter.api.Test;
2728

2829
import static org.junit.jupiter.api.Assertions.*;
@@ -31,40 +32,54 @@
3132
* Tests for {@link BookRepository}
3233
*/
3334
class BookRepositoryTest {
34-
@Test
35-
void testBookRepository() throws BookDuplicateException, BookNotFoundException, VersionMismatchException {
36-
final var bookId = 1;
35+
private final long bookId = 1;
36+
private final BookRepository bookRepository = new BookRepository();
3737

38-
var bookRepository = new BookRepository();
38+
@BeforeEach
39+
public void setUp() throws BookDuplicateException {
3940
var book = new Book();
4041
book.setId(bookId);
4142
bookRepository.add(book);
43+
}
4244

45+
@Test
46+
void testDefaultVersionRemainsZeroAfterAdd() throws BookNotFoundException {
47+
var book = bookRepository.get(bookId);
4348
assertEquals(0, book.getVersion());
49+
}
4450

51+
@Test
52+
void testAliceAndBobHaveDifferentVersionsAfterAliceUpdate() throws BookNotFoundException, VersionMismatchException {
4553
final var aliceBook = bookRepository.get(bookId);
4654
final var bobBook = bookRepository.get(bookId);
4755

48-
assertEquals(aliceBook.getTitle(), bobBook.getTitle());
49-
assertEquals(aliceBook.getAuthor(), bobBook.getAuthor());
50-
assertEquals(aliceBook.getVersion(), bobBook.getVersion());
51-
5256
aliceBook.setTitle("Kama Sutra");
5357
bookRepository.update(aliceBook);
5458

5559
assertEquals(1, aliceBook.getVersion());
5660
assertEquals(0, bobBook.getVersion());
57-
assertEquals(aliceBook.getVersion(), bookRepository.get(bookId).getVersion());
58-
assertEquals(aliceBook.getTitle(), bookRepository.get(bookId).getTitle());
61+
var actualBook = bookRepository.get(bookId);
62+
assertEquals(aliceBook.getVersion(), actualBook.getVersion());
63+
assertEquals(aliceBook.getTitle(), actualBook.getTitle());
5964
assertNotEquals(aliceBook.getTitle(), bobBook.getTitle());
65+
}
66+
67+
@Test
68+
void testShouldThrowVersionMismatchExceptionOnStaleUpdate() throws BookNotFoundException, VersionMismatchException {
69+
final var aliceBook = bookRepository.get(bookId);
70+
final var bobBook = bookRepository.get(bookId);
71+
72+
aliceBook.setTitle("Kama Sutra");
73+
bookRepository.update(aliceBook);
6074

6175
bobBook.setAuthor("Vatsyayana Mallanaga");
6276
try {
6377
bookRepository.update(bobBook);
6478
} catch (VersionMismatchException e) {
6579
assertEquals(0, bobBook.getVersion());
66-
assertEquals(1, bookRepository.get(bookId).getVersion());
67-
assertEquals(aliceBook.getVersion(), bookRepository.get(bookId).getVersion());
80+
var actualBook = bookRepository.get(bookId);
81+
assertEquals(1, actualBook.getVersion());
82+
assertEquals(aliceBook.getVersion(), actualBook.getVersion());
6883
assertEquals("", bobBook.getTitle());
6984
assertNotEquals(aliceBook.getAuthor(), bobBook.getAuthor());
7085
}

0 commit comments

Comments
 (0)