public void NestedDictionaryNullToRight()
        {
            var obj1 = new TestItem {
                Name = "Test", Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "B"
                }
            };
            var obj2 = new TestItem {
                Name = "Test", Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "C"
                }
            };

            var fixture = new Fixture();

            var minisDictionary = new Dictionary <string, TestMiniItem>();

            fixture.CreateMany <KeyValuePair <string, TestMiniItem> >().ToList().ForEach(kvp => minisDictionary.Add(kvp.Key, kvp.Value));

            obj1.MinisDictionary = minisDictionary;
            obj2.MinisDictionary = null;

            var model = new MutationModel <TestItem> {
                OldImage = obj1, NewImage = obj2
            };
            var diff = model.Diff();

            Assert.Equal(5, diff.Count);
            Assert.Contains(diff, p => p == "Address");
            Assert.Contains(diff, p => p == "Address.AddressRow1");
            Assert.Contains(diff, p => p == "MinisDictionary");
            Assert.Contains(diff, p => p == "MinisDictionary.Id");
            Assert.Contains(diff, p => p == "MinisDictionary.Message");
        }
        public void NestedListObjectNullToRight()
        {
            var obj1 = new TestItem {
                Name = "Test", Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "B"
                }
            };

            var fixture = new Fixture();

            obj1.Enums = new List <TestEnum>()
            {
                TestEnum.One,
                TestEnum.Two,
                TestEnum.Three
            };

            var model = new MutationModel <TestItem> {
                OldImage = obj1, NewImage = null
            };
            var diff = model.Diff();

            Assert.Equal(7, diff.Count);
            Assert.Contains(diff, p => p == "Address");
            Assert.Contains(diff, p => p == "Address.AddressRow1");
            Assert.Contains(diff, p => p == "Enums");
        }
示例#3
0
        public void NestedDictionaryNullToLeft()
        {
            var obj1 = new TestItem {
                Name = "Test", Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "B"
                }
            };
            var obj2 = new TestItem {
                Name = "Test", Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "C"
                }
            };

            var fixture = new Fixture();


            obj1.MinisDictionary = null;
            obj2.MinisDictionary = new Dictionary <string, TestMiniItem>(fixture.CreateMany <KeyValuePair <string, TestMiniItem> >());

            var model = new MutationModel <TestItem> {
                OldImage = obj1, NewImage = obj2
            };
            var diff = model.Diff();

            Assert.Equal(5, diff.Count);
            Assert.True(diff.Any(p => p == "Address"));
            Assert.True(diff.Any(p => p == "Address.AddressRow1"));
            Assert.True(diff.Any(p => p == "MinisDictionary"));
            Assert.True(diff.Any(p => p == "MinisDictionary.Id"));
            Assert.True(diff.Any(p => p == "MinisDictionary.Message"));
        }
示例#4
0
        public void NestedListQuantityChanged()
        {
            var obj1 = new TestItem {
                Name = "Test", Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "B"
                }
            };
            var obj2 = new TestItem {
                Name = "Test", Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "C"
                }
            };

            var fixture = new Fixture();
            var minis   = fixture.CreateMany <TestMiniItem>(10).ToList();

            obj1.Minis = minis;
            obj2.Minis = minis.Skip(1).ToList();

            var model = new MutationModel <TestItem> {
                OldImage = obj1, NewImage = obj2
            };
            var diff = model.Diff();

            Assert.Equal(5, diff.Count);
            Assert.True(diff.Any(p => p == "Address"));
            Assert.True(diff.Any(p => p == "Address.AddressRow1"));
            Assert.True(diff.Any(p => p == "Minis"));
            Assert.True(diff.Any(p => p == "Minis.Id"));
            Assert.True(diff.Any(p => p == "Minis.Message"));
        }
        public void NestedListNullToRight()
        {
            var obj1 = new TestItem {
                Name = "Test", Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "B"
                }
            };
            var obj2 = new TestItem {
                Name = "Test", Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "C"
                }
            };

            var fixture = new Fixture();

            obj1.Minis = fixture.CreateMany <TestMiniItem>(10).ToList();
            obj2.Minis = null;

            // obj2.Minis.Add(fixture.Create<TestMiniItem>());

            var model = new MutationModel <TestItem> {
                OldImage = obj1, NewImage = obj2
            };
            var diff = model.Diff();

            Assert.Equal(5, diff.Count);
            Assert.Contains(diff, p => p == "Address");
            Assert.Contains(diff, p => p == "Address.AddressRow1");
            Assert.Contains(diff, p => p == "Minis");
            Assert.Contains(diff, p => p == "Minis.Id");
            Assert.Contains(diff, p => p == "Minis.Message");
        }
        public void DateTimeTest()
        {
            var fixture = new Fixture();
            var item    = fixture.Create <TestDateTime>();
            var item2   = fixture.Create <TestDateTime>();
            var model   = new MutationModel <TestDateTime> {
                OldImage = item, NewImage = item2
            };
            var diff = model.Diff();

            Assert.Equal(2, diff.Count);
        }
