public void ReturnsEmptyList_WhenNoDeltas()
            {
                var originalCustomer = new TestCustomerWithEnum
                {
                    SomeEnum    = TestEnum.Nothing,
                    FirstName   = "neat",
                    LastName    = "name",
                    Age         = 40,
                    DateOfBirth = new DateTime(1979, 12, 8),
                    Account     = new TestAccount()
                };

                var newCustomer = new TestCustomerWithEnum
                {
                    SomeEnum    = TestEnum.Nothing,
                    FirstName   = "neat",
                    LastName    = "name",
                    Age         = 40,
                    DateOfBirth = new DateTime(1979, 12, 8),
                    Account     = new TestAccount
                    {
                        Balance = 23
                    }
                };

                var deltaObjects = DeltaObjectFromObjectGenerator.GetDeltaObjects(originalCustomer, newCustomer);

                Assert.NotNull(deltaObjects);
                Assert.IsType <List <DeltaObject> >(deltaObjects);
                Assert.Empty(deltaObjects);
            }
            public void DetectsDelta_WhenPropertyIsEnum()
            {
                var originalCustomer = new TestCustomerWithEnum
                {
                    Age      = 40,
                    SomeEnum = TestEnum.Nothing
                };

                var newCustomer = new
                {
                    Age      = 41,
                    SomeEnum = TestEnum.Something
                };

                var newCustomerJObj = JObject.FromObject(newCustomer);

                var deltaGroup = DeltaObjectFromJObjectGenerator.GetDeltaObjects(originalCustomer, newCustomerJObj);

                Assert.NotNull(deltaGroup);
                Assert.Equal(GroupValueConversionStatus.NoneFailed, deltaGroup.ValueConversionStatus);
                Assert.Empty(deltaGroup.DeltaObjectsValueConversionFail);
                Assert.Equal(2, deltaGroup.DeltaObjects.Count);
                Assert.Equal(ValueConversionStatus.Success, deltaGroup.DeltaObjects.First(o =>
                                                                                          o.PropertyName == nameof(TestCustomerWithEnum.Age)).ValueConversionStatus);
                Assert.Equal(ValueConversionStatus.Success, deltaGroup.DeltaObjects.First(o =>
                                                                                          o.PropertyName == nameof(TestCustomerWithEnum.SomeEnum)).ValueConversionStatus);
                Assert.Equal(newCustomer.Age, deltaGroup.DeltaObjects.First(o =>
                                                                            o.PropertyName == nameof(TestCustomerWithEnum.Age)).NewValue);
                Assert.Equal(TestEnum.Something, deltaGroup.DeltaObjects.First(o =>
                                                                               o.PropertyName == nameof(TestCustomerWithEnum.SomeEnum)).NewValue);
            }
            public void ReturnsEnumDelta_WhenPropertyHasEnumDelta()
            {
                var originalCustomer = new TestCustomerWithEnum
                {
                    SomeEnum = TestEnum.Nothing
                };

                var newCustomer = new TestCustomerWithEnum
                {
                    SomeEnum = TestEnum.Something
                };

                var deltaObjects = DeltaObjectFromObjectGenerator.GetDeltaObjects(originalCustomer, newCustomer);

                Assert.Single(deltaObjects);
            }