Skip to content

Commit

Permalink
refactor: rename collections->newspaper service variables
Browse files Browse the repository at this point in the history
  • Loading branch information
pierrebeauguitte committed Feb 28, 2024
1 parent f33de78 commit 7161bb1
Show file tree
Hide file tree
Showing 7 changed files with 110 additions and 110 deletions.
10 changes: 5 additions & 5 deletions src/main/kotlin/no/nb/bikube/core/controller/CoreController.kt
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ import java.time.LocalDate
@Tag(name = "Catalogue objects", description = "Endpoints related to catalog data for all text material")
@RequestMapping("")
class CoreController (
private val collectionsService: NewspaperService
private val newspaperService: NewspaperService
){
companion object {
const val DATE_REGEX = "^(17|18|19|20)\\d{2}(-)?(0[1-9]|1[0-2])(-)?(0[1-9]|[12][0-9]|3[01])$"
Expand All @@ -51,7 +51,7 @@ class CoreController (
@RequestParam materialType: MaterialType,
): ResponseEntity<Mono<Item>> {
return when(materialTypeToCatalogueName(materialType)) {
CatalogueName.COLLECTIONS -> ResponseEntity.ok(collectionsService.getSingleItem(catalogueId))
CatalogueName.COLLECTIONS -> ResponseEntity.ok(newspaperService.getSingleItem(catalogueId))
else -> throw NotSupportedException("Material type $materialType is not supported.")
}
}
Expand All @@ -68,7 +68,7 @@ class CoreController (
@RequestParam materialType: MaterialType,
): ResponseEntity<Mono<Title>> {
return when(materialTypeToCatalogueName(materialType)) {
CatalogueName.COLLECTIONS -> ResponseEntity.ok(collectionsService.getSingleTitle(catalogueId))
CatalogueName.COLLECTIONS -> ResponseEntity.ok(newspaperService.getSingleTitle(catalogueId))
else -> throw NotSupportedException("Material type $materialType is not supported.")
}
}
Expand All @@ -89,7 +89,7 @@ class CoreController (
): ResponseEntity<Flux<CatalogueRecord>> {
if (searchTerm.isEmpty()) throw BadRequestBodyException("Search term cannot be empty.")
return when(materialTypeToCatalogueName(materialType)) {
CatalogueName.COLLECTIONS -> ResponseEntity.ok(collectionsService.searchTitleByName(searchTerm))
CatalogueName.COLLECTIONS -> ResponseEntity.ok(newspaperService.searchTitleByName(searchTerm))
else -> throw NotSupportedException("Material type $materialType is not supported.")
}
}
Expand Down Expand Up @@ -125,7 +125,7 @@ class CoreController (

return when(materialTypeToCatalogueName(materialType)) {
CatalogueName.COLLECTIONS -> ResponseEntity.ok(
collectionsService.getItemsByTitle(titleCatalogueId, parsedDate, isDigital, materialType)
newspaperService.getItemsByTitle(titleCatalogueId, parsedDate, isDigital, materialType)
)
else -> throw NotSupportedException("Material type $materialType is not supported.")
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ import reactor.core.publisher.Mono
@Tag(name="Newspaper items", description="Endpoints related to newspaper items.")
@RequestMapping("/newspapers/items")
class ItemController (
private val collectionsService: NewspaperService,
private val newspaperService: NewspaperService,
private val creationValidationService: CreationValidationService
){
@PostMapping("/", produces = [MediaType.APPLICATION_JSON_VALUE])
Expand All @@ -40,8 +40,8 @@ class ItemController (
creationValidationService.validateItem(item)

// Checks that title exists before creating item. Will throw exception if not found.
return collectionsService.getSingleTitle(item.titleCatalogueId!!)
.flatMap { collectionsService.createNewspaperItem(item) }
return newspaperService.getSingleTitle(item.titleCatalogueId!!)
.flatMap { newspaperService.createNewspaperItem(item) }
.map { ResponseEntity.status(HttpStatus.CREATED).body(it) }
.doOnSuccess { responseEntity ->
logger().info("Newspaper item created with id: ${responseEntity.body?.catalogueId}")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@ import reactor.core.publisher.Mono
@Tag(name="Newspaper titles", description="Endpoints related to newspaper titles.")
@RequestMapping("/newspapers/titles")
class TitleController (
private val collectionsService: NewspaperService
private val newspaperService: NewspaperService
) {
@PostMapping("/", produces = [MediaType.APPLICATION_JSON_VALUE])
@Operation(summary = "Create a newspaper title")
Expand All @@ -46,28 +46,28 @@ class TitleController (
Mono.error(BadRequestBodyException("Start date cannot be after end date"))
} else {
val publisherMono: Mono<Publisher> = title.publisher?.let { publisherName ->
collectionsService.createPublisher(publisherName).onErrorResume { exception ->
newspaperService.createPublisher(publisherName).onErrorResume { exception ->
if (exception is RecordAlreadyExistsException) Mono.empty()
else Mono.error(exception)
}
} ?: Mono.empty()

val locationMono: Mono<PublisherPlace> = title.publisherPlace?.let { locationName ->
collectionsService.createPublisherPlace(locationName).onErrorResume { exception ->
newspaperService.createPublisherPlace(locationName).onErrorResume { exception ->
if (exception is RecordAlreadyExistsException) Mono.empty()
else Mono.error(exception)
}
} ?: Mono.empty()

val languageMono: Mono<Language> = title.language?.let { languageName ->
collectionsService.createLanguage(languageName).onErrorResume { exception ->
newspaperService.createLanguage(languageName).onErrorResume { exception ->
if (exception is RecordAlreadyExistsException) Mono.empty()
else Mono.error(exception)
}
} ?: Mono.empty()

return Mono.`when`(publisherMono, locationMono, languageMono)
.then(collectionsService.createNewspaperTitle(title))
.then(newspaperService.createNewspaperTitle(title))
.map { createdTitle -> ResponseEntity.status(HttpStatus.CREATED).body(createdTitle) }
.doOnSuccess { responseEntity ->
logger().info("Newspaper title created with id: ${responseEntity.body?.catalogueId}")
Expand Down
28 changes: 14 additions & 14 deletions src/test/kotlin/no/nb/bikube/core/controller/CoreControllerTest.kt
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@ class CoreControllerTest {
private lateinit var coreController: CoreController

@MockkBean
private lateinit var collectionsService: NewspaperService
private lateinit var newspaperService: NewspaperService

@Test
fun `get single item for newspaper should return item in body`() {
every { collectionsService.getSingleItem(any()) } returns Mono.just(newspaperItemMockA.copy())
every { newspaperService.getSingleItem(any()) } returns Mono.just(newspaperItemMockA.copy())

coreController.getSingleItem("1", MaterialType.NEWSPAPER).body!!
.test()
Expand Down Expand Up @@ -60,7 +60,7 @@ class CoreControllerTest {

@Test
fun `get single title for newspaper should return title in body`() {
every { collectionsService.getSingleTitle(any()) } returns Mono.just(newspaperTitleMockA.copy())
every { newspaperService.getSingleTitle(any()) } returns Mono.just(newspaperTitleMockA.copy())

coreController.getSingleTitle("1", MaterialType.NEWSPAPER).body!!
.test()
Expand Down Expand Up @@ -88,7 +88,7 @@ class CoreControllerTest {

@Test
fun `search title should return a list of titles matching name`() {
every { collectionsService.searchTitleByName(any()) } returns Flux.just(
every { newspaperService.searchTitleByName(any()) } returns Flux.just(
newspaperTitleMockA.copy(), newspaperTitleMockB.copy()
)

Expand All @@ -110,23 +110,23 @@ class CoreControllerTest {
assertThrows<NotSupportedException> { coreController.searchTitle("Avis", MaterialType.PERIODICAL) }
assertThrows<NotSupportedException> { coreController.searchTitle("Avis", MaterialType.MONOGRAPH) }

verify { collectionsService.searchTitleByName(any()) wasNot Called }
verify { newspaperService.searchTitleByName(any()) wasNot Called }
}

@Test
fun `search title should call on collectionsService function when materialType is NEWSPAPER`() {
every { collectionsService.searchTitleByName(any()) } returns Flux.empty()
fun `search title should call on newspaperService function when materialType is NEWSPAPER`() {
every { newspaperService.searchTitleByName(any()) } returns Flux.empty()

coreController.searchTitle("Avis", MaterialType.NEWSPAPER).body!!
.test()
.verifyComplete()

verify { collectionsService.searchTitleByName(any()) }
verify { newspaperService.searchTitleByName(any()) }
}

@Test
fun `search item should return a list of items matching criteria`() {
every { collectionsService.getItemsByTitle(any(), any(), any(), any()) } returns Flux.just(
every { newspaperService.getItemsByTitle(any(), any(), any(), any()) } returns Flux.just(
newspaperItemMockA.copy(), newspaperItemMockA.copy()
)

Expand All @@ -148,24 +148,24 @@ class CoreControllerTest {
assertThrows<NotSupportedException> { coreController.searchItem("Avis", MaterialType.PERIODICAL, "2020-01-01", false) }
assertThrows<NotSupportedException> { coreController.searchItem("Avis", MaterialType.MONOGRAPH, "2020-01-01", false) }

verify { collectionsService.getItemsByTitle(any(), any(), any(), any()) wasNot Called }
verify { newspaperService.getItemsByTitle(any(), any(), any(), any()) wasNot Called }
}

@Test
fun `search item should call on collectionsService function when materialType is NEWSPAPER`() {
every { collectionsService.getItemsByTitle(any(), any(), any(), any()) } returns Flux.empty()
fun `search item should call on newspaperService function when materialType is NEWSPAPER`() {
every { newspaperService.getItemsByTitle(any(), any(), any(), any()) } returns Flux.empty()

coreController.searchItem("1", MaterialType.NEWSPAPER, "2020-01-01", true).body!!
.test()
.verifyComplete()

verify { collectionsService.getItemsByTitle(any(), any(), any(), any()) }
verify { newspaperService.getItemsByTitle(any(), any(), any(), any()) }
}

@Test
fun `search item should throw BadRequestBodyException when searchTerm is empty`() {
assertThrows<BadRequestBodyException> { coreController.searchItem("", MaterialType.NEWSPAPER, "2020-01-01", false) }

verify { collectionsService.getItemsByTitle(any(), any(), any(), any()) wasNot Called }
verify { newspaperService.getItemsByTitle(any(), any(), any(), any()) wasNot Called }
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -22,15 +22,15 @@ class ItemControllerTest {
private lateinit var itemController: ItemController

@MockkBean
private lateinit var collectionsService: NewspaperService
private lateinit var newspaperService: NewspaperService

@MockkBean
private lateinit var creationValidationService: CreationValidationService

@Test
fun `create item should return 200 OK with created item`() {
every { collectionsService.getSingleTitle(any()) } returns Mono.just(newspaperTitleMockA.copy())
every { collectionsService.createNewspaperItem(any()) } returns Mono.just(newspaperItemMockA.copy())
every { newspaperService.getSingleTitle(any()) } returns Mono.just(newspaperTitleMockA.copy())
every { newspaperService.createNewspaperItem(any()) } returns Mono.just(newspaperItemMockA.copy())
every { creationValidationService.validateItem(any()) } returns Unit

itemController.createItem(newspaperItemMockCValidForCreation.copy())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,14 +28,14 @@ class TitleControllerTest {
private lateinit var titleController: TitleController

@MockkBean
private lateinit var collectionsService: NewspaperService
private lateinit var newspaperService: NewspaperService

@Test
fun `createTitle should return 200 OK with the created title`() {
every { collectionsService.createPublisher(any()) } returns Mono.empty()
every { collectionsService.createPublisherPlace(any()) } returns Mono.empty()
every { collectionsService.createLanguage(any()) } returns Mono.empty()
every { collectionsService.createNewspaperTitle(any()) } returns Mono.just(newspaperTitleMockA.copy())
every { newspaperService.createPublisher(any()) } returns Mono.empty()
every { newspaperService.createPublisherPlace(any()) } returns Mono.empty()
every { newspaperService.createLanguage(any()) } returns Mono.empty()
every { newspaperService.createNewspaperTitle(any()) } returns Mono.just(newspaperTitleMockA.copy())

titleController.createTitle(newspaperTitleInputDtoMockA)
.test()
Expand Down Expand Up @@ -80,8 +80,8 @@ class TitleControllerTest {

@Test
fun `createTitle should call create publisher if publisher is present on request body`() {
every { collectionsService.createPublisher(any()) } returns Mono.just(Publisher("Pub", "1"))
every { collectionsService.createNewspaperTitle(any()) } returns Mono.just(newspaperTitleMockA.copy())
every { newspaperService.createPublisher(any()) } returns Mono.just(Publisher("Pub", "1"))
every { newspaperService.createNewspaperTitle(any()) } returns Mono.just(newspaperTitleMockA.copy())
titleController.createTitle(newspaperTitleInputDtoMockA.copy(publisher = "Pub", publisherPlace = null))
.test()
.expectSubscription()
Expand All @@ -93,8 +93,8 @@ class TitleControllerTest {

@Test
fun `createTitle should call createPublisherPlace if publisherPlace is present on request body`() {
every { collectionsService.createPublisherPlace(any()) } returns Mono.just(PublisherPlace("Pub", "1"))
every { collectionsService.createNewspaperTitle(any()) } returns Mono.just(newspaperTitleMockA.copy())
every { newspaperService.createPublisherPlace(any()) } returns Mono.just(PublisherPlace("Pub", "1"))
every { newspaperService.createNewspaperTitle(any()) } returns Mono.just(newspaperTitleMockA.copy())
titleController.createTitle(newspaperTitleInputDtoMockA.copy(publisherPlace = "Pub"))
.test()
.expectSubscription()
Expand All @@ -106,8 +106,8 @@ class TitleControllerTest {

@Test
fun `createTitle should call createLanguage if language is present on request body`() {
every { collectionsService.createLanguage(any()) } returns Mono.just(Language("nob", "1"))
every { collectionsService.createNewspaperTitle(any()) } returns Mono.just(newspaperTitleMockA.copy())
every { newspaperService.createLanguage(any()) } returns Mono.just(Language("nob", "1"))
every { newspaperService.createNewspaperTitle(any()) } returns Mono.just(newspaperTitleMockA.copy())
titleController.createTitle(newspaperTitleInputDtoMockA.copy(language = "nob", publisherPlace = null))
.test()
.expectSubscription()
Expand All @@ -121,7 +121,7 @@ class TitleControllerTest {
fun `createTitle should not call on createPublisher, createPublisherPlace or createLanguage if not present on request body`() {
val titleInput = newspaperTitleInputDtoMockA.copy(publisher = null, publisherPlace = null, language = null)
val title = newspaperTitleMockA.copy(publisher = null, publisherPlace = null, language = null)
every { collectionsService.createNewspaperTitle(any()) } returns Mono.just(title)
every { newspaperService.createNewspaperTitle(any()) } returns Mono.just(title)
titleController.createTitle(titleInput)
.test()
.expectSubscription()
Expand All @@ -130,19 +130,19 @@ class TitleControllerTest {
}
.verifyComplete()

verify { collectionsService.createPublisher(any()) wasNot Called }
verify { collectionsService.createPublisherPlace(any()) wasNot Called }
verify { collectionsService.createLanguage(any()) wasNot Called }
verify { newspaperService.createPublisher(any()) wasNot Called }
verify { newspaperService.createPublisherPlace(any()) wasNot Called }
verify { newspaperService.createLanguage(any()) wasNot Called }
}

@Test
fun `createTitle should continue when createPublisher receives a 409 conflict`() {
every { collectionsService.createPublisher(any()) } returns Mono.error(
every { newspaperService.createPublisher(any()) } returns Mono.error(
RecordAlreadyExistsException("Publisher place 'Schibsted' already exists")
)
every { collectionsService.createPublisherPlace(any()) } returns Mono.just(PublisherPlace("Oslo", "1"))
every { collectionsService.createLanguage(any()) } returns Mono.just(Language("nob", "1"))
every { collectionsService.createNewspaperTitle(any()) } returns Mono.just(newspaperTitleMockA.copy())
every { newspaperService.createPublisherPlace(any()) } returns Mono.just(PublisherPlace("Oslo", "1"))
every { newspaperService.createLanguage(any()) } returns Mono.just(Language("nob", "1"))
every { newspaperService.createNewspaperTitle(any()) } returns Mono.just(newspaperTitleMockA.copy())
titleController.createTitle(newspaperTitleInputDtoMockA.copy(publisher = "Schibsted"))
.test()
.expectSubscription()
Expand All @@ -154,12 +154,12 @@ class TitleControllerTest {

@Test
fun `createTitle should continue when createPublisherPlace receives a 409 conflict`() {
every { collectionsService.createPublisher(any()) } returns Mono.just(Publisher("Schibsted", "1"))
every { collectionsService.createPublisherPlace(any()) } returns Mono.error(
every { newspaperService.createPublisher(any()) } returns Mono.just(Publisher("Schibsted", "1"))
every { newspaperService.createPublisherPlace(any()) } returns Mono.error(
RecordAlreadyExistsException("Publisher place 'Oslo' already exists")
)
every { collectionsService.createLanguage(any()) } returns Mono.just(Language("nob", "1"))
every { collectionsService.createNewspaperTitle(any()) } returns Mono.just(newspaperTitleMockA.copy())
every { newspaperService.createLanguage(any()) } returns Mono.just(Language("nob", "1"))
every { newspaperService.createNewspaperTitle(any()) } returns Mono.just(newspaperTitleMockA.copy())
titleController.createTitle(newspaperTitleInputDtoMockA.copy(publisherPlace = "Oslo"))
.test()
.expectSubscription()
Expand All @@ -171,12 +171,12 @@ class TitleControllerTest {

@Test
fun `createTitle should continue when createLanguage receives a 409 conflict`() {
every { collectionsService.createPublisher(any()) } returns Mono.just(Publisher("Schibsted", "1"))
every { collectionsService.createPublisherPlace(any()) } returns Mono.just(PublisherPlace("Oslo", "1"))
every { collectionsService.createLanguage(any()) } returns Mono.error(
every { newspaperService.createPublisher(any()) } returns Mono.just(Publisher("Schibsted", "1"))
every { newspaperService.createPublisherPlace(any()) } returns Mono.just(PublisherPlace("Oslo", "1"))
every { newspaperService.createLanguage(any()) } returns Mono.error(
RecordAlreadyExistsException("Language 'nob' already exists")
)
every { collectionsService.createNewspaperTitle(any()) } returns Mono.just(newspaperTitleMockA.copy())
every { newspaperService.createNewspaperTitle(any()) } returns Mono.just(newspaperTitleMockA.copy())
titleController.createTitle(newspaperTitleInputDtoMockA.copy(language = "nob"))
.test()
.expectSubscription()
Expand Down
Loading

0 comments on commit 7161bb1

Please sign in to comment.