Skip to content

Commit 1b5fa56

Browse files
committed
Refactor test to use @ParameterizedTest/CsvSource + update build.gradle
1 parent 624be2d commit 1b5fa56

File tree

2 files changed

+95
-41
lines changed

2 files changed

+95
-41
lines changed

build.gradle

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@ dependencies {
3333
annotationProcessor 'org.projectlombok:lombok'
3434
testImplementation 'org.springframework.boot:spring-boot-starter-test'
3535
testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
36+
testImplementation 'org.junit.jupiter:junit-jupiter-params'
3637
}
3738

3839
tasks.named('test') {

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

Lines changed: 94 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import org.mockito.MockitoAnnotations;
1313
import org.mockito.junit.jupiter.MockitoExtension;
1414
import org.springframework.util.Assert;
15+
import org.junit.jupiter.params.ParameterizedTest;
16+
import org.junit.jupiter.params.provider.CsvSource;
1517

1618
import java.util.Optional;
1719
import java.util.UUID;
@@ -162,61 +164,112 @@ void testCreateBook_RepositoryReturnsNull_HandlesGracefully() {
162164
}
163165

164166
// ----- 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");
170167

171-
Book expectedBook = Book.builder()
172-
.id(testId)
173-
.title(longTitle)
174-
.synopsis("Synopsis")
175-
.author("Author")
176-
.build();
168+
@ParameterizedTest
169+
@CsvSource({
170+
"500, title, 'A very long title test'",
171+
"1000, synopsis, 'A very long synopsis test'"
172+
})
173+
void testCreateBook_VeryLongFields_Success(int repeatCount, String fieldType, String description) {
174+
175+
// Arrange
176+
String longText = "A".repeat(repeatCount);
177+
178+
BookRequest request;
179+
Book expectedBook;
180+
181+
if (fieldType.equals("title")) {
182+
request = new BookRequest(longText, "Synopsis", "Author");
183+
expectedBook = Book.builder()
184+
.id(testId)
185+
.title(longText)
186+
.synopsis("Synopsis")
187+
.author("Author")
188+
.build();
189+
} else {
190+
request = new BookRequest("Title", longText, "Author");
191+
expectedBook = Book.builder()
192+
.id(testId)
193+
.title("Title")
194+
.synopsis(longText)
195+
.author("Author")
196+
.build();
197+
}
177198

178199
when(testBookRepository.save(any(Book.class)))
179200
.thenReturn(expectedBook);
180201

181202
// Act
182-
Book result = testBookService.createBook(longTitleRequest);
203+
Book result = testBookService.createBook(request);
183204

184205
// Assert
185206
assertNotNull(result);
186207
assertEquals(testId, result.getId());
187-
assertEquals(longTitle, result.getTitle());
188-
assertEquals(expectedBook.getSynopsis(), result.getSynopsis());
189-
assertEquals(expectedBook.getAuthor(), result.getAuthor());
190208

191-
// Did the service perform the correct action on its dependency?
192-
verify(testBookRepository, times(1)).save(any(Book.class));
209+
if (fieldType.equals("title")) {
210+
assertEquals(longText, result.getTitle());
211+
} else {
212+
assertEquals(longText, result.getSynopsis());
213+
}
193214

215+
verify(testBookRepository, times(1)).save(any(Book.class));
194216
}
195217

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-
}
218+
// @Test
219+
// void testCreateBook_VeryLongTitle_Success() {
220+
// // Arrange
221+
// String longTitle = "A".repeat(500);
222+
// BookRequest longTitleRequest = new BookRequest(longTitle, "Synopsis", "Author");
223+
//
224+
// Book expectedBook = Book.builder()
225+
// .id(testId)
226+
// .title(longTitle)
227+
// .synopsis("Synopsis")
228+
// .author("Author")
229+
// .build();
230+
//
231+
// when(testBookRepository.save(any(Book.class)))
232+
// .thenReturn(expectedBook);
233+
//
234+
// // Act
235+
// Book result = testBookService.createBook(longTitleRequest);
236+
//
237+
// // Assert
238+
// assertNotNull(result);
239+
// assertEquals(testId, result.getId());
240+
// assertEquals(longTitle, result.getTitle());
241+
// assertEquals(expectedBook.getSynopsis(), result.getSynopsis());
242+
// assertEquals(expectedBook.getAuthor(), result.getAuthor());
243+
//
244+
// // Did the service perform the correct action on its dependency?
245+
// verify(testBookRepository, times(1)).save(any(Book.class));
246+
//
247+
// }
248+
//
249+
// @Test
250+
// void testCreateBook_VeryLongSynopsis_Success() {
251+
//
252+
// // Arrange
253+
// String longSynopsis = "A".repeat(1000);
254+
// BookRequest longSynopsisRequest = new BookRequest("Title", longSynopsis, "Author");
255+
//
256+
// Book expectedBook = Book.builder()
257+
// .id(testId)
258+
// .title("Title")
259+
// .synopsis(longSynopsis)
260+
// .author("Author")
261+
// .build();
262+
//
263+
// when(testBookRepository.save(any(Book.class)))
264+
// .thenReturn(expectedBook);
265+
//
266+
// // Act
267+
// Book result = testBookService.createBook(longSynopsisRequest);
268+
//
269+
// // Assert
270+
// assertEquals(longSynopsis, result.getSynopsis());
271+
//
272+
// }
220273

221274
@Test
222275
void testCreateBook_SpecialCharactersInTitle_Success() {

0 commit comments

Comments
 (0)