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"); }
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")); }
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); }
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()); }
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"); }
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()); }
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"); }
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")); }
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) } ); }