/*
* Copyright 2017 ThoughtWorks, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.thoughtworks.go.config;
import com.thoughtworks.go.service.TaskFactory;
import org.junit.Before;
import org.junit.Test;
import java.util.HashMap;
import java.util.Map;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
public class OnCancelConfigTest {
private TaskFactory taskFactory;
@Before public void setUp() throws Exception {
taskFactory = mock(TaskFactory.class);
}
@Test
public void shouldReturnTheOnCancelOptionBasedOnWhatTheOnCancelTaskIs() {
assertThat(new OnCancelConfig().onCancelOption(), is(""));
assertThat(new OnCancelConfig(new ExecTask()).onCancelOption(), is("Custom Command"));
assertThat(new OnCancelConfig(new AntTask()).onCancelOption(), is("Ant"));
assertThat(new OnCancelConfig(new RakeTask()).onCancelOption(), is("Rake"));
}
@Test
public void shouldAddErrorOnErrorCollection() {
OnCancelConfig onCancelConfig = new OnCancelConfig();
onCancelConfig.addError("key", "some error");
assertThat(onCancelConfig.errors().on("key"), is("some error"));
}
@Test
public void shouldSetPrimitiveAttributesForExecTask() {
Map hashMap = new HashMap();
hashMap.put(OnCancelConfig.ON_CANCEL_OPTIONS, "exec");
Map valueMap = new HashMap();
valueMap.put(ExecTask.COMMAND, "ls");
valueMap.put(ExecTask.ARGS, "blah");
valueMap.put(ExecTask.WORKING_DIR, "pwd");
hashMap.put(OnCancelConfig.EXEC_ON_CANCEL, valueMap);
hashMap.put(OnCancelConfig.ANT_ON_CANCEL, new HashMap());
ExecTask execTask = new ExecTask();
when(taskFactory.taskInstanceFor(execTask.getTaskType())).thenReturn(execTask);
OnCancelConfig cancelConfig = OnCancelConfig.create(hashMap, taskFactory);
assertThat(cancelConfig.getTask(), is(new ExecTask("ls", "blah", "pwd")));
}
@Test
public void shouldSetPrimitiveAttributesForAntTask() {
Map hashMap = new HashMap();
hashMap.put(OnCancelConfig.ON_CANCEL_OPTIONS, "ant");
Map valueMap = new HashMap();
valueMap.put(BuildTask.BUILD_FILE, "build.xml");
valueMap.put(BuildTask.TARGET, "blah");
valueMap.put(BuildTask.WORKING_DIRECTORY, "pwd");
hashMap.put(OnCancelConfig.ANT_ON_CANCEL, valueMap);
hashMap.put(OnCancelConfig.EXEC_ON_CANCEL, new HashMap());
when(taskFactory.taskInstanceFor(new AntTask().getTaskType())).thenReturn(new AntTask());
OnCancelConfig cancelConfig = OnCancelConfig.create(hashMap, taskFactory);
AntTask expectedAntTask = new AntTask();
expectedAntTask.setBuildFile("build.xml");
expectedAntTask.setTarget("blah");
expectedAntTask.setWorkingDirectory("pwd");
assertThat(cancelConfig.getTask(), is(expectedAntTask));
}
@Test
public void shouldSetPrimitiveAttributesForNantTask() {
Map hashMap = new HashMap();
hashMap.put(OnCancelConfig.ON_CANCEL_OPTIONS, "nant");
Map valueMap = new HashMap();
valueMap.put(BuildTask.BUILD_FILE, "default.build");
valueMap.put(BuildTask.TARGET, "compile");
valueMap.put(BuildTask.WORKING_DIRECTORY, "pwd");
valueMap.put(NantTask.NANT_PATH, "/usr/bin/nant");
hashMap.put(OnCancelConfig.NANT_ON_CANCEL, valueMap);
hashMap.put(OnCancelConfig.EXEC_ON_CANCEL, new HashMap());
hashMap.put(OnCancelConfig.ANT_ON_CANCEL, new HashMap());
hashMap.put(OnCancelConfig.RAKE_ON_CANCEL, new HashMap());
when(taskFactory.taskInstanceFor(new NantTask().getTaskType())).thenReturn(new NantTask());
OnCancelConfig cancelConfig = OnCancelConfig.create(hashMap, taskFactory);
NantTask expectedNantTask = new NantTask();
expectedNantTask.setBuildFile("default.build");
expectedNantTask.setTarget("compile");
expectedNantTask.setWorkingDirectory("pwd");
expectedNantTask.setNantPath("/usr/bin/nant");
assertThat(cancelConfig.getTask(), is(expectedNantTask));
}
@Test
public void shouldSetPrimitiveAttributesForRakeTask() {
Map hashMap = new HashMap();
hashMap.put(OnCancelConfig.ON_CANCEL_OPTIONS, "rake");
Map valueMap = new HashMap();
valueMap.put(BuildTask.BUILD_FILE, "rakefile");
valueMap.put(BuildTask.TARGET, "build");
valueMap.put(BuildTask.WORKING_DIRECTORY, "pwd");
hashMap.put(OnCancelConfig.RAKE_ON_CANCEL, valueMap);
hashMap.put(OnCancelConfig.EXEC_ON_CANCEL, new HashMap());
when(taskFactory.taskInstanceFor(new RakeTask().getTaskType())).thenReturn(new RakeTask());
OnCancelConfig cancelConfig = OnCancelConfig.create(hashMap, taskFactory);
RakeTask expectedRakeTask = new RakeTask();
expectedRakeTask.setBuildFile("rakefile");
expectedRakeTask.setTarget("build");
expectedRakeTask.setWorkingDirectory("pwd");
assertThat(cancelConfig.getTask(), is(expectedRakeTask));
}
}