33import static org .assertj .core .api .Assertions .assertThat ;
44import static org .folio .search .domain .dto .ResourceEventType .CREATE ;
55import static org .folio .search .domain .dto .ResourceEventType .DELETE ;
6- import static org .folio .search .domain .dto .ResourceEventType .REINDEX ;
76import static org .folio .search .domain .dto .ResourceEventType .UPDATE ;
87import static org .folio .support .utils .TestUtils .mapOf ;
98import static org .folio .support .utils .TestUtils .randomId ;
@@ -57,14 +56,14 @@ void mapToProducerRecord_shouldMapInstanceCreateEvent() {
5756
5857 var consumerRecord = createConsumerRecord (INSTANCE_ID , resourceEvent , INSTANCE_TOPIC );
5958
60- var result = mapper .mapToProducerRecord (consumerRecord );
59+ var result = mapper .mapToProducerRecords (consumerRecord );
6160
6261 assertThat (result ).isNotNull ();
63- assertThat (result .key ()).isEqualTo (INSTANCE_ID );
64- assertThat (result .value ()).isNotNull ();
65- assertThat (result .value ().instanceId ()).isEqualTo (INSTANCE_ID );
66- assertThat (result .value ().tenant ()).isEqualTo (TENANT_ID );
67- assertThat (result .topic ()).isEqualTo (
62+ assertThat (result .getFirst (). key ()).isEqualTo (INSTANCE_ID );
63+ assertThat (result .getFirst (). value ()).isNotNull ();
64+ assertThat (result .getFirst (). value ().instanceId ()).isEqualTo (INSTANCE_ID );
65+ assertThat (result .getFirst (). value ().tenant ()).isEqualTo (TENANT_ID );
66+ assertThat (result .getFirst (). topic ()).isEqualTo (
6867 KafkaConfiguration .SearchTopic .INDEX_INSTANCE .fullTopicName (TENANT_ID ));
6968 }
7069
@@ -77,10 +76,10 @@ void mapToProducerRecord_shouldMapInstanceUpdateEvent() {
7776
7877 var consumerRecord = createConsumerRecord (INSTANCE_ID , resourceEvent , INSTANCE_TOPIC );
7978
80- var result = mapper .mapToProducerRecord (consumerRecord );
79+ var result = mapper .mapToProducerRecords (consumerRecord );
8180
82- assertThat (result .value ().instanceId ()).isEqualTo (INSTANCE_ID );
83- assertThat (result .value ().tenant ()).isEqualTo (TENANT_ID );
81+ assertThat (result .getFirst (). value ().instanceId ()).isEqualTo (INSTANCE_ID );
82+ assertThat (result .getFirst (). value ().tenant ()).isEqualTo (TENANT_ID );
8483 }
8584
8685 @ Test
@@ -91,42 +90,29 @@ void mapToProducerRecord_shouldMapInstanceDeleteEvent() {
9190
9291 var consumerRecord = createConsumerRecord (INSTANCE_ID , resourceEvent , INSTANCE_TOPIC );
9392
94- var result = mapper .mapToProducerRecord (consumerRecord );
93+ var result = mapper .mapToProducerRecords (consumerRecord );
9594
96- assertThat (result .value ().instanceId ()).isEqualTo (INSTANCE_ID );
97- assertThat (result .value ().tenant ()).isEqualTo (TENANT_ID );
95+ assertThat (result .getFirst (). value ().instanceId ()).isEqualTo (INSTANCE_ID );
96+ assertThat (result .getFirst (). value ().tenant ()).isEqualTo (TENANT_ID );
9897 }
9998
10099 @ Test
101- void mapToProducerRecord_shouldMapReindexEventUsingKey () {
102- var resourceEvent = resourceEvent (null , ResourceType .INSTANCE , REINDEX );
103- resourceEvent .tenant (TENANT_ID );
104-
105- var consumerRecord = createConsumerRecord (INSTANCE_ID , resourceEvent , INSTANCE_TOPIC );
106-
107- var result = mapper .mapToProducerRecord (consumerRecord );
108-
109- assertThat (result .value ().instanceId ()).isEqualTo (INSTANCE_ID );
110- assertThat (result .value ().tenant ()).isEqualTo (TENANT_ID );
111- }
112-
113- @ Test
114- void mapToProducerRecord_shouldExtractInstanceIdFromItemEvent () {
100+ void mapToProducerRecords_shouldExtractInstanceIdFromItemEvent () {
115101 var itemId = randomId ();
116102 var resourceEvent = resourceEvent (null , ResourceType .ITEM , CREATE ,
117103 mapOf ("id" , itemId , "instanceId" , INSTANCE_ID ), null );
118104 resourceEvent .tenant (TENANT_ID );
119105
120106 var consumerRecord = createConsumerRecord (itemId , resourceEvent , ITEM_TOPIC );
121107
122- var result = mapper .mapToProducerRecord (consumerRecord );
108+ var result = mapper .mapToProducerRecords (consumerRecord );
123109
124- assertThat (result .value ().instanceId ()).isEqualTo (INSTANCE_ID );
125- assertThat (result .value ().tenant ()).isEqualTo (TENANT_ID );
110+ assertThat (result .getFirst (). value ().instanceId ()).isEqualTo (INSTANCE_ID );
111+ assertThat (result .getFirst (). value ().tenant ()).isEqualTo (TENANT_ID );
126112 }
127113
128114 @ Test
129- void mapToProducerRecord_shouldExtractInstanceIdFromHoldingEvent () {
115+ void mapToProducerRecords_shouldExtractInstanceIdFromHoldingEvent () {
130116 var holdingId = randomId ();
131117 var holdingTopic = "folio.test-tenant.inventory.holding" ;
132118 var resourceEvent = resourceEvent (null , ResourceType .HOLDINGS , CREATE ,
@@ -135,14 +121,14 @@ void mapToProducerRecord_shouldExtractInstanceIdFromHoldingEvent() {
135121
136122 var consumerRecord = createConsumerRecord (holdingId , resourceEvent , holdingTopic );
137123
138- var result = mapper .mapToProducerRecord (consumerRecord );
124+ var result = mapper .mapToProducerRecords (consumerRecord );
139125
140- assertThat (result .value ().instanceId ()).isEqualTo (INSTANCE_ID );
141- assertThat (result .value ().tenant ()).isEqualTo (TENANT_ID );
126+ assertThat (result .getFirst (). value ().instanceId ()).isEqualTo (INSTANCE_ID );
127+ assertThat (result .getFirst (). value ().tenant ()).isEqualTo (TENANT_ID );
142128 }
143129
144130 @ Test
145- void mapToProducerRecord_shouldUseCentralTenantWhenAvailable () {
131+ void mapToProducerRecords_shouldUseCentralTenantWhenAvailable () {
146132 when (consortiumTenantService .getCentralTenant (TENANT_ID ))
147133 .thenReturn (Optional .of (CENTRAL_TENANT_ID ));
148134
@@ -152,14 +138,14 @@ void mapToProducerRecord_shouldUseCentralTenantWhenAvailable() {
152138
153139 var consumerRecord = createConsumerRecord (INSTANCE_ID , resourceEvent , INSTANCE_TOPIC );
154140
155- var result = mapper .mapToProducerRecord (consumerRecord );
141+ var result = mapper .mapToProducerRecords (consumerRecord );
156142
157- assertThat (result .value ().tenant ()).isEqualTo (CENTRAL_TENANT_ID );
158- assertThat (result .topic ()).contains (CENTRAL_TENANT_ID );
143+ assertThat (result .getFirst (). value ().tenant ()).isEqualTo (CENTRAL_TENANT_ID );
144+ assertThat (result .getFirst (). topic ()).contains (CENTRAL_TENANT_ID );
159145 }
160146
161147 @ Test
162- void mapToProducerRecord_shouldCopyHeadersToProducerRecord () {
148+ void mapToProducerRecord_shouldCopyHeadersToProducerRecords () {
163149 var resourceEvent = resourceEvent (null , ResourceType .INSTANCE , CREATE ,
164150 mapOf ("id" , INSTANCE_ID ), null );
165151 resourceEvent .tenant (TENANT_ID );
@@ -173,16 +159,16 @@ void mapToProducerRecord_shouldCopyHeadersToProducerRecord() {
173159 consumerRecord .headers ().add ("X-Custom-Header" , "custom-value" .getBytes (StandardCharsets .UTF_8 ));
174160 consumerRecord .headers ().add (XOkapiHeaders .URL , "http://okapi:9130" .getBytes (StandardCharsets .UTF_8 ));
175161
176- var result = mapper .mapToProducerRecord (consumerRecord );
162+ var result = mapper .mapToProducerRecords (consumerRecord );
177163
178- assertThat (result .headers ()).isNotNull ();
164+ assertThat (result .getFirst (). headers ()).isNotNull ();
179165 var headerKeys = new java .util .ArrayList <String >();
180- result .headers ().forEach (header -> headerKeys .add (header .key ()));
166+ result .getFirst (). headers ().forEach (header -> headerKeys .add (header .key ()));
181167 assertThat (headerKeys ).contains (XOkapiHeaders .URL );
182168 }
183169
184170 @ Test
185- void mapToProducerRecord_shouldUpdateTenantHeadersInProducerRecord () {
171+ void mapToProducerRecord_shouldUpdateTenantHeadersInProducerRecords () {
186172 var resourceEvent = resourceEvent (null , ResourceType .INSTANCE , CREATE ,
187173 mapOf ("id" , INSTANCE_ID ), null );
188174 resourceEvent .tenant (TENANT_ID );
@@ -193,10 +179,10 @@ void mapToProducerRecord_shouldUpdateTenantHeadersInProducerRecord() {
193179 consumerRecord .headers ().add (XOkapiHeaders .TENANT ,
194180 "old-tenant" .getBytes (StandardCharsets .UTF_8 ));
195181
196- var result = mapper .mapToProducerRecord (consumerRecord );
182+ var result = mapper .mapToProducerRecords (consumerRecord );
197183
198- var tenantIdHeader = result .headers ().lastHeader (FolioKafkaProperties .TENANT_ID );
199- var okapiTenantHeader = result .headers ().lastHeader (XOkapiHeaders .TENANT );
184+ var tenantIdHeader = result .getFirst (). headers ().lastHeader (FolioKafkaProperties .TENANT_ID );
185+ var okapiTenantHeader = result .getFirst (). headers ().lastHeader (XOkapiHeaders .TENANT );
200186
201187 assertThat (tenantIdHeader ).isNotNull ();
202188 assertThat (new String (tenantIdHeader .value (), StandardCharsets .UTF_8 )).isEqualTo (TENANT_ID );
@@ -206,23 +192,23 @@ void mapToProducerRecord_shouldUpdateTenantHeadersInProducerRecord() {
206192 }
207193
208194 @ Test
209- void mapToProducerRecord_shouldHandleNullPayload () {
195+ void mapToProducerRecords_shouldHandleNullPayload () {
210196 // For DELETE events or REINDEX, the ID comes from the key, not from payload
211197 var resourceEvent = resourceEvent (null , ResourceType .INSTANCE , DELETE , null , null );
212198 resourceEvent .tenant (TENANT_ID );
213199
214200 var consumerRecord = createConsumerRecord (INSTANCE_ID , resourceEvent , INSTANCE_TOPIC );
215201
216- var result = mapper .mapToProducerRecord (consumerRecord );
202+ var result = mapper .mapToProducerRecords (consumerRecord );
217203
218204 // When both new and old are null, extractInstanceId returns null for non-REINDEX non-instance topics
219205 // But for instance topics with DELETE, it should use the key
220- assertThat (result .value ().tenant ()).isEqualTo (TENANT_ID );
206+ assertThat (result .getFirst (). value ().tenant ()).isEqualTo (TENANT_ID );
221207 // The instance ID extraction logic depends on topic and event type
222208 }
223209
224210 @ Test
225- void mapToProducerRecord_shouldHandleEventWithoutInstanceId () {
211+ void mapToProducerRecords_shouldHandleEventWithoutInstanceId () {
226212 var boundWithId = randomId ();
227213 var boundWithTopic = "folio.test-tenant.inventory.bound-with" ;
228214 var resourceEvent = resourceEvent (null , ResourceType .INSTANCE , CREATE ,
@@ -231,23 +217,23 @@ void mapToProducerRecord_shouldHandleEventWithoutInstanceId() {
231217
232218 var consumerRecord = createConsumerRecord (boundWithId , resourceEvent , boundWithTopic );
233219
234- var result = mapper .mapToProducerRecord (consumerRecord );
220+ var result = mapper .mapToProducerRecords (consumerRecord );
235221
236222 // Should extract instanceId from payload
237- assertThat (result .value ().instanceId ()).isEqualTo (INSTANCE_ID );
223+ assertThat (result .getFirst (). value ().instanceId ()).isEqualTo (INSTANCE_ID );
238224 }
239225
240226 @ Test
241- void mapToProducerRecord_shouldGenerateCorrectTopicName () {
227+ void mapToProducerRecords_shouldGenerateCorrectTopicName () {
242228 var resourceEvent = resourceEvent (null , ResourceType .INSTANCE , CREATE ,
243229 mapOf ("id" , INSTANCE_ID ), null );
244230 resourceEvent .tenant (TENANT_ID );
245231
246232 var consumerRecord = createConsumerRecord (INSTANCE_ID , resourceEvent , INSTANCE_TOPIC );
247233
248- var result = mapper .mapToProducerRecord (consumerRecord );
234+ var result = mapper .mapToProducerRecords (consumerRecord );
249235
250- assertThat (result .topic ())
236+ assertThat (result .getFirst (). topic ())
251237 .isEqualTo (KafkaConfiguration .SearchTopic .INDEX_INSTANCE .fullTopicName (TENANT_ID ));
252238 }
253239
0 commit comments