/* * Copyright 2017 Nokia Solutions and Networks * Licensed under the Apache License, Version 2.0, * see license.txt file for details. */ package org.robotframework.ide.eclipse.main.plugin.views.message; import static org.assertj.core.api.Assertions.assertThat; import org.junit.Test; import org.rf.ide.core.execution.LogLevel; import org.rf.ide.core.execution.Status; import org.robotframework.ide.eclipse.main.plugin.launch.RobotTestExecutionService.RobotTestsLaunch; public class ExecutionMessagesTrackerTest { @Test public void messageStoreIsAdded_whenAgentIsInitializedAndStoreDoesNotExist() { final RobotTestsLaunch launchContext = new RobotTestsLaunch(); final ExecutionMessagesTracker tracker = new ExecutionMessagesTracker(launchContext); assertThat(launchContext.getExecutionData(ExecutionMessagesStore.class).isPresent()).isFalse(); tracker.handleAgentInitializing(); assertThat(launchContext.getExecutionData(ExecutionMessagesStore.class).isPresent()).isTrue(); } @Test public void messageStoreIsNotAdded_whenAgentIsInitializedButStoreAlreadyExist() { final RobotTestsLaunch launchContext = new RobotTestsLaunch(); final ExecutionMessagesStore store = new ExecutionMessagesStore(); launchContext.getExecutionData(ExecutionMessagesStore.class, () -> store); final ExecutionMessagesTracker tracker = new ExecutionMessagesTracker(launchContext); tracker.handleAgentInitializing(); assertThat(launchContext.getExecutionData(ExecutionMessagesStore.class).isPresent()).isTrue(); assertThat(launchContext.getExecutionData(ExecutionMessagesStore.class).get()).isSameAs(store); } @Test public void testStartMessageIsStored_whenThereIsAStoreDefined() { final RobotTestsLaunch launchContext = new RobotTestsLaunch(); final ExecutionMessagesStore store = launchContext.getExecutionData(ExecutionMessagesStore.class, ExecutionMessagesStore::new); final ExecutionMessagesTracker tracker = new ExecutionMessagesTracker(launchContext); tracker.handleTestStarted("tc", "test_case"); assertThat(store.getMessage()).isEqualTo("Starting test: test_case\n"); } @Test public void testStartMessageIsNotStored_whenThereIsNoStoreDefined() { final RobotTestsLaunch launchContext = new RobotTestsLaunch(); final ExecutionMessagesTracker tracker = new ExecutionMessagesTracker(launchContext); tracker.handleTestStarted("tc", "test_case"); final ExecutionMessagesStore store = launchContext.getExecutionData(ExecutionMessagesStore.class, ExecutionMessagesStore::new); assertThat(store.getMessage()).isEmpty(); } @Test public void testEndMessageIsStored_whenThereIsAStoreDefined() { final RobotTestsLaunch launchContext = new RobotTestsLaunch(); final ExecutionMessagesStore store = launchContext.getExecutionData(ExecutionMessagesStore.class, ExecutionMessagesStore::new); final ExecutionMessagesTracker tracker = new ExecutionMessagesTracker(launchContext); tracker.handleTestEnded("tc", "test_case", 100, Status.PASS, ""); assertThat(store.getMessage()).isEqualTo("Ending test: test_case\n\n"); } @Test public void testEndMessageIsNotStored_whenThereIsNoStoreDefined() { final RobotTestsLaunch launchContext = new RobotTestsLaunch(); final ExecutionMessagesTracker tracker = new ExecutionMessagesTracker(launchContext); tracker.handleTestEnded("tc", "test_case", 100, Status.PASS, ""); final ExecutionMessagesStore store = launchContext.getExecutionData(ExecutionMessagesStore.class, ExecutionMessagesStore::new); assertThat(store.getMessage()).isEmpty(); } @Test public void logMessageIsStored_whenThereIsAStoreDefined() { final RobotTestsLaunch launchContext = new RobotTestsLaunch(); final ExecutionMessagesStore store = launchContext.getExecutionData(ExecutionMessagesStore.class, ExecutionMessagesStore::new); final ExecutionMessagesTracker tracker = new ExecutionMessagesTracker(launchContext); tracker.handleLogMessage("msg", LogLevel.INFO, "stamp"); assertThat(store.getMessage()).isEqualTo("stamp : INFO : msg\n"); } @Test public void logMessageIsNotStored_whenThereIsNoStoreDefined() { final RobotTestsLaunch launchContext = new RobotTestsLaunch(); final ExecutionMessagesTracker tracker = new ExecutionMessagesTracker(launchContext); tracker.handleLogMessage("msg", LogLevel.INFO, "stamp"); final ExecutionMessagesStore store = launchContext.getExecutionData(ExecutionMessagesStore.class, ExecutionMessagesStore::new); assertThat(store.getMessage()).isEmpty(); } }