public void Handle_Add_Button()
        {
            var serializer = new NZazuTableDataXmlSerializer();
            var sut        = new NZazuDataTableField(new FieldDefinition
            {
                Key    = "key",
                Type   = "table01",
                Fields = new[]
                {
                    new FieldDefinition
                    {
                        Key  = "table01_field01",
                        Type = "string"
                    }
                }
            }, ServiceLocator);

            var data = new Dictionary <string, string>
            {
                { "table01_field01__1", "hello" }, { "table01_field01__2", "world" }
            };
            var dataSerialized = serializer.Serialize(data);

            sut.SetValue(dataSerialized);

            var ctrl      = (DynamicDataTable)sut.ValueControl;
            var lastadded = ctrl.LayoutGrid.Children[2];

            lastadded.Should().NotBeNull();

            // lets see if it adds a row
            ctrl.LayoutGrid.RowDefinitions.Count.Should().Be(3);
            sut.AddRowAbove(lastadded);
            ctrl.LayoutGrid.RowDefinitions.Count.Should().Be(4);
        }
        public void Serialize_And_Deserialize_Null_Rows_To_Null()
        {
            var serializer = new NZazuTableDataXmlSerializer();
            var data       = new Dictionary <string, string> {
                { "table01_field01__1", null }, { "table01_field01__2", null }
            };
            var dataSerialized = serializer.Serialize(data);

            // ReSharper disable once UseObjectOrCollectionInitializer
            var sut = new NZazuDataTableField(new FieldDefinition
            {
                Key    = "table01",
                Fields = new[]
                {
                    new FieldDefinition {
                        Key = "table01_field01", Type = "string"
                    }
                }
            }, ServiceLocator);

            sut.SetValue(dataSerialized);

            // test the returned data
            var actual = serializer.Deserialize(sut.GetValue());

            actual.Count.Should().Be(0);

            sut.Validate().IsValid.Should().BeTrue();
            ((DynamicDataTable)sut.ValueControl).LayoutGrid.RowDefinitions.Count.Should().Be(2);
        }
        public void Serialize_And_Deserialize_Multiple()
        {
            var serializer = new NZazuTableDataXmlSerializer();
            var testData   = GetField();
            var sut        = (NZazuDataTableField)testData.Field;
            var data       = (Dictionary <string, string>)testData.Data;
            var sd         = serializer.Serialize(data);

            // lets assign the data
            sut.SetValue(sd);

            // lets assign the data again
            var testData2 = GetField();
            var sut2      = (NZazuDataTableField)testData2.Field;

            sut2.SetValue(sd);
        }
        public void Serialize_And_Deserialize()
        {
            var serializer = new NZazuTableDataXmlSerializer();
            var testData   = GetField();
            var sut        = (NZazuDataTableField)testData.Field;
            var data       = (Dictionary <string, string>)testData.Data;

            // lets assign the data and do some tests
            sut.SetValue(serializer.Serialize(data));
            var actual = serializer.Deserialize(sut.GetValue());

            foreach (var dta in data)
            {
                actual.Should().Contain(dta);
            }

            sut.Validate().IsValid.Should().BeTrue();
            ((DynamicDataTable)sut.ValueControl).LayoutGrid.RowDefinitions.Count.Should().Be(4);
        }
        public void Validate()
        {
            var s    = new NZazuTableDataXmlSerializer();
            var data = new Dictionary <string, string> {
                { "table01_field01__1", "" }, { "table01_field01__2", "world" }
            };
            var dataSerialized = s.Serialize(data);

            // ReSharper disable once UseObjectOrCollectionInitializer
            var sut = new NZazuDataTableField(new FieldDefinition
            {
                Key    = "table01",
                Fields = new[]
                {
                    new FieldDefinition
                    {
                        Key    = "table01_field01", Type = "string",
                        Checks = new[] { new CheckDefinition {
                                             Type = "required"
                                         } }
                    }
                }
            }, ServiceLocator);

            // ReSharper disable once UnusedVariable
            var justToMakeTheCall = sut.ValueControl;

            sut.SetValue(dataSerialized);
            sut.Validate().IsValid.Should().BeFalse();

            // now change the data
            data = new Dictionary <string, string> {
                { "table01_field01__1", "hello" }, { "table01_field01__2", "world" }
            };
            dataSerialized = s.Serialize(data);
            sut.SetValue(dataSerialized);
            sut.Validate().IsValid.Should().BeTrue();
        }
        public void Assign_Data_Multiple_Times()
        {
            var serializer = new NZazuTableDataXmlSerializer();
            var testData   = GetField();
            var sut        = (NZazuDataTableField)testData.Field;
            var data       = (Dictionary <string, string>)testData.Data;
            var sd         = serializer.Serialize(data);

            // lets assign the data
            sut.SetValue(sd);
            ((DynamicDataTable)sut.ValueControl).LayoutGrid.RowDefinitions.Count.Should().Be(4);

            // lets assign other data
            data = new Dictionary <string, string>
            {
                { "table01_field01__1", "Hello" },
                { "table01_field02__1", "True" }
            };
            sd = serializer.Serialize(data);

            sut.SetValue(sd);
            ((DynamicDataTable)sut.ValueControl).LayoutGrid.RowDefinitions.Count.Should().Be(2);
        }