Loading src/main/java/es/redmic/commandslib/usersettings/streams/SettingsEventStreams.java +3 −3 Original line number Diff line number Diff line Loading @@ -570,14 +570,14 @@ public class SettingsEventStreams extends BaseStreams { // Envía evento para actualizar la fecha de acceso de las settings copiada updateAccessedDateEvents.leftJoin(snapshotKTable, (updateAccessedDateEvent, snapshotEvent) -> getUpdateSettingsAccessedDateEvent( (updateAccessedDateEvent, snapshotEvent) -> getSaveSettingsByUpdateSettingsAccessedDateEvent( (UpdateSettingsAccessedDateEvent) updateAccessedDateEvent, (SettingsEvent) snapshotEvent)) .to(topic); } private Event getUpdateSettingsAccessedDateEvent(UpdateSettingsAccessedDateEvent updateAccessedDateEvent, SettingsEvent snapshotEvent) { private Event getSaveSettingsByUpdateSettingsAccessedDateEvent( UpdateSettingsAccessedDateEvent updateAccessedDateEvent, SettingsEvent snapshotEvent) { if (snapshotEvent == null) { // TODO: generar nueva excepción. Si es necesario, añadir argumentos Loading src/test/java/es/redmic/commandslib/usersettings/common/SettingsRestBase.java +111 −13 Original line number Diff line number Diff line package es.redmic.commandslib.usersettings.common; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.hasItem; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.Matchers.hasSize; import static org.junit.Assert.assertEquals; Loading Loading @@ -30,7 +32,6 @@ import org.springframework.http.MediaType; import org.springframework.kafka.annotation.KafkaHandler; import org.springframework.kafka.core.KafkaTemplate; import org.springframework.kafka.support.SendResult; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.util.concurrent.ListenableFuture; Loading @@ -44,6 +45,7 @@ import es.redmic.usersettingslib.dto.PersistenceDTO; import es.redmic.usersettingslib.dto.SelectionDTO; import es.redmic.usersettingslib.events.clearselection.ClearSelectionConfirmedEvent; import es.redmic.usersettingslib.events.clearselection.ClearSelectionEvent; import es.redmic.usersettingslib.events.common.SettingsEvent; import es.redmic.usersettingslib.events.delete.DeleteSettingsConfirmedEvent; import es.redmic.usersettingslib.events.delete.DeleteSettingsEvent; import es.redmic.usersettingslib.events.deselect.DeselectConfirmedEvent; Loading @@ -54,6 +56,7 @@ import es.redmic.usersettingslib.events.save.SettingsSavedEvent; import es.redmic.usersettingslib.events.select.SelectConfirmedEvent; import es.redmic.usersettingslib.events.select.SelectEvent; import es.redmic.usersettingslib.events.select.SelectedEvent; import es.redmic.usersettingslib.events.update.UpdateSettingsAccessedDateEvent; import es.redmic.usersettingslib.unit.utils.SettingsDataUtil; /*- Loading Loading @@ -181,7 +184,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { SelectedEvent evt = SettingsDataUtil.getSelectedEvent(CODE); evt.getSettings().setName(null); evt.getSettings().setService(serviceName); evt.getSettings().setUserId("13"); evt.getSettings().setUserId(userId); kafkaTemplate.send(settings_topic, evt.getAggregateId(), evt); Loading @@ -195,7 +198,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { String id = SettingsDataUtil.PREFIX + CODE; MvcResult result = this.mockMvc this.mockMvc .perform(put(SETTINGS_PATH + "/select/" + id) .header("Authorization", "Bearer " + getTokenOAGUser()) .content(mapper.writeValueAsString(selectionDTO)) Loading @@ -209,9 +212,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { .andExpect(jsonPath("$.body.userId", is(userId))) .andExpect(jsonPath("$.body.selection", notNullValue())) .andExpect(jsonPath("$.body.selection", hasSize(1))) .andExpect(jsonPath("$.body.selection", hasItem("1"))).andReturn(); System.out.println("select " + result.getResponse().getContentAsString()); .andExpect(jsonPath("$.body.selection", hasItem("1"))); // @formatter:on Loading @@ -232,7 +233,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { SelectedEvent evt = SettingsDataUtil.getSelectedEvent(CODE); evt.getSettings().setName(null); evt.getSettings().setService(serviceName); evt.getSettings().setUserId("13"); evt.getSettings().setUserId(userId); kafkaTemplate.send(settings_topic, evt.getAggregateId(), evt); Loading Loading @@ -280,7 +281,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { SelectedEvent evt = SettingsDataUtil.getSelectedEvent(CODE); evt.getSettings().setName(null); evt.getSettings().setService(serviceName); evt.getSettings().setUserId("13"); evt.getSettings().setUserId(userId); kafkaTemplate.send(settings_topic, evt.getAggregateId(), evt); Loading Loading @@ -327,7 +328,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { SelectedEvent evt = SettingsDataUtil.getSelectedEvent(UUID.randomUUID().toString()); evt.getSettings().setName(null); evt.getSettings().setService(serviceName); evt.getSettings().setUserId("13"); evt.getSettings().setUserId(userId); kafkaTemplate.send(settings_topic, evt.getAggregateId(), evt); Loading Loading @@ -370,7 +371,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { SelectedEvent selectedEvt = SettingsDataUtil.getSelectedEvent(UUID.randomUUID().toString()); selectedEvt.getSettings().setName(null); selectedEvt.getSettings().setService(serviceName); selectedEvt.getSettings().setUserId("13"); selectedEvt.getSettings().setUserId(userId); kafkaTemplate.send(settings_topic, selectedEvt.getAggregateId(), selectedEvt); Loading @@ -378,7 +379,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { SettingsSavedEvent evt = SettingsDataUtil.getSettingsSavedEvent(CODE); evt.getSettings().setService(serviceName); evt.getSettings().setUserId("13"); evt.getSettings().setUserId(userId); kafkaTemplate.send(settings_topic, evt.getAggregateId(), evt); Loading @@ -405,7 +406,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { .andExpect(jsonPath("$.body.userId", is(userId))) .andExpect(jsonPath("$.body.selection", notNullValue())) .andExpect(jsonPath("$.body.selection", hasSize(1))) .andExpect(jsonPath("$.body.selection", hasItem("1"))).andReturn(); .andExpect(jsonPath("$.body.selection", hasItem("1"))); // @formatter:on Loading @@ -426,7 +427,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { SettingsSavedEvent evt = SettingsDataUtil.getSettingsSavedEvent(CODE); evt.getSettings().setService(serviceName); evt.getSettings().setUserId("13"); evt.getSettings().setUserId(userId); kafkaTemplate.send(settings_topic, evt.getAggregateId(), evt); Loading Loading @@ -454,6 +455,97 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { assertEquals(expectedEvent.getVersion(), event.getVersion()); } @Test public void cloneRequest_ReturnSavedItem_IfWasSuccess() throws Exception { String otherUserId = "15"; String CODE = UUID.randomUUID().toString(); SettingsSavedEvent settingsSavedEvent = SettingsDataUtil.getSettingsSavedEvent(CODE); settingsSavedEvent.getSettings().setName(null); settingsSavedEvent.getSettings().setService(serviceName); settingsSavedEvent.getSettings().setUserId(otherUserId); settingsSavedEvent.setUserId(otherUserId); kafkaTemplate.send(settings_topic, settingsSavedEvent.getAggregateId(), settingsSavedEvent); when(settingsStateStore.get(settingsSavedEvent.getAggregateId())).thenReturn(settingsSavedEvent); PersistenceDTO persistenceDTO = SettingsDataUtil.getPersistenceDTO(); persistenceDTO.setUserId(null); persistenceDTO.setSettingsId(settingsSavedEvent.getAggregateId()); // @formatter:off String id = SettingsDataUtil.PREFIX + CODE; this.mockMvc .perform(put(SETTINGS_PATH + "/clone/" + id) .header("Authorization", "Bearer " + getTokenOAGUser()) .content(mapper.writeValueAsString(persistenceDTO)) .contentType(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(jsonPath("$.success", is(true))) .andExpect(jsonPath("$.body", notNullValue())) .andExpect(jsonPath("$.body.id", is(not(equalTo(id))))) .andExpect(jsonPath("$.body.service", is(serviceName))) .andExpect(jsonPath("$.body.userId", is(userId))) .andExpect(jsonPath("$.body.selection", notNullValue())) .andExpect(jsonPath("$.body.selection", hasSize(1))) .andExpect(jsonPath("$.body.selection", hasItem("1"))); // @formatter:on SaveSettingsEvent expectedEvent = SettingsDataUtil.getSaveSettingsEvent(CODE); Event firstEvent = (Event) blockingQueue.poll(50, TimeUnit.SECONDS); checkCloneEvents(firstEvent, settingsSavedEvent, expectedEvent); Event secondEvent = (Event) blockingQueue.poll(50, TimeUnit.SECONDS); checkCloneEvents(secondEvent, settingsSavedEvent, expectedEvent); Event thirdEvent = (Event) blockingQueue.poll(50, TimeUnit.SECONDS); checkCloneEvents(thirdEvent, settingsSavedEvent, expectedEvent); } private void checkCloneEvents(Event event, SettingsSavedEvent settingsSavedEvent, SaveSettingsEvent expectedEvent) { assertNotNull(event); if ((event instanceof SaveSettingsEvent) && (!event.getAggregateId().equals(settingsSavedEvent.getAggregateId()))) { logger.info("Comprobando evento SaveSettingsEvent por guardado del clonado"); assertEquals(expectedEvent.getType(), event.getType()); assertEquals(expectedEvent.getVersion(), event.getVersion()); assertEquals(serviceName, ((SettingsEvent) event).getSettings().getService()); assertEquals(userId, ((SettingsEvent) event).getSettings().getUserId()); } else if ((event instanceof SaveSettingsEvent) && (event.getAggregateId().equals(settingsSavedEvent.getAggregateId()))) { logger.info("Comprobando evento SaveSettingsEvent por actualización de fecha de acceso"); assertEquals(expectedEvent.getType(), event.getType()); assertEquals((Integer) 2, event.getVersion()); assertEquals(serviceName, ((SettingsEvent) event).getSettings().getService()); assertEquals(settingsSavedEvent.getUserId(), ((SettingsEvent) event).getSettings().getUserId()); } else if (event instanceof UpdateSettingsAccessedDateEvent) { logger.info("Comprobando evento UpdateSettingsAccessedDateEvent por acceso a settings"); assertEquals(settingsSavedEvent.getAggregateId(), event.getAggregateId()); assertEquals(settingsSavedEvent.getUserId(), event.getUserId()); } } @KafkaHandler public void select(SelectEvent selectEvent) { Loading Loading @@ -517,6 +609,12 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { blockingQueue.offer(deleteSettingsEvent); } @KafkaHandler private void listen(UpdateSettingsAccessedDateEvent updateSettingsAccessedDateEvent) { blockingQueue.offer(updateSettingsAccessedDateEvent); } @KafkaHandler(isDefault = true) public void defaultEvent(Object def) { Loading Loading
src/main/java/es/redmic/commandslib/usersettings/streams/SettingsEventStreams.java +3 −3 Original line number Diff line number Diff line Loading @@ -570,14 +570,14 @@ public class SettingsEventStreams extends BaseStreams { // Envía evento para actualizar la fecha de acceso de las settings copiada updateAccessedDateEvents.leftJoin(snapshotKTable, (updateAccessedDateEvent, snapshotEvent) -> getUpdateSettingsAccessedDateEvent( (updateAccessedDateEvent, snapshotEvent) -> getSaveSettingsByUpdateSettingsAccessedDateEvent( (UpdateSettingsAccessedDateEvent) updateAccessedDateEvent, (SettingsEvent) snapshotEvent)) .to(topic); } private Event getUpdateSettingsAccessedDateEvent(UpdateSettingsAccessedDateEvent updateAccessedDateEvent, SettingsEvent snapshotEvent) { private Event getSaveSettingsByUpdateSettingsAccessedDateEvent( UpdateSettingsAccessedDateEvent updateAccessedDateEvent, SettingsEvent snapshotEvent) { if (snapshotEvent == null) { // TODO: generar nueva excepción. Si es necesario, añadir argumentos Loading
src/test/java/es/redmic/commandslib/usersettings/common/SettingsRestBase.java +111 −13 Original line number Diff line number Diff line package es.redmic.commandslib.usersettings.common; import static org.hamcrest.CoreMatchers.equalTo; import static org.hamcrest.CoreMatchers.hasItem; import static org.hamcrest.CoreMatchers.is; import static org.hamcrest.CoreMatchers.not; import static org.hamcrest.CoreMatchers.notNullValue; import static org.hamcrest.Matchers.hasSize; import static org.junit.Assert.assertEquals; Loading Loading @@ -30,7 +32,6 @@ import org.springframework.http.MediaType; import org.springframework.kafka.annotation.KafkaHandler; import org.springframework.kafka.core.KafkaTemplate; import org.springframework.kafka.support.SendResult; import org.springframework.test.web.servlet.MvcResult; import org.springframework.test.web.servlet.request.MockMvcRequestBuilders; import org.springframework.test.web.servlet.setup.MockMvcBuilders; import org.springframework.util.concurrent.ListenableFuture; Loading @@ -44,6 +45,7 @@ import es.redmic.usersettingslib.dto.PersistenceDTO; import es.redmic.usersettingslib.dto.SelectionDTO; import es.redmic.usersettingslib.events.clearselection.ClearSelectionConfirmedEvent; import es.redmic.usersettingslib.events.clearselection.ClearSelectionEvent; import es.redmic.usersettingslib.events.common.SettingsEvent; import es.redmic.usersettingslib.events.delete.DeleteSettingsConfirmedEvent; import es.redmic.usersettingslib.events.delete.DeleteSettingsEvent; import es.redmic.usersettingslib.events.deselect.DeselectConfirmedEvent; Loading @@ -54,6 +56,7 @@ import es.redmic.usersettingslib.events.save.SettingsSavedEvent; import es.redmic.usersettingslib.events.select.SelectConfirmedEvent; import es.redmic.usersettingslib.events.select.SelectEvent; import es.redmic.usersettingslib.events.select.SelectedEvent; import es.redmic.usersettingslib.events.update.UpdateSettingsAccessedDateEvent; import es.redmic.usersettingslib.unit.utils.SettingsDataUtil; /*- Loading Loading @@ -181,7 +184,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { SelectedEvent evt = SettingsDataUtil.getSelectedEvent(CODE); evt.getSettings().setName(null); evt.getSettings().setService(serviceName); evt.getSettings().setUserId("13"); evt.getSettings().setUserId(userId); kafkaTemplate.send(settings_topic, evt.getAggregateId(), evt); Loading @@ -195,7 +198,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { String id = SettingsDataUtil.PREFIX + CODE; MvcResult result = this.mockMvc this.mockMvc .perform(put(SETTINGS_PATH + "/select/" + id) .header("Authorization", "Bearer " + getTokenOAGUser()) .content(mapper.writeValueAsString(selectionDTO)) Loading @@ -209,9 +212,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { .andExpect(jsonPath("$.body.userId", is(userId))) .andExpect(jsonPath("$.body.selection", notNullValue())) .andExpect(jsonPath("$.body.selection", hasSize(1))) .andExpect(jsonPath("$.body.selection", hasItem("1"))).andReturn(); System.out.println("select " + result.getResponse().getContentAsString()); .andExpect(jsonPath("$.body.selection", hasItem("1"))); // @formatter:on Loading @@ -232,7 +233,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { SelectedEvent evt = SettingsDataUtil.getSelectedEvent(CODE); evt.getSettings().setName(null); evt.getSettings().setService(serviceName); evt.getSettings().setUserId("13"); evt.getSettings().setUserId(userId); kafkaTemplate.send(settings_topic, evt.getAggregateId(), evt); Loading Loading @@ -280,7 +281,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { SelectedEvent evt = SettingsDataUtil.getSelectedEvent(CODE); evt.getSettings().setName(null); evt.getSettings().setService(serviceName); evt.getSettings().setUserId("13"); evt.getSettings().setUserId(userId); kafkaTemplate.send(settings_topic, evt.getAggregateId(), evt); Loading Loading @@ -327,7 +328,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { SelectedEvent evt = SettingsDataUtil.getSelectedEvent(UUID.randomUUID().toString()); evt.getSettings().setName(null); evt.getSettings().setService(serviceName); evt.getSettings().setUserId("13"); evt.getSettings().setUserId(userId); kafkaTemplate.send(settings_topic, evt.getAggregateId(), evt); Loading Loading @@ -370,7 +371,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { SelectedEvent selectedEvt = SettingsDataUtil.getSelectedEvent(UUID.randomUUID().toString()); selectedEvt.getSettings().setName(null); selectedEvt.getSettings().setService(serviceName); selectedEvt.getSettings().setUserId("13"); selectedEvt.getSettings().setUserId(userId); kafkaTemplate.send(settings_topic, selectedEvt.getAggregateId(), selectedEvt); Loading @@ -378,7 +379,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { SettingsSavedEvent evt = SettingsDataUtil.getSettingsSavedEvent(CODE); evt.getSettings().setService(serviceName); evt.getSettings().setUserId("13"); evt.getSettings().setUserId(userId); kafkaTemplate.send(settings_topic, evt.getAggregateId(), evt); Loading @@ -405,7 +406,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { .andExpect(jsonPath("$.body.userId", is(userId))) .andExpect(jsonPath("$.body.selection", notNullValue())) .andExpect(jsonPath("$.body.selection", hasSize(1))) .andExpect(jsonPath("$.body.selection", hasItem("1"))).andReturn(); .andExpect(jsonPath("$.body.selection", hasItem("1"))); // @formatter:on Loading @@ -426,7 +427,7 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { SettingsSavedEvent evt = SettingsDataUtil.getSettingsSavedEvent(CODE); evt.getSettings().setService(serviceName); evt.getSettings().setUserId("13"); evt.getSettings().setUserId(userId); kafkaTemplate.send(settings_topic, evt.getAggregateId(), evt); Loading Loading @@ -454,6 +455,97 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { assertEquals(expectedEvent.getVersion(), event.getVersion()); } @Test public void cloneRequest_ReturnSavedItem_IfWasSuccess() throws Exception { String otherUserId = "15"; String CODE = UUID.randomUUID().toString(); SettingsSavedEvent settingsSavedEvent = SettingsDataUtil.getSettingsSavedEvent(CODE); settingsSavedEvent.getSettings().setName(null); settingsSavedEvent.getSettings().setService(serviceName); settingsSavedEvent.getSettings().setUserId(otherUserId); settingsSavedEvent.setUserId(otherUserId); kafkaTemplate.send(settings_topic, settingsSavedEvent.getAggregateId(), settingsSavedEvent); when(settingsStateStore.get(settingsSavedEvent.getAggregateId())).thenReturn(settingsSavedEvent); PersistenceDTO persistenceDTO = SettingsDataUtil.getPersistenceDTO(); persistenceDTO.setUserId(null); persistenceDTO.setSettingsId(settingsSavedEvent.getAggregateId()); // @formatter:off String id = SettingsDataUtil.PREFIX + CODE; this.mockMvc .perform(put(SETTINGS_PATH + "/clone/" + id) .header("Authorization", "Bearer " + getTokenOAGUser()) .content(mapper.writeValueAsString(persistenceDTO)) .contentType(MediaType.APPLICATION_JSON) .accept(MediaType.APPLICATION_JSON)) .andExpect(status().isOk()) .andExpect(jsonPath("$.success", is(true))) .andExpect(jsonPath("$.body", notNullValue())) .andExpect(jsonPath("$.body.id", is(not(equalTo(id))))) .andExpect(jsonPath("$.body.service", is(serviceName))) .andExpect(jsonPath("$.body.userId", is(userId))) .andExpect(jsonPath("$.body.selection", notNullValue())) .andExpect(jsonPath("$.body.selection", hasSize(1))) .andExpect(jsonPath("$.body.selection", hasItem("1"))); // @formatter:on SaveSettingsEvent expectedEvent = SettingsDataUtil.getSaveSettingsEvent(CODE); Event firstEvent = (Event) blockingQueue.poll(50, TimeUnit.SECONDS); checkCloneEvents(firstEvent, settingsSavedEvent, expectedEvent); Event secondEvent = (Event) blockingQueue.poll(50, TimeUnit.SECONDS); checkCloneEvents(secondEvent, settingsSavedEvent, expectedEvent); Event thirdEvent = (Event) blockingQueue.poll(50, TimeUnit.SECONDS); checkCloneEvents(thirdEvent, settingsSavedEvent, expectedEvent); } private void checkCloneEvents(Event event, SettingsSavedEvent settingsSavedEvent, SaveSettingsEvent expectedEvent) { assertNotNull(event); if ((event instanceof SaveSettingsEvent) && (!event.getAggregateId().equals(settingsSavedEvent.getAggregateId()))) { logger.info("Comprobando evento SaveSettingsEvent por guardado del clonado"); assertEquals(expectedEvent.getType(), event.getType()); assertEquals(expectedEvent.getVersion(), event.getVersion()); assertEquals(serviceName, ((SettingsEvent) event).getSettings().getService()); assertEquals(userId, ((SettingsEvent) event).getSettings().getUserId()); } else if ((event instanceof SaveSettingsEvent) && (event.getAggregateId().equals(settingsSavedEvent.getAggregateId()))) { logger.info("Comprobando evento SaveSettingsEvent por actualización de fecha de acceso"); assertEquals(expectedEvent.getType(), event.getType()); assertEquals((Integer) 2, event.getVersion()); assertEquals(serviceName, ((SettingsEvent) event).getSettings().getService()); assertEquals(settingsSavedEvent.getUserId(), ((SettingsEvent) event).getSettings().getUserId()); } else if (event instanceof UpdateSettingsAccessedDateEvent) { logger.info("Comprobando evento UpdateSettingsAccessedDateEvent por acceso a settings"); assertEquals(settingsSavedEvent.getAggregateId(), event.getAggregateId()); assertEquals(settingsSavedEvent.getUserId(), event.getUserId()); } } @KafkaHandler public void select(SelectEvent selectEvent) { Loading Loading @@ -517,6 +609,12 @@ public class SettingsRestBase extends DocumentationCommandBaseTest { blockingQueue.offer(deleteSettingsEvent); } @KafkaHandler private void listen(UpdateSettingsAccessedDateEvent updateSettingsAccessedDateEvent) { blockingQueue.offer(updateSettingsAccessedDateEvent); } @KafkaHandler(isDefault = true) public void defaultEvent(Object def) { Loading