예제 #1
0
        public void Convert_DynamicObjectWithInvalidColumnName_ShouldThrowInvalidColumnException(Converter sut)
        {
            //Setup
            var invalidColumnName = "address..zipCode";
            var columns = new List<string>() {
                "id",
                "name",
                "value"
            };
            var matrix = new List<List<object>>()
            {
                new List<object>() { 1, invalidColumnName, "firstName1" }
            };

            //Exercise
            Action exercise = () => sut.ConvertDynamic(columns, matrix);

            //Verify
            exercise.ShouldThrow<ConverterInvalidColumnNameException>()
                .Where(x => x.Message.Contains(invalidColumnName));
        }
예제 #2
0
        public void Convert_NestedDynamicObject_ShouldSucced(Converter sut)
        {
            //Setup
            var columns = new List<string>() {
                "id",
                "name",
                "value"
            };
            var matrix = new List<List<object>>()
            {
                new List<object>() { 1, "city.name", "cityName" },
                new List<object>() { 1, "city.country.isoCode", "countryIsoCode" },
                new List<object>() { 2, "school.name", "schoolName" }
            };

            //Exercise
            var actual = sut.ConvertDynamic(columns, matrix);

            //Verify
            actual.Should().HaveCount(2)
                .And.DeepContain(new Dictionary<string, object>()
                {
                    { "id", 1},
                    { "city", new Dictionary<string, object>()
                        {
                            { "name", "cityName" },
                            { "country", new Dictionary<string, object>()
                                {
                                    { "isoCode", "countryIsoCode" }
                                }
                           }
                        }
                    }
                })
                .And.DeepContain(new Dictionary<string, object>()
                {
                    { "id", 2},
                    { "school", new Dictionary<string, object>()
                        {
                            { "name", "schoolName" }
                        }
                    }
                });
        }
예제 #3
0
        public void Convert_DynamicObjectWithRepeatedColumns_ShouldThrowRepeatedColumnException(Converter sut)
        {
            //Setup
            var repeatedLabelName = "firstName";
            var columns = new List<string>() {
                "id",
                "name",
                "value"
            };
            var matrix = new List<List<object>>()
            {
                new List<object>() { 1, repeatedLabelName, "firstName1" },
                new List<object>() { 1, repeatedLabelName, "firstName2" }
            };

            //Exercise
            Action exercise = () => sut.ConvertDynamic(columns, matrix);

            //Verify
            exercise.ShouldThrow<ConverterRepeatedColumnException>()
                .Where(x => x.Message.Contains(repeatedLabelName));
        }
예제 #4
0
        public void Convert_SimpleDynamicObject_ShouldSucced(Converter sut)
        {
            //Setup
            var columns = new List<string>() {
                "id",
                "name",
                "value"
            };
            var matrix = new List<List<object>>()
            {
                new List<object>() { 1, "firstName", "firstName" },
                new List<object>() { 1, "lastName", "lastName" },
                new List<object>() { 2, "hasPets", true }
            };

            //Exercise
            var actual = sut.ConvertDynamic(columns, matrix);

            //Verify
            actual.Should().NotBeEmpty()
                .And.HaveCount(2)
                .And.DeepContain(new Dictionary<string, object>() { { "id", 1 }, { "firstName", "firstName" }, { "lastName", "lastName" } })
                .And.DeepContain(new Dictionary<string, object>() { { "id", 2 }, { "hasPets", true } });
        }