public void Should_Convert_Collection() { var responses = new Fixture().CreateMany<TestObject>().ToList(); var objectConverter = new PartialObjectConverter(); var responseObject = objectConverter.ConvertToExpandoObject(responses, new PartialObjectDefinition() { Properties = new Dictionary<string, PartialObjectDefinition>() { {"Birthday", null}, {"Integer", null}, {"NullableDouble", null}, {"NullableBirthday", null}, { "NestedObject", new PartialObjectDefinition() { Properties = new Dictionary<string, PartialObjectDefinition>() { {"Birthday", null}, {"Integer", null} } } }, { "ListObjects", new PartialObjectDefinition() { Properties = new Dictionary<string, PartialObjectDefinition>() { {"OtherProperty", null} } } } } }); var responseList = ((IList<object>) responseObject).ToList(); Assert.AreEqual(responses.Count(), responseList.Count); for (int i = 0; i < responseList.Count; i++) { var response = responses.ElementAt(i); var resultObject = responseList.ElementAt(i) as IDictionary<string, object>; // check the nested object var nestObjectDict = resultObject["NestedObject"] as IDictionary<string, object>; Assert.IsNotNull(nestObjectDict); Assert.AreEqual(4, nestObjectDict.Keys.Count); Assert.AreEqual(response.NestedObject.TestObject2Id, nestObjectDict["TestObject2Id"]); Assert.AreEqual(response.NestedObject.URI, nestObjectDict["URI"]); Assert.AreEqual(response.NestedObject.Birthday, nestObjectDict["Birthday"]); Assert.AreEqual(response.NestedObject.Integer, nestObjectDict["Integer"]); // check the listed object var listObjects = resultObject["ListObjects"] as ICollection<object>; Assert.IsNotNull(listObjects); Assert.AreEqual(response.ListObjects.Count, listObjects.Count); for (int j = 0; j < listObjects.Count; j++) { var convertedElement = listObjects.ElementAt(i) as IDictionary<string, object>; Assert.AreEqual(response.ListObjects[i].TestObject3Id, convertedElement["TestObject3Id"]); Assert.AreEqual(response.ListObjects[i].URI, convertedElement["URI"]); Assert.AreEqual(response.ListObjects[i].OtherProperty, convertedElement["OtherProperty"]); } } }