Loading src/automation/src/test/java/eu/teraflow/automation/AutomationFunctionalServiceTest.java +21 −20 Original line number Diff line number Diff line Loading @@ -22,8 +22,11 @@ import automation.Automation; import context.ContextOuterClass; import eu.teraflow.automation.context.ContextGateway; import eu.teraflow.automation.device.DeviceGateway; import eu.teraflow.automation.device.model.*; import eu.teraflow.automation.device.model.ConfigActionEnum; import eu.teraflow.automation.device.model.ConfigRule; import eu.teraflow.automation.device.model.Device; import eu.teraflow.automation.device.model.DeviceConfig; import eu.teraflow.automation.device.model.DeviceOperationalStatus; import io.quarkus.test.junit.QuarkusTest; import io.quarkus.test.junit.mockito.InjectMock; import io.smallrye.mutiny.Uni; Loading @@ -37,7 +40,7 @@ import org.junit.jupiter.api.Test; import org.mockito.Mockito; @QuarkusTest public class AutomationFunctionalServiceTest { class AutomationFunctionalServiceTest { private static final Logger LOGGER = Logger.getLogger(AutomationFunctionalServiceTest.class); @Inject AutomationService automationService; Loading Loading @@ -97,8 +100,7 @@ public class AutomationFunctionalServiceTest { deviceConfig -> { LOGGER.infof("Received response %s", deviceConfig); assertThat(deviceConfig.getDeviceOperationalStatus().toString()) .isEqualTo(device.getDeviceOperationalStatus().toString()); assertThat(deviceConfig).hasToString(device.getDeviceOperationalStatus().toString()); assertThat(deviceConfig.getDeviceConfig().toString()).isNotNull(); Loading Loading @@ -163,8 +165,7 @@ public class AutomationFunctionalServiceTest { deviceConfig -> { LOGGER.infof("Received response %s", deviceConfig); assertThat(deviceConfig.getDeviceOperationalStatus().toString()) .isEqualTo(device.getDeviceOperationalStatus().toString()); assertThat(deviceConfig).hasToString(device.getDeviceOperationalStatus().toString()); assertThat(deviceConfig.getDeviceConfig().toString()).isNotNull(); Loading src/automation/src/test/java/eu/teraflow/automation/ContextSubscriberTest.java 0 → 100644 +199 −0 Original line number Diff line number Diff line package eu.teraflow.automation; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import automation.Automation; import context.ContextOuterClass; import eu.teraflow.automation.context.ContextGateway; import eu.teraflow.automation.context.model.Event; import eu.teraflow.automation.context.model.EventTypeEnum; import eu.teraflow.automation.device.model.DeviceEvent; import io.quarkus.runtime.StartupEvent; import io.quarkus.test.junit.QuarkusTest; import io.quarkus.test.junit.mockito.InjectMock; import io.smallrye.mutiny.Multi; import java.util.UUID; import javax.inject.Inject; import org.junit.jupiter.api.Test; import org.mockito.Mockito; @QuarkusTest class ContextSubscriberTest { private static final String UUID_FOR_DEVICE_ROLE_ID = UUID.fromString("0f14d0ab-9608-7862-a9e4-5ed26688389b").toString(); private static final String UUID_FOR_DEVICE_ID = UUID.fromString("9f14d0ab-9608-7862-a9e4-5ed26688389c").toString(); @Inject ContextSubscriber contextSubscriber; @InjectMock ContextGateway contextGateway; @InjectMock AutomationService automationService; @InjectMock AutomationConfiguration automationConfiguration; @Test void shouldCallAddDeviceUponCreateEvent() { final var uuidForDeviceRoleId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ROLE_ID).build(); final var uuidForDeviceId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ID).build(); final var outDeviceId = ContextOuterClass.DeviceId.newBuilder().setDeviceUuid(uuidForDeviceId).build(); final var outDeviceRoleId = Automation.DeviceRoleId.newBuilder() .setDevRoleId(uuidForDeviceRoleId) .setDevId(outDeviceId) .build(); String deviceId = outDeviceRoleId.getDevId().toString(); Event event = new Event(3.4, EventTypeEnum.CREATE); DeviceEvent deviceEvent = new DeviceEvent(deviceId, event); final var deviceEventsMulti = Multi.createFrom().item(deviceEvent); Mockito.when(contextGateway.getDeviceEvents()).thenReturn(deviceEventsMulti); contextSubscriber.listenForDeviceEvents(); verify(automationService, times(1)).addDevice(deviceId); } @Test void shouldNotCallAddDeviceUponUpdateEvent() { final var uuidForDeviceRoleId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ROLE_ID).build(); final var uuidForDeviceId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ID).build(); final var outDeviceId = ContextOuterClass.DeviceId.newBuilder().setDeviceUuid(uuidForDeviceId).build(); final var outDeviceRoleId = Automation.DeviceRoleId.newBuilder() .setDevRoleId(uuidForDeviceRoleId) .setDevId(outDeviceId) .build(); String deviceId = outDeviceRoleId.getDevId().toString(); Event event = new Event(3.4, EventTypeEnum.UPDATE); DeviceEvent deviceEvent = new DeviceEvent(deviceId, event); final var deviceEventsMulti = Multi.createFrom().item(deviceEvent); Mockito.when(contextGateway.getDeviceEvents()).thenReturn(deviceEventsMulti); contextSubscriber.listenForDeviceEvents(); verify(automationService, times(0)).addDevice(deviceId); } @Test void shouldNotCallAddDeviceUponRemoveEvent() { final var uuidForDeviceRoleId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ROLE_ID).build(); final var uuidForDeviceId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ID).build(); final var outDeviceId = ContextOuterClass.DeviceId.newBuilder().setDeviceUuid(uuidForDeviceId).build(); final var outDeviceRoleId = Automation.DeviceRoleId.newBuilder() .setDevRoleId(uuidForDeviceRoleId) .setDevId(outDeviceId) .build(); String deviceId = outDeviceRoleId.getDevId().toString(); Event event = new Event(3.4, EventTypeEnum.REMOVE); DeviceEvent deviceEvent = new DeviceEvent(deviceId, event); final var deviceEventsMulti = Multi.createFrom().item(deviceEvent); Mockito.when(contextGateway.getDeviceEvents()).thenReturn(deviceEventsMulti); contextSubscriber.listenForDeviceEvents(); verify(automationService, times(0)).addDevice(deviceId); } @Test void shouldNotCallAddDeviceUponNullEvent() { final var uuidForDeviceRoleId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ROLE_ID).build(); final var uuidForDeviceId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ID).build(); final var outDeviceId = ContextOuterClass.DeviceId.newBuilder().setDeviceUuid(uuidForDeviceId).build(); final var outDeviceRoleId = Automation.DeviceRoleId.newBuilder() .setDevRoleId(uuidForDeviceRoleId) .setDevId(outDeviceId) .build(); String deviceId = outDeviceRoleId.getDevId().toString(); DeviceEvent deviceEvent = new DeviceEvent(deviceId, null); final var deviceEventsMulti = Multi.createFrom().item(deviceEvent); Mockito.when(contextGateway.getDeviceEvents()).thenReturn(deviceEventsMulti); contextSubscriber.listenForDeviceEvents(); verify(automationService, times(0)).addDevice(deviceId); } @Test void shouldCallListenForDeviceEventsUponStart() { final var uuidForDeviceRoleId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ROLE_ID).build(); final var uuidForDeviceId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ID).build(); final var outDeviceId = ContextOuterClass.DeviceId.newBuilder().setDeviceUuid(uuidForDeviceId).build(); final var outDeviceRoleId = Automation.DeviceRoleId.newBuilder() .setDevRoleId(uuidForDeviceRoleId) .setDevId(outDeviceId) .build(); String deviceId = outDeviceRoleId.getDevId().toString(); Event event = new Event(3.4, EventTypeEnum.CREATE); DeviceEvent deviceEvent = new DeviceEvent(deviceId, event); final var deviceEventsMulti = Multi.createFrom().item(deviceEvent); Mockito.when(contextGateway.getDeviceEvents()).thenReturn(deviceEventsMulti); Mockito.when(automationConfiguration.shouldSubscribeToContextComponent()).thenReturn(true); StartupEvent y = new StartupEvent(); contextSubscriber.onStart(y); verify(contextGateway, times(1)).getDeviceEvents(); verify(automationService, times(1)).addDevice(deviceId); } @Test void shouldNotCallListenForDeviceEventsUponStart() { final var automationConfiguration = Mockito.mock(AutomationConfiguration.class); Mockito.when(automationConfiguration.shouldSubscribeToContextComponent()).thenReturn(false); StartupEvent y = new StartupEvent(); contextSubscriber.onStart(y); verify(contextGateway, times(0)).getDeviceEvents(); } } src/automation/src/test/java/eu/teraflow/automation/MockAutomationConfiguration.java 0 → 100644 +18 −0 Original line number Diff line number Diff line package eu.teraflow.automation; import io.smallrye.config.SmallRyeConfig; import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; import javax.ws.rs.Produces; import org.eclipse.microprofile.config.Config; public class MockAutomationConfiguration { @Inject Config config; @Produces @ApplicationScoped @io.quarkus.test.Mock AutomationConfiguration automationConfiguration() { return config.unwrap(SmallRyeConfig.class).getConfigMapping(AutomationConfiguration.class); } } Loading
src/automation/src/test/java/eu/teraflow/automation/AutomationFunctionalServiceTest.java +21 −20 Original line number Diff line number Diff line Loading @@ -22,8 +22,11 @@ import automation.Automation; import context.ContextOuterClass; import eu.teraflow.automation.context.ContextGateway; import eu.teraflow.automation.device.DeviceGateway; import eu.teraflow.automation.device.model.*; import eu.teraflow.automation.device.model.ConfigActionEnum; import eu.teraflow.automation.device.model.ConfigRule; import eu.teraflow.automation.device.model.Device; import eu.teraflow.automation.device.model.DeviceConfig; import eu.teraflow.automation.device.model.DeviceOperationalStatus; import io.quarkus.test.junit.QuarkusTest; import io.quarkus.test.junit.mockito.InjectMock; import io.smallrye.mutiny.Uni; Loading @@ -37,7 +40,7 @@ import org.junit.jupiter.api.Test; import org.mockito.Mockito; @QuarkusTest public class AutomationFunctionalServiceTest { class AutomationFunctionalServiceTest { private static final Logger LOGGER = Logger.getLogger(AutomationFunctionalServiceTest.class); @Inject AutomationService automationService; Loading Loading @@ -97,8 +100,7 @@ public class AutomationFunctionalServiceTest { deviceConfig -> { LOGGER.infof("Received response %s", deviceConfig); assertThat(deviceConfig.getDeviceOperationalStatus().toString()) .isEqualTo(device.getDeviceOperationalStatus().toString()); assertThat(deviceConfig).hasToString(device.getDeviceOperationalStatus().toString()); assertThat(deviceConfig.getDeviceConfig().toString()).isNotNull(); Loading Loading @@ -163,8 +165,7 @@ public class AutomationFunctionalServiceTest { deviceConfig -> { LOGGER.infof("Received response %s", deviceConfig); assertThat(deviceConfig.getDeviceOperationalStatus().toString()) .isEqualTo(device.getDeviceOperationalStatus().toString()); assertThat(deviceConfig).hasToString(device.getDeviceOperationalStatus().toString()); assertThat(deviceConfig.getDeviceConfig().toString()).isNotNull(); Loading
src/automation/src/test/java/eu/teraflow/automation/ContextSubscriberTest.java 0 → 100644 +199 −0 Original line number Diff line number Diff line package eu.teraflow.automation; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import automation.Automation; import context.ContextOuterClass; import eu.teraflow.automation.context.ContextGateway; import eu.teraflow.automation.context.model.Event; import eu.teraflow.automation.context.model.EventTypeEnum; import eu.teraflow.automation.device.model.DeviceEvent; import io.quarkus.runtime.StartupEvent; import io.quarkus.test.junit.QuarkusTest; import io.quarkus.test.junit.mockito.InjectMock; import io.smallrye.mutiny.Multi; import java.util.UUID; import javax.inject.Inject; import org.junit.jupiter.api.Test; import org.mockito.Mockito; @QuarkusTest class ContextSubscriberTest { private static final String UUID_FOR_DEVICE_ROLE_ID = UUID.fromString("0f14d0ab-9608-7862-a9e4-5ed26688389b").toString(); private static final String UUID_FOR_DEVICE_ID = UUID.fromString("9f14d0ab-9608-7862-a9e4-5ed26688389c").toString(); @Inject ContextSubscriber contextSubscriber; @InjectMock ContextGateway contextGateway; @InjectMock AutomationService automationService; @InjectMock AutomationConfiguration automationConfiguration; @Test void shouldCallAddDeviceUponCreateEvent() { final var uuidForDeviceRoleId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ROLE_ID).build(); final var uuidForDeviceId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ID).build(); final var outDeviceId = ContextOuterClass.DeviceId.newBuilder().setDeviceUuid(uuidForDeviceId).build(); final var outDeviceRoleId = Automation.DeviceRoleId.newBuilder() .setDevRoleId(uuidForDeviceRoleId) .setDevId(outDeviceId) .build(); String deviceId = outDeviceRoleId.getDevId().toString(); Event event = new Event(3.4, EventTypeEnum.CREATE); DeviceEvent deviceEvent = new DeviceEvent(deviceId, event); final var deviceEventsMulti = Multi.createFrom().item(deviceEvent); Mockito.when(contextGateway.getDeviceEvents()).thenReturn(deviceEventsMulti); contextSubscriber.listenForDeviceEvents(); verify(automationService, times(1)).addDevice(deviceId); } @Test void shouldNotCallAddDeviceUponUpdateEvent() { final var uuidForDeviceRoleId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ROLE_ID).build(); final var uuidForDeviceId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ID).build(); final var outDeviceId = ContextOuterClass.DeviceId.newBuilder().setDeviceUuid(uuidForDeviceId).build(); final var outDeviceRoleId = Automation.DeviceRoleId.newBuilder() .setDevRoleId(uuidForDeviceRoleId) .setDevId(outDeviceId) .build(); String deviceId = outDeviceRoleId.getDevId().toString(); Event event = new Event(3.4, EventTypeEnum.UPDATE); DeviceEvent deviceEvent = new DeviceEvent(deviceId, event); final var deviceEventsMulti = Multi.createFrom().item(deviceEvent); Mockito.when(contextGateway.getDeviceEvents()).thenReturn(deviceEventsMulti); contextSubscriber.listenForDeviceEvents(); verify(automationService, times(0)).addDevice(deviceId); } @Test void shouldNotCallAddDeviceUponRemoveEvent() { final var uuidForDeviceRoleId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ROLE_ID).build(); final var uuidForDeviceId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ID).build(); final var outDeviceId = ContextOuterClass.DeviceId.newBuilder().setDeviceUuid(uuidForDeviceId).build(); final var outDeviceRoleId = Automation.DeviceRoleId.newBuilder() .setDevRoleId(uuidForDeviceRoleId) .setDevId(outDeviceId) .build(); String deviceId = outDeviceRoleId.getDevId().toString(); Event event = new Event(3.4, EventTypeEnum.REMOVE); DeviceEvent deviceEvent = new DeviceEvent(deviceId, event); final var deviceEventsMulti = Multi.createFrom().item(deviceEvent); Mockito.when(contextGateway.getDeviceEvents()).thenReturn(deviceEventsMulti); contextSubscriber.listenForDeviceEvents(); verify(automationService, times(0)).addDevice(deviceId); } @Test void shouldNotCallAddDeviceUponNullEvent() { final var uuidForDeviceRoleId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ROLE_ID).build(); final var uuidForDeviceId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ID).build(); final var outDeviceId = ContextOuterClass.DeviceId.newBuilder().setDeviceUuid(uuidForDeviceId).build(); final var outDeviceRoleId = Automation.DeviceRoleId.newBuilder() .setDevRoleId(uuidForDeviceRoleId) .setDevId(outDeviceId) .build(); String deviceId = outDeviceRoleId.getDevId().toString(); DeviceEvent deviceEvent = new DeviceEvent(deviceId, null); final var deviceEventsMulti = Multi.createFrom().item(deviceEvent); Mockito.when(contextGateway.getDeviceEvents()).thenReturn(deviceEventsMulti); contextSubscriber.listenForDeviceEvents(); verify(automationService, times(0)).addDevice(deviceId); } @Test void shouldCallListenForDeviceEventsUponStart() { final var uuidForDeviceRoleId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ROLE_ID).build(); final var uuidForDeviceId = ContextOuterClass.Uuid.newBuilder().setUuid(UUID_FOR_DEVICE_ID).build(); final var outDeviceId = ContextOuterClass.DeviceId.newBuilder().setDeviceUuid(uuidForDeviceId).build(); final var outDeviceRoleId = Automation.DeviceRoleId.newBuilder() .setDevRoleId(uuidForDeviceRoleId) .setDevId(outDeviceId) .build(); String deviceId = outDeviceRoleId.getDevId().toString(); Event event = new Event(3.4, EventTypeEnum.CREATE); DeviceEvent deviceEvent = new DeviceEvent(deviceId, event); final var deviceEventsMulti = Multi.createFrom().item(deviceEvent); Mockito.when(contextGateway.getDeviceEvents()).thenReturn(deviceEventsMulti); Mockito.when(automationConfiguration.shouldSubscribeToContextComponent()).thenReturn(true); StartupEvent y = new StartupEvent(); contextSubscriber.onStart(y); verify(contextGateway, times(1)).getDeviceEvents(); verify(automationService, times(1)).addDevice(deviceId); } @Test void shouldNotCallListenForDeviceEventsUponStart() { final var automationConfiguration = Mockito.mock(AutomationConfiguration.class); Mockito.when(automationConfiguration.shouldSubscribeToContextComponent()).thenReturn(false); StartupEvent y = new StartupEvent(); contextSubscriber.onStart(y); verify(contextGateway, times(0)).getDeviceEvents(); } }
src/automation/src/test/java/eu/teraflow/automation/MockAutomationConfiguration.java 0 → 100644 +18 −0 Original line number Diff line number Diff line package eu.teraflow.automation; import io.smallrye.config.SmallRyeConfig; import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; import javax.ws.rs.Produces; import org.eclipse.microprofile.config.Config; public class MockAutomationConfiguration { @Inject Config config; @Produces @ApplicationScoped @io.quarkus.test.Mock AutomationConfiguration automationConfiguration() { return config.unwrap(SmallRyeConfig.class).getConfigMapping(AutomationConfiguration.class); } }