Commit ede22508 authored by Noel Alonso's avatar Noel Alonso
Browse files

Añade método en la factoría para eventos fail

De esta forma se puede crear dinámicamente el evento fail que
corresponde con el que se debe compensar

Añade tests
parent 544c0d59
Loading
Loading
Loading
Loading
+34 −0
Original line number Diff line number Diff line
@@ -139,6 +139,40 @@ public class SettingsEventFactory {
		throw new InternalException(ExceptionType.INTERNAL_EXCEPTION);
	}

	public static Event getEvent(SettingsRollbackEvent source, String type) {

		EventError failedEvent = null;

		if (type.equals(SettingsEventTypes.SELECT_FAILED)) {
			failedEvent = new SelectFailedEvent().buildFrom(source);
		}

		if (type.equals(SettingsEventTypes.DESELECT_FAILED)) {
			failedEvent = new DeselectFailedEvent().buildFrom(source);
		}

		if (type.equals(SettingsEventTypes.CLEAR_SELECTION_FAILED)) {
			failedEvent = new ClearSelectionFailedEvent().buildFrom(source);
		}

		if (type.equals(SettingsEventTypes.SAVE_FAILED)) {
			failedEvent = new SaveSettingsFailedEvent().buildFrom(source);
		}

		if (type.equals(SettingsEventTypes.DELETE_FAILED)) {
			failedEvent = new DeleteSettingsFailedEvent().buildFrom(source);
		}

		if (failedEvent != null) {
			failedEvent.setExceptionType("unknown");
			return failedEvent;

		} else {
			logger.error("Tipo de evento no soportado");
			throw new InternalException(ExceptionType.INTERNAL_EXCEPTION);
		}
	}

	public static Event getEvent(Event source, String type, SettingsDTO settings) {

		if (type.equals(SettingsEventTypes.ROLLBACK)) {
+75 −1
Original line number Diff line number Diff line
@@ -3,6 +3,8 @@ package es.redmic.usersettingslib.unit.events;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;

import java.util.UUID;

import org.junit.Test;

import es.redmic.brokerlib.avro.common.Event;
@@ -523,7 +525,7 @@ public class SettingsEventFactoryTest extends AvroBaseTest {
	////////////////////

	@Test
	public void GetEvent_ReturnCategoryRollbackEvent_IfTypeIsRollback() {
	public void GetEvent_ReturnSettingsRollbackEvent_IfTypeIsRollback() {

		PrepareRollbackEvent source = SettingsDataUtil.getPrepareRollbackEvent();

@@ -537,6 +539,78 @@ public class SettingsEventFactoryTest extends AvroBaseTest {
		assertNotNull(event.getLastSnapshotItem());
	}

	// ROLLBACK

	@Test
	public void GetEvent_ReturnSelectFailedEvent_IfRollbackFailEventTypeIsSelect() {

		SettingsRollbackEvent source = SettingsDataUtil.getSettingsRollbackEvent(UUID.randomUUID().toString(),
				SettingsEventTypes.SELECT);

		SelectFailedEvent event = (SelectFailedEvent) SettingsEventFactory.getEvent(source,
				SettingsEventTypes.getEventFailedTypeByActionType(source.getFailEventType()));

		assertEquals(SettingsEventTypes.SELECT_FAILED, event.getType());

		checkMetadataFields(source, event);
	}

	@Test
	public void GetEvent_ReturnDeselectFailedEvent_IfRollbackFailEventTypeIsDeselect() {

		SettingsRollbackEvent source = SettingsDataUtil.getSettingsRollbackEvent(UUID.randomUUID().toString(),
				SettingsEventTypes.DESELECT);

		DeselectFailedEvent event = (DeselectFailedEvent) SettingsEventFactory.getEvent(source,
				SettingsEventTypes.getEventFailedTypeByActionType(source.getFailEventType()));

		assertEquals(SettingsEventTypes.DESELECT_FAILED, event.getType());

		checkMetadataFields(source, event);
	}

	@Test
	public void GetEvent_ReturnClearSelectionFailedEvent_IfRollbackFailEventTypeIsClearSelection() {

		SettingsRollbackEvent source = SettingsDataUtil.getSettingsRollbackEvent(UUID.randomUUID().toString(),
				SettingsEventTypes.CLEAR_SELECTION);

		ClearSelectionFailedEvent event = (ClearSelectionFailedEvent) SettingsEventFactory.getEvent(source,
				SettingsEventTypes.getEventFailedTypeByActionType(source.getFailEventType()));

		assertEquals(SettingsEventTypes.CLEAR_SELECTION_FAILED, event.getType());

		checkMetadataFields(source, event);
	}

	@Test
	public void GetEvent_ReturnSaveSettingsFailedEvent_IfRollbackFailEventTypeIsSaveSettings() {

		SettingsRollbackEvent source = SettingsDataUtil.getSettingsRollbackEvent(UUID.randomUUID().toString(),
				SettingsEventTypes.SAVE);

		SaveSettingsFailedEvent event = (SaveSettingsFailedEvent) SettingsEventFactory.getEvent(source,
				SettingsEventTypes.getEventFailedTypeByActionType(source.getFailEventType()));

		assertEquals(SettingsEventTypes.SAVE_FAILED, event.getType());

		checkMetadataFields(source, event);
	}

	@Test
	public void GetEvent_ReturnDeleteSettingsFailedEvent_IfRollbackFailEventTypeIsDeleteSettings() {

		SettingsRollbackEvent source = SettingsDataUtil.getSettingsRollbackEvent(UUID.randomUUID().toString(),
				SettingsEventTypes.DELETE);

		DeleteSettingsFailedEvent event = (DeleteSettingsFailedEvent) SettingsEventFactory.getEvent(source,
				SettingsEventTypes.getEventFailedTypeByActionType(source.getFailEventType()));

		assertEquals(SettingsEventTypes.DELETE_FAILED, event.getType());

		checkMetadataFields(source, event);
	}

	////////////////////

	private void checkMetadataFields(Event source, Event evt) {
+10 −0
Original line number Diff line number Diff line
@@ -545,6 +545,16 @@ public abstract class SettingsDataUtil {
		return event;
	}

	public static SettingsRollbackEvent getSettingsRollbackEvent(String code, String failEventType) {

		SettingsRollbackEvent event = new SettingsRollbackEvent().buildFrom(getSaveSettingsEvent(code));

		event.setFailEventType(failEventType);
		event.setLastSnapshotItem(getSettingsDTO(code));

		return event;
	}

	public static SelectionDTO getSelectionDTO() {
		return getSelectionDTO(CODE);
	}