Skip to content

Commit 624be2d

Browse files
committed
Add edgecase tests: longtitle, longSynopsis, specialChars in title
1 parent 5e298ee commit 624be2d

File tree

1 file changed

+92
-0
lines changed

1 file changed

+92
-0
lines changed

src/test/java/com/codesungrape/hmcts/BookAPI/BookServiceTest.java

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
import org.mockito.Mock;
1212
import org.mockito.MockitoAnnotations;
1313
import org.mockito.junit.jupiter.MockitoExtension;
14+
import org.springframework.util.Assert;
15+
1416
import java.util.Optional;
1517
import java.util.UUID;
1618

@@ -158,4 +160,94 @@ void testCreateBook_RepositoryReturnsNull_HandlesGracefully() {
158160
testBookService.createBook(validBookRequest);
159161
});
160162
}
163+
164+
// ----- EDGE cases ---------
165+
@Test
166+
void testCreateBook_VeryLongTitle_Success() {
167+
// Arrange
168+
String longTitle = "A".repeat(500);
169+
BookRequest longTitleRequest = new BookRequest(longTitle, "Synopsis", "Author");
170+
171+
Book expectedBook = Book.builder()
172+
.id(testId)
173+
.title(longTitle)
174+
.synopsis("Synopsis")
175+
.author("Author")
176+
.build();
177+
178+
when(testBookRepository.save(any(Book.class)))
179+
.thenReturn(expectedBook);
180+
181+
// Act
182+
Book result = testBookService.createBook(longTitleRequest);
183+
184+
// Assert
185+
assertNotNull(result);
186+
assertEquals(testId, result.getId());
187+
assertEquals(longTitle, result.getTitle());
188+
assertEquals(expectedBook.getSynopsis(), result.getSynopsis());
189+
assertEquals(expectedBook.getAuthor(), result.getAuthor());
190+
191+
// Did the service perform the correct action on its dependency?
192+
verify(testBookRepository, times(1)).save(any(Book.class));
193+
194+
}
195+
196+
@Test
197+
void testCreateBook_VeryLongSynopsis_Success() {
198+
199+
// Arrange
200+
String longSynopsis = "A".repeat(1000);
201+
BookRequest longSynopsisRequest = new BookRequest("Title", longSynopsis, "Author");
202+
203+
Book expectedBook = Book.builder()
204+
.id(testId)
205+
.title("Title")
206+
.synopsis(longSynopsis)
207+
.author("Author")
208+
.build();
209+
210+
when(testBookRepository.save(any(Book.class)))
211+
.thenReturn(expectedBook);
212+
213+
// Act
214+
Book result = testBookService.createBook(longSynopsisRequest);
215+
216+
// Assert
217+
assertEquals(longSynopsis, result.getSynopsis());
218+
219+
}
220+
221+
@Test
222+
void testCreateBook_SpecialCharactersInTitle_Success() {
223+
// Arrange
224+
BookRequest specialRequest = new BookRequest(
225+
"Test: A Book! @#$%^&*()",
226+
"Synopsis",
227+
"Author"
228+
);
229+
230+
Book expectedBook = Book.builder()
231+
.id(testId)
232+
.title(specialRequest.getTitle())
233+
.synopsis(specialRequest.getSynopsis())
234+
.author(specialRequest.getAuthor())
235+
.build();
236+
237+
when(testBookRepository.save(any(Book.class)))
238+
.thenReturn(expectedBook);
239+
240+
// Act
241+
Book result = testBookService.createBook(specialRequest);
242+
243+
// Assert
244+
assertNotNull(result);
245+
assertEquals(testId, result.getId());
246+
assertEquals(specialRequest.getTitle(), result.getTitle());
247+
assertEquals(specialRequest.getSynopsis(), result.getSynopsis());
248+
assertEquals(specialRequest.getAuthor(), result.getAuthor());
249+
250+
// Did the service perform the correct action on its dependency?
251+
verify(testBookRepository, times(1)).save(any(Book.class));
252+
}
161253
}

0 commit comments

Comments
 (0)