Commit 3546627e authored by Noel Alonso's avatar Noel Alonso
Browse files

Añade posibilidad de seleccionar item clonado

Añade test
parent 451a59da
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -154,17 +154,18 @@ public class SelectionAggregate extends Aggregate {
		String eventType = event.getType();

		switch (eventType) {
		case "SAVED":
		case "SELECTED":
		case "DESELECTED":
		case "SELECTION_CLEARED":
			logger.debug("Selección modificada");
			apply((SettingsEvent) event);
			break;
		// CANCELLED
		case "SAVE_CANCELLED":
		case "DELETE_CANCELLED":
		case "SELECT_CANCELLED":
		case "DESELECT_CANCELLED":
		case "CLEAR_SELECTION_CANCELLED":
			logger.debug("Compensación por selección fallida");
			apply((SettingsCancelledEvent) event);
			break;
		default:
+41 −0
Original line number Diff line number Diff line
@@ -144,6 +144,47 @@ public class SettingsCommandHandlerBase extends KafkaBaseIntegrationTest {
		assertNull(settings.getName());
	}

	// Envía un evento select para una nueva selección clonada y debe provocar un
	// evento
	// Select con settings dentro y la nueva selección
	@Test
	public void partialSelectEventInCloneSelection_SendSelectEventWithNewSelection_IfReceivesSuccess()
			throws Exception {

		// Envía select para meterlo en el stream
		SettingsSavedEvent savedEvent = SettingsDataUtil.getSettingsSavedEvent(code + "111");
		savedEvent.getSettings().setName(null);
		kafkaTemplate.send(settings_topic, savedEvent.getAggregateId(), savedEvent);
		blockingQueue.poll(20, TimeUnit.SECONDS);

		Thread.sleep(1000);

		PartialSelectEvent partialSelectEvent = SettingsDataUtil.getPartialSelectEvent(code + "111");
		partialSelectEvent.getSelection().getSelection().clear();
		partialSelectEvent.getSelection().getSelection().add("2");
		kafkaTemplate.send(settings_topic, partialSelectEvent.getAggregateId(), partialSelectEvent);

		Event select = (Event) blockingQueue.poll(120, TimeUnit.SECONDS);

		assertNotNull(select);
		assertEquals(SettingsEventTypes.SELECT, select.getType());

		SelectionDTO selectionExpected = partialSelectEvent.getSelection();
		SettingsDTO settings = ((SettingsEvent) select).getSettings();

		assertNotNull(settings.getService());
		assertEquals(selectionExpected.getService(), settings.getService());

		List<String> selection = savedEvent.getSettings().getSelection();
		selection.addAll(selectionExpected.getSelection());

		assertEquals(selection.size(), settings.getSelection().size());
		selection.removeAll(settings.getSelection());
		assertEquals(0, selection.size());
		assertFalse(settings.getShared());
		assertNull(settings.getName());
	}

	// Envía un evento parcial para una selección existente y debe provocar un
	// evento Select con settings dentro y la unión de la nueva selección con la que
	// ya existía