public void GetValue_TopLevelEpochDateTimeTransformation_ReturnsNumber()
        {
            var transformed = new EpochDateTimeDataItem(
                new DictionaryDataItem(new Dictionary<string, object>
                {
                    { "StringProperty", "Flat document" },
                    { "DateTimeProperty", new DateTime(2015, 3, 1, 20, 10, 5, DateTimeKind.Utc) }
                }));

            CollectionAssert.AreEquivalent(new[] { "StringProperty", "DateTimeProperty" }, transformed.GetFieldNames().ToArray(),
                TestResources.InvalidFieldNames);

            Assert.AreEqual("Flat document", transformed.GetValue("StringProperty"), TestResources.InvalidFieldValue);
            Assert.AreEqual(1425240605L, transformed.GetValue("DateTimeProperty"), TestResources.InvalidFieldValue);
        }
        public void GetValue_NestedEpochDateTimeTransformation_ReturnsNumber()
        {
            var transformed = new EpochDateTimeDataItem(
                new DictionaryDataItem(new Dictionary<string, object>
                {
                    { "StringProperty", "Nested document" },
                    { "Nested", new Dictionary<string, object>
                        {
                            { "DateTimeProperty", new DateTime(2010, 5, 3, 1, 0, 0, DateTimeKind.Utc) }
                        }
                    }
                }));

            CollectionAssert.AreEquivalent(new[] { "StringProperty", "Nested" }, transformed.GetFieldNames().ToArray(),
                TestResources.InvalidFieldNames);

            Assert.AreEqual("Nested document", transformed.GetValue("StringProperty"), TestResources.InvalidFieldValue);

            var nested = transformed.GetValue("Nested") as IDataItem;

            Assert.IsNotNull(nested, TestResources.NullNestedDataItem);

            CollectionAssert.AreEquivalent(new[] { "DateTimeProperty" }, nested.GetFieldNames().ToArray(),
                TestResources.InvalidFieldNames);

            Assert.AreEqual(1272848400L, nested.GetValue("DateTimeProperty"), TestResources.InvalidFieldValue);
        }