public void SetUp()
 {
     dataTable = A.Fake<DataTable>();
     arrayOfObjects = new [] {
         new Dictionary<string, object> { { "Id", 1 } },
         new Dictionary<string, object> { { "Id", 2 } },
     };
     json = "json";
     dataTableToObjectsConverter = A.Fake<DataTableToDynamicsConverter>();
     serializer = A.Fake<IJSONSerializer>();
     A.CallTo(() => dataTableToObjectsConverter.Convert(dataTable)).Returns(arrayOfObjects);
 }
        public void Convert_TableWithTwoRows_ReturnsArrayOfTwoDynamicObjects()
        {
            var dataTable = new DataTable();
            dataTable.Columns.Add("Id", typeof (int));
            dataTable.Columns.Add("Title", typeof(string));
            dataTable.Columns.Add("Value", typeof(decimal));
            dataTable.Columns.Add("Active", typeof(bool));
            dataTable.Columns.Add("CreatedOn", typeof(DateTime));

            var row = dataTable.NewRow();
            row["Id"] = 1;
            row["Title"] = "Hello, world";
            row["Value"] = 7.1;
            row["Active"] = true;
            row["CreatedOn"] = new DateTime(2013, 6, 6, 17, 15, 1, 2);
            dataTable.Rows.Add(row);

            row = dataTable.NewRow();
            row["Id"] = 2;
            row["Title"] = "Hello, world!";
            row["Value"] = 17.7;
            row["Active"] = true;
            row["CreatedOn"] = new DateTime(2012, 7, 7, 7, 15, 1, 2);
            dataTable.Rows.Add(row);

            var converter = new DataTableToDynamicsConverter();

            var result = converter.Convert(dataTable);

            Assert.AreEqual(2, result.Length);
            Assert.AreEqual(1, result[0]["Id"]);
            Assert.AreEqual("Hello, world", result[0]["Title"]);
            Assert.AreEqual(7.1, result[0]["Value"]);
            Assert.AreEqual(true, result[0]["Active"]);
            Assert.AreEqual(new DateTime(2013, 6, 6, 17, 15, 1, 2), result[0]["CreatedOn"]);

            Assert.AreEqual(2, result[1]["Id"]);
            Assert.AreEqual("Hello, world!", result[1]["Title"]);
            Assert.AreEqual(17.7, result[1]["Value"]);
            Assert.AreEqual(true, result[1]["Active"]);
            Assert.AreEqual(new DateTime(2012, 7, 7, 7, 15, 1, 2), result[1]["CreatedOn"]);
        }