/*******************************************************************************
* (c) Copyright 2016 Hewlett-Packard Development Company, L.P.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Apache License v2.0 which accompany this distribution.
*
* The Apache License is available at
* http://www.apache.org/licenses/LICENSE-2.0
*
*******************************************************************************/
package io.cloudslang.lang.runtime.navigations;
import io.cloudslang.lang.entities.ScoreLangConstants;
import io.cloudslang.lang.runtime.env.RunEnvironment;
import io.cloudslang.score.events.ScoreEvent;
import io.cloudslang.score.lang.ExecutionRuntimeServices;
import java.util.Collection;
import junit.framework.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* User: stoneo
* Date: 17/11/2014
* Time: 10:48
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes = NavigationsTest.Config.class)
public class NavigationsTest {
@Autowired
private Navigations navigations;
@Test
public void simpleNavigateTest() throws Exception {
RunEnvironment runEnv = new RunEnvironment();
Long nextStepId = 2L;
runEnv.putNextStepPosition(nextStepId);
Long nextPosition = navigations.navigate(runEnv, new ExecutionRuntimeServices());
Assert.assertEquals(nextStepId, nextPosition);
}
@Test
public void errorNavigationTest() throws Exception {
RunEnvironment runEnv = new RunEnvironment();
Long nextStepId = 2L;
runEnv.putNextStepPosition(nextStepId);
ExecutionRuntimeServices runtimeServices = new ExecutionRuntimeServices();
runtimeServices.setStepErrorKey("Error");
try {
navigations.navigate(runEnv, runtimeServices);
} catch (RuntimeException e) {
Collection<ScoreEvent> events = runtimeServices.getEvents();
Assert.assertFalse(events.isEmpty());
ScoreEvent stepErrorEvent = null;
for (ScoreEvent event : events) {
if (event.getEventType().equals(ScoreLangConstants.SLANG_EXECUTION_EXCEPTION)) {
stepErrorEvent = event;
}
}
Assert.assertNotNull(stepErrorEvent);
}
}
@Configuration
static class Config {
@Bean
public Navigations navigations() {
return new Navigations();
}
}
}