示例#7
0
        public void DoubleListTest_RightSideNullShouldDiff()
        {
            var fixture = new Fixture();
            var item    = fixture.Create <TestItem>();

            item.DoubleList = fixture.Create <List <double> >();

            var model = new MutationModel <TestItem> {
                OldImage = item, NewImage = null
            };
            var diff = model.Diff();

            Assert.True(diff.Any(p => p == "DoubleList"));
        }
        public void NullToLeft()
        {
            TestItem obj1 = null;
            var      obj2 = new TestItem {
                Name = "Test", Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "B"
                }
            };
            var model = new MutationModel <TestItem> {
                OldImage = obj1, NewImage = obj2
            };

            Assert.NotEmpty(model.Diff());
        }
示例#9
0
        public void NullToRight()
        {
            var obj1 = new TestItem {
                Name = "Test", Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "B"
                }
            };
            TestItem obj2  = null;
            var      model = new MutationModel <TestItem> {
                OldImage = obj1, NewImage = obj2
            };

            Assert.NotEqual(0, model.Diff().Count);
        }
        public void DateTimeListTest_RightSideNullShouldDiff()
        {
            var fixture = new Fixture();
            var item    = fixture.Create <TestItem>();

            item.DateTimeList = fixture.Create <List <DateTime> >();

            var model = new MutationModel <TestItem> {
                OldImage = item, NewImage = null
            };
            var diff = model.Diff();

            Assert.Contains(diff, p => p == "DateTimeList");
        }
        public void StringArrayTest()
        {
            var fixture = new Fixture();
            var item    = fixture.Create <TestItemWithStringArray>();

            var json  = JsonConvert.SerializeObject(item);
            var item2 = JsonConvert.DeserializeObject <TestItemWithStringArray>(json);

            var model = new MutationModel <TestItemWithStringArray> {
                OldImage = item, NewImage = item2
            };
            var diff = model.Diff();

            Assert.Empty(diff);
        }
        public void DynamicTest()
        {
            var fixture = new Fixture();
            var item    = fixture.Create <TestItemDynamic>();
            var json    = JsonConvert.SerializeObject(item);
            var item2   = JsonConvert.DeserializeObject <TestItemDynamic>(json);

            item2.DynamicItem = fixture.Create <TestAddress>();

            var model = new MutationModel <TestItemDynamic> {
                OldImage = item, NewImage = item2
            };
            var diff = model.Diff();

            Assert.Equal(3, diff.Count);
            Assert.Contains(diff, p => p == "DynamicItem");
        }
        public void DateTimeListTest_ShouldNotDiff()
        {
            var fixture = new Fixture();
            var item    = fixture.Create <TestItem>();

            item.DateTimeList = fixture.Create <List <DateTime> >();

            var json  = JsonConvert.SerializeObject(item);
            var item2 = JsonConvert.DeserializeObject <TestItem>(json);

            var model = new MutationModel <TestItem> {
                OldImage = item, NewImage = item2
            };
            var diff = model.Diff();

            Assert.DoesNotContain(diff, p => p == "DateTimeList");
        }
        public void EnumTest()
        {
            var fixture = new Fixture();
            var item    = fixture.Create <TestItem>();
            var json    = JsonConvert.SerializeObject(item);
            var item2   = JsonConvert.DeserializeObject <TestItem>(json);

            item2.TestEnum = TestEnum.Three;

            var model = new MutationModel <TestItem> {
                OldImage = item, NewImage = item2
            };
            var diff = model.Diff();

            Assert.Single(diff);
            Assert.Contains(diff, p => p == "TestEnum");
        }
示例#15
0
        public void DoubleListTest_ShouldNotDiff()
        {
            var fixture = new Fixture();
            var item    = fixture.Create <TestItem>();

            item.DoubleList = fixture.Create <List <double> >();

            var json  = JsonConvert.SerializeObject(item);
            var item2 = JsonConvert.DeserializeObject <TestItem>(json);

            var model = new MutationModel <TestItem> {
                OldImage = item, NewImage = item2
            };
            var diff = model.Diff();

            Assert.False(diff.Any(p => p == "DoubleList"));
        }
        public void RHSPropertiesNull()
        {
            var obj1 = new TestItem {
                Name = "Test", Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "B"
                }
            };
            var obj2 = new TestItem {
                Name = null, Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "B"
                }
            };
            var model = new MutationModel <TestItem> {
                OldImage = obj1, NewImage = obj2
            };

            Assert.Single(model.Diff());
        }
