package com.thoughtworks.go.plugin.access.configrepo.contract.tasks;
import com.google.gson.JsonObject;
import com.thoughtworks.go.plugin.access.configrepo.contract.CRBaseTest;
import org.junit.Test;
import java.util.Map;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
public class CRNantTaskTest extends CRBaseTest<CRNantTask> {
private final CRNantTask nantTask;
private final CRNantTask nantCompileFileTask;
private final CRNantTask nantCompileTask;
private final CRNantTask nantWithDirTask;
private final CRNantTask nantWithPath;
public CRNantTaskTest()
{
nantTask = CRBuildTask.nant();
nantCompileFileTask = CRBuildTask.nant("mybuild.xml", "compile");
nantCompileTask = CRBuildTask.nant(null, "compile");
nantWithDirTask = CRBuildTask.nant(null, "build", "src/tasks");
nantWithPath = CRBuildTask.nant("mybuild.xml", "build", "src/tasks","/path/to/nant");
}
@Override
public void addGoodExamples(Map<String, CRNantTask> examples) {
examples.put("nantTask",nantTask);
examples.put("nantCompileFileTask",nantCompileFileTask);
examples.put("nantCompileTask",nantCompileTask);
examples.put("nantWithPath",nantWithPath);
examples.put("nantWithDirTask",nantWithDirTask);
}
@Override
public void addBadExamples(Map<String, CRNantTask> examples) {
}
@Test
public void shouldAppendTypeFieldWhenSerializingNantTask()
{
CRTask value = nantWithPath;
JsonObject jsonObject = (JsonObject)gson.toJsonTree(value);
assertThat(jsonObject.get("type").getAsString(), is("nant"));
}
@Test
public void shouldHandlePolymorphismWhenDeserializingNantTask()
{
CRTask value = nantTask;
String json = gson.toJson(value);
CRBuildTask deserializedValue = (CRBuildTask)gson.fromJson(json,CRTask.class);
assertThat(String.format("Deserialized value should equal to value before serialization"),
deserializedValue,is(value));
}
}