public void PluginServiceToXmlExpectedSerializesProperties()
{
var expected = new PluginService
{
Source = new PluginSource
{
ResourceID = Guid.NewGuid(),
ResourceName = "TestWebSource",
},
Namespace = "abc.pqr",
};
expected.Method.Parameters.AddRange(
new[]
{
new MethodParameter
{
Name = "Param1",
DefaultValue = "123"
},
new MethodParameter
{
Name = "Param2",
DefaultValue = "456"
}
});
var rs1 = new Recordset
{
Name = "Recordset1()"
};
rs1.Fields.AddRange(new[]
{
new RecordsetField
{
Name = "Field1",
Alias = "Alias1"
},
new RecordsetField
{
Name = "Field2",
Alias = "Alias2",
Path = new XmlPath("actual", "display", "outputExpression", "sampleData")
},
new RecordsetField
{
Name = "Field3",
Alias = null
}
});
expected.Recordsets.Add(rs1);
var xml = expected.ToXml();
var actual = new PluginService(xml);
Assert.AreEqual(expected.Source.ResourceType, actual.Source.ResourceType);
Assert.AreEqual(expected.Source.ResourceID, actual.Source.ResourceID);
Assert.AreEqual(expected.Source.ResourceName, actual.Source.ResourceName);
Assert.AreEqual(expected.ResourceType, actual.ResourceType);
Assert.AreEqual(expected.Namespace, actual.Namespace);
foreach(var expectedParameter in expected.Method.Parameters)
{
var actualParameter = actual.Method.Parameters.First(p => p.Name == expectedParameter.Name);
Assert.AreEqual(expectedParameter.DefaultValue, actualParameter.DefaultValue);
}
foreach(var expectedRecordset in expected.Recordsets)
{
// expect actual to have removed recordset notation ()...
var actualRecordset = actual.Recordsets.First(rs => rs.Name == expectedRecordset.Name.Replace("()", ""));
foreach(var expectedField in expectedRecordset.Fields)
{
var actualField = actualRecordset.Fields.FirstOrDefault(f => expectedField.Name == null ? f.Name == "" : f.Name == expectedField.Name);
Assert.IsNotNull(actualField);
Assert.AreEqual(expectedField.Alias ?? "", actualField.Alias);
if(actualField.Path != null)
{
Assert.AreEqual(expectedField.Path.ActualPath, actualField.Path.ActualPath);
Assert.AreEqual(expectedField.Path.DisplayPath, actualField.Path.DisplayPath);
Assert.AreEqual(string.Format("[[{0}]]", expectedField.Alias), actualField.Path.OutputExpression);
Assert.AreEqual(expectedField.Path.SampleData, actualField.Path.SampleData);
}
}
}
}