From 84fbce366b77358fa31ee26ffb950bc5ef92cfaa Mon Sep 17 00:00:00 2001 From: aitestmate Date: Sat, 23 May 2026 18:09:31 +0000 Subject: [PATCH 1/2] [chore] [mod-dcb] unit tests --- .../kafka/TransactionHelperTest.java | 133 ++++++++++++++++++ 1 file changed, 133 insertions(+) create mode 100644 src/test/java/org/folio/dcb/integration/kafka/TransactionHelperTest.java diff --git a/src/test/java/org/folio/dcb/integration/kafka/TransactionHelperTest.java b/src/test/java/org/folio/dcb/integration/kafka/TransactionHelperTest.java new file mode 100644 index 00000000..2bf20a43 --- /dev/null +++ b/src/test/java/org/folio/dcb/integration/kafka/TransactionHelperTest.java @@ -0,0 +1,133 @@ +package org.folio.dcb.integration.kafka; + +import org.junit.jupiter.api.extension.ExtendWith; +import org.mockito.junit.jupiter.MockitoExtension; +import org.folio.dcb.integration.kafka.model.EventData; +import org.junit.jupiter.api.Test; +import static org.assertj.core.api.Assertions.assertThat; + +@ExtendWith(MockitoExtension.class) +class TransactionHelperTest { + + @Test + void parseLoanEventShouldCorrectMapCheckOutAndCheckInActions() { + // TestMate-bae863f11690bb7c8697340f2df3b944 + // Given + String itemId = "8db107f5-12aa-479f-9c07-39e7c9cf2e4d"; + String checkOutPayload = """ + { + "type": "UPDATED", + "data": { + "new": { + "itemId": "%s", + "action": "checkedout" + } + } + } + """.formatted(itemId); + String checkInPayload = """ + { + "type": "UPDATED", + "data": { + "new": { + "itemId": "%s", + "action": "checkedin" + } + } + } + """.formatted(itemId); + String unknownActionPayload = """ + { + "type": "UPDATED", + "data": { + "new": { + "itemId": "%s", + "action": "other" + } + } + } + """.formatted(itemId); + // When + EventData checkOutResult = TransactionHelper.parseLoanEvent(checkOutPayload); + EventData checkInResult = TransactionHelper.parseLoanEvent(checkInPayload); + EventData unknownResult = TransactionHelper.parseLoanEvent(unknownActionPayload); + // Then + assertThat(checkOutResult.getType()).isEqualTo(EventData.EventType.CHECK_OUT); + assertThat(checkInResult.getType()).isEqualTo(EventData.EventType.CHECK_IN); + assertThat(unknownResult.getType()).isNull(); + } + + @Test + void parseLoanEventShouldDetermineDcbStatusBasedOnIsDcbField() { + // TestMate-cfdf83db95a1c3b069df2d438e83c809 + // Given + String itemId = "8db107f5-12aa-479f-9c07-39e7c9cf2e4d"; + String payloadMissingIsDcb = """ + { + "type": "UPDATED", + "data": { + "new": { + "itemId": "%s" + } + } + } + """.formatted(itemId); + String payloadIsDcbTrue = """ + { + "type": "UPDATED", + "data": { + "new": { + "itemId": "%s", + "isDcb": true + } + } + } + """.formatted(itemId); + String payloadIsDcbFalse = """ + { + "type": "UPDATED", + "data": { + "new": { + "itemId": "%s", + "isDcb": false + } + } + } + """.formatted(itemId); + // When + EventData resultMissing = TransactionHelper.parseLoanEvent(payloadMissingIsDcb); + EventData resultTrue = TransactionHelper.parseLoanEvent(payloadIsDcbTrue); + EventData resultFalse = TransactionHelper.parseLoanEvent(payloadIsDcbFalse); + // Then + assertThat(resultMissing.isDcb()).isTrue(); + assertThat(resultTrue.isDcb()).isTrue(); + assertThat(resultFalse.isDcb()).isFalse(); + } + + @Test + void parseLoanEventShouldPopulateLoanStatusWhenPresent() { + // TestMate-bcbe206fc559de7d897da32b27a7e5ab + // Given + String itemId = "8db107f5-12aa-479f-9c07-39e7c9cf2e4d"; + String expectedStatus = "Open - Checked out"; + String payload = """ + { + "type": "UPDATED", + "data": { + "new": { + "itemId": "%s", + "status": { + "name": "%s" + } + } + } + } + """.formatted(itemId, expectedStatus); + // When + EventData result = TransactionHelper.parseLoanEvent(payload); + // Then + assertThat(result.getItemId()).isEqualTo(itemId); + assertThat(result.getLoanStatus()).isEqualTo(expectedStatus); + } + +} From 247a0e7518a2862fdf4f748ccbfc62b7bd4c2330 Mon Sep 17 00:00:00 2001 From: Pavel Filippov Date: Tue, 16 Jun 2026 18:05:13 +0300 Subject: [PATCH 2/2] chore(unit-tests): Update tests to follow codestyle --- .../kafka/TransactionHelperTest.java | 107 +++++++++++------- 1 file changed, 69 insertions(+), 38 deletions(-) diff --git a/src/test/java/org/folio/dcb/integration/kafka/TransactionHelperTest.java b/src/test/java/org/folio/dcb/integration/kafka/TransactionHelperTest.java index e8495d1f..cc8fa09c 100644 --- a/src/test/java/org/folio/dcb/integration/kafka/TransactionHelperTest.java +++ b/src/test/java/org/folio/dcb/integration/kafka/TransactionHelperTest.java @@ -74,13 +74,10 @@ void getHeaderValue_positive_shouldHandleSpecialCharactersInUtf8() { assertThat(result).hasSize(1).containsExactly(headerValue); } - @Test - void parseLoanEventShouldCorrectMapCheckOutAndCheckInActions() { - // TestMate-bae863f11690bb7c8697340f2df3b944 - // Given - String itemId = "8db107f5-12aa-479f-9c07-39e7c9cf2e4d"; - String checkOutPayload = """ + void parseLoanEventShouldMapCheckOutAction() { + var itemId = "8db107f5-12aa-479f-9c07-39e7c9cf2e4d"; + var payload = """ { "type": "UPDATED", "data": { @@ -91,7 +88,17 @@ void parseLoanEventShouldCorrectMapCheckOutAndCheckInActions() { } } """.formatted(itemId); - String checkInPayload = """ + + var result = TransactionHelper.parseLoanEvent(payload); + + assertThat(result).isNotNull(); + assertThat(result.getType()).isEqualTo(EventData.EventType.CHECK_OUT); + } + + @Test + void parseLoanEventShouldMapCheckInAction() { + var itemId = "8db107f5-12aa-479f-9c07-39e7c9cf2e4d"; + var payload = """ { "type": "UPDATED", "data": { @@ -102,7 +109,17 @@ void parseLoanEventShouldCorrectMapCheckOutAndCheckInActions() { } } """.formatted(itemId); - String unknownActionPayload = """ + + var result = TransactionHelper.parseLoanEvent(payload); + + assertThat(result).isNotNull(); + assertThat(result.getType()).isEqualTo(EventData.EventType.CHECK_IN); + } + + @Test + void parseLoanEventShouldReturnNullTypeForUnknownAction() { + var itemId = "8db107f5-12aa-479f-9c07-39e7c9cf2e4d"; + var payload = """ { "type": "UPDATED", "data": { @@ -113,22 +130,17 @@ void parseLoanEventShouldCorrectMapCheckOutAndCheckInActions() { } } """.formatted(itemId); - // When - EventData checkOutResult = TransactionHelper.parseLoanEvent(checkOutPayload); - EventData checkInResult = TransactionHelper.parseLoanEvent(checkInPayload); - EventData unknownResult = TransactionHelper.parseLoanEvent(unknownActionPayload); - // Then - assertThat(checkOutResult.getType()).isEqualTo(EventData.EventType.CHECK_OUT); - assertThat(checkInResult.getType()).isEqualTo(EventData.EventType.CHECK_IN); - assertThat(unknownResult.getType()).isNull(); + + var result = TransactionHelper.parseLoanEvent(payload); + + assertThat(result).isNotNull(); + assertThat(result.getType()).isNull(); } @Test - void parseLoanEventShouldDetermineDcbStatusBasedOnIsDcbField() { - // TestMate-cfdf83db95a1c3b069df2d438e83c809 - // Given - String itemId = "8db107f5-12aa-479f-9c07-39e7c9cf2e4d"; - String payloadMissingIsDcb = """ + void parseLoanEventShouldDefaultIsDcbToTrueWhenMissing() { + var itemId = "8db107f5-12aa-479f-9c07-39e7c9cf2e4d"; + var payload = """ { "type": "UPDATED", "data": { @@ -138,7 +150,18 @@ void parseLoanEventShouldDetermineDcbStatusBasedOnIsDcbField() { } } """.formatted(itemId); - String payloadIsDcbTrue = """ + + var result = TransactionHelper.parseLoanEvent(payload); + + assertThat(result).isNotNull() + .extracting(EventData::isDcb) + .isEqualTo(true); + } + + @Test + void parseLoanEventShouldPreserveIsDcbWhenTrue() { + var itemId = "8db107f5-12aa-479f-9c07-39e7c9cf2e4d"; + var payload = """ { "type": "UPDATED", "data": { @@ -149,7 +172,18 @@ void parseLoanEventShouldDetermineDcbStatusBasedOnIsDcbField() { } } """.formatted(itemId); - String payloadIsDcbFalse = """ + + var result = TransactionHelper.parseLoanEvent(payload); + + assertThat(result).isNotNull() + .extracting(EventData::isDcb) + .isEqualTo(true); + } + + @Test + void parseLoanEventShouldPreserveIsDcbWhenFalse() { + var itemId = "8db107f5-12aa-479f-9c07-39e7c9cf2e4d"; + var payload = """ { "type": "UPDATED", "data": { @@ -160,23 +194,20 @@ void parseLoanEventShouldDetermineDcbStatusBasedOnIsDcbField() { } } """.formatted(itemId); - // When - EventData resultMissing = TransactionHelper.parseLoanEvent(payloadMissingIsDcb); - EventData resultTrue = TransactionHelper.parseLoanEvent(payloadIsDcbTrue); - EventData resultFalse = TransactionHelper.parseLoanEvent(payloadIsDcbFalse); - // Then - assertThat(resultMissing.isDcb()).isTrue(); - assertThat(resultTrue.isDcb()).isTrue(); - assertThat(resultFalse.isDcb()).isFalse(); + + var result = TransactionHelper.parseLoanEvent(payload); + + assertThat(result).isNotNull() + .extracting(EventData::isDcb) + .isEqualTo(false); } @Test void parseLoanEventShouldPopulateLoanStatusWhenPresent() { // TestMate-bcbe206fc559de7d897da32b27a7e5ab - // Given - String itemId = "8db107f5-12aa-479f-9c07-39e7c9cf2e4d"; - String expectedStatus = "Open - Checked out"; - String payload = """ + var itemId = "8db107f5-12aa-479f-9c07-39e7c9cf2e4d"; + var expectedStatus = "Open - Checked out"; + var payload = """ { "type": "UPDATED", "data": { @@ -189,9 +220,9 @@ void parseLoanEventShouldPopulateLoanStatusWhenPresent() { } } """.formatted(itemId, expectedStatus); - // When - EventData result = TransactionHelper.parseLoanEvent(payload); - // Then + + var result = TransactionHelper.parseLoanEvent(payload); + assertThat(result).isNotNull(); assertThat(result.getItemId()).isEqualTo(itemId); assertThat(result.getLoanStatus()).isEqualTo(expectedStatus); }