示例#17
0
        public void LHSPropertyNull()
        {
            var obj1 = new TestItem {
                Name = null, Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "B"
                }
            };
            var obj2 = new TestItem {
                Name = "Test", Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "B"
                }
            };
            var model = new MutationModel <TestItem> {
                OldImage = obj1, NewImage = obj2
            };

            Assert.Equal(1, model.Diff().Count);
        }
        public void IdenticalModels()
        {
            var obj1 = new TestItem {
                Name = "TestName", Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "B"
                }
            };
            var obj2 = new TestItem {
                Name = "TestName", Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "B"
                }
            };
            var model = new MutationModel <TestItem> {
                OldImage = obj1, NewImage = obj2
            };

            Assert.Empty(model.Diff());
        }
        public void IntListTest_ShouldDiff()
        {
            var fixture = new Fixture();
            var item    = fixture.Create <TestItem>();

            item.IntList = fixture.Create <List <int> >();

            var json  = JsonConvert.SerializeObject(item);
            var item2 = JsonConvert.DeserializeObject <TestItem>(json);

            item2.IntList = fixture.Create <List <int> >();

            var model = new MutationModel <TestItem> {
                OldImage = item, NewImage = item2
            };
            var diff = model.Diff();

            Assert.Single(diff);
            Assert.Contains(diff, p => p == "IntList");
        }
示例#20
0
        public void EnumListTest()
        {
            var fixture = new Fixture();
            var item    = fixture.Create <TestItem>();

            item.Enums = fixture.Create <List <TestEnum> >();

            var json  = JsonConvert.SerializeObject(item);
            var item2 = JsonConvert.DeserializeObject <TestItem>(json);

            item2.Enums.Reverse();

            var model = new MutationModel <TestItem> {
                OldImage = item, NewImage = item2
            };
            var diff = model.Diff();

            Assert.Equal(1, diff.Count);
            Assert.True(diff.Any(p => p == "Enums"));
        }
示例#21
0
        public void DateTimeListTest_ShouldDiff()
        {
            var fixture = new Fixture();
            var item    = fixture.Create <TestItem>();

            item.DateTimeList = fixture.Create <List <DateTime> >();

            var json  = JsonConvert.SerializeObject(item);
            var item2 = JsonConvert.DeserializeObject <TestItem>(json);

            item2.DateTimeList = fixture.Create <List <DateTime> >();

            var model = new MutationModel <TestItem> {
                OldImage = item, NewImage = item2
            };
            var diff = model.Diff();

            Assert.Equal(1, diff.Count);
            Assert.True(diff.Any(p => p == "DateTimeList"));
        }
        public void RootItemChanged()
        {
            var obj1 = new TestItem {
                Name = "Test", Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "B"
                }
            };
            var obj2 = new TestItem {
                Name = "Test2", Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "B"
                }
            };

            var model = new MutationModel <TestItem> {
                OldImage = obj1, NewImage = obj2
            };

            Assert.Single(model.Diff());
            Assert.Equal("Name", model.Diff()[0]);
        }
        public void NestedItemChanged()
        {
            var obj1 = new TestItem {
                Name = "Test", Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "B"
                }
            };
            var obj2 = new TestItem {
                Name = "Test", Age = 10, CreationDate = DateTime.Today, Address = new TestAddress {
                    AddressRow1 = "C"
                }
            };

            var model = new MutationModel <TestItem> {
                OldImage = obj1, NewImage = obj2
            };
            var diff = model.Diff();

            Assert.Equal(2, diff.Count);
            Assert.Contains(diff, p => p == "Address");
            Assert.Contains(diff, p => p == "Address.AddressRow1");
        }
        public static void AddMutation <T>(this PublishRequest request, T oldImage, T newImage, string eventType = null) where T : class, new()
        {
            var model = new MutationModel <T>
            {
                OldImage  = oldImage,
                NewImage  = newImage,
                EventType = eventType
            };

            request.Message = JsonConvert.SerializeObject(model);

            var diff = model.Diff();

            request.MessageAttributes.Add(
                Constants.UpdatedProperties,
                new MessageAttributeValue
            {
                DataType    = "String.Array",
                StringValue = JsonConvert.SerializeObject(diff)
            }
                );
        }