package com.thoughtworks.go.plugin.access.configrepo.contract.tasks;
import com.google.gson.JsonObject;
import com.thoughtworks.go.plugin.access.configrepo.contract.CRBaseTest;
import com.thoughtworks.go.plugin.access.configrepo.contract.CRConfigurationProperty;
import org.junit.Test;
import java.util.Map;
import static org.hamcrest.MatcherAssert.assertThat;
import static org.hamcrest.core.Is.is;
public class CRPluggableTaskTest extends CRBaseTest<CRPluggableTask> {
private final CRPluggableTask curl;
private final CRPluggableTask example;
private final CRPluggableTask invalidNoPlugin;
private final CRPluggableTask invalidDuplicatedKeys;
public CRPluggableTaskTest()
{
curl = new CRPluggableTask("curl.task.plugin","1",
new CRConfigurationProperty("Url","http://www.google.com"),
new CRConfigurationProperty("SecureConnection","no"),
new CRConfigurationProperty("RequestType","no")
);
example = new CRPluggableTask("example.task.plugin","1");
invalidNoPlugin = new CRPluggableTask();
invalidDuplicatedKeys = new CRPluggableTask("curl.task.plugin","1",
new CRConfigurationProperty("Url","http://www.google.com"),
new CRConfigurationProperty("Url","http://www.gg.com")
);
}
@Override
public void addGoodExamples(Map<String, CRPluggableTask> examples) {
examples.put("curl",curl);
examples.put("example",example);
}
@Override
public void addBadExamples(Map<String, CRPluggableTask> examples) {
examples.put("invalidNoPlugin",invalidNoPlugin);
examples.put("invalidDuplicatedKeys",invalidDuplicatedKeys);
}
@Test
public void shouldAppendTypeFieldWhenSerializingTask()
{
CRTask value = curl;
JsonObject jsonObject = (JsonObject)gson.toJsonTree(value);
assertThat(jsonObject.get("type").getAsString(), is(CRPluggableTask.TYPE_NAME));
}
@Test
public void shouldHandlePolymorphismWhenDeserializingTask()
{
CRTask value = curl;
String json = gson.toJson(value);
CRPluggableTask deserializedValue = (CRPluggableTask)gson.fromJson(json,CRTask.class);
assertThat(String.format("Deserialized value should equal to value before serialization"),
deserializedValue,is(value));
}
}