public static void GivenAListOfSourceServerDescriptor_WhenMergingThem_ThenItShouldBeProperlyMerged(
int expectedVersion,
string expectedVersionControl,
string expectedTarget,
IDictionary<string, string> expectedSourceFiles,
HttpSourceServerDescriptor primary,
IEnumerable<HttpSourceServerDescriptor> other)
{
var merged = primary.MergeWith(other);
Assert.That(merged.Version, Is.EqualTo(expectedVersion));
Assert.That(merged.VersionControl, Is.EqualTo(expectedVersionControl));
Assert.That(merged.Target, Is.EqualTo(expectedTarget));
CollectionAssert.AreEquivalent(
expectedSourceFiles,
merged.SourceFiles.Select(file => file.Variables)
.ToDictionary(vars => vars.ElementAt(0), vars => vars.ElementAt(1)));
}