public void DoesNotDetectFalseDelta_WhenDecimalUnchanged()
            {
                var originalCustomer = new TestCustomerWithNullable
                {
                    Account = new TestAccount
                    {
                        Balance = 123
                    },
                    Salary = 12
                };

                var newCustomer = new
                {
                    Account = new
                    {
                        Balance = 321
                    },
                    Salary = 12
                };

                var newCustomerJObj = JObject.FromObject(newCustomer);

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

                Assert.NotNull(deltaGroup);
                Assert.Empty(deltaGroup.DeltaObjects);
                Assert.Empty(deltaGroup.DeltaObjectsValueConversionFail);
                Assert.Equal(GroupValueConversionStatus.NoneFailed, deltaGroup.ValueConversionStatus);
            }
            public void DetectsDelta_WhenDeltaOnNullableProperty()
            {
                var originalCustomer = new TestCustomerWithNullable
                {
                    Account = new TestAccount
                    {
                        Balance = 123
                    }
                };

                var newCustomer = new
                {
                    Account = new
                    {
                        Balance = 321
                    },
                    Salary = 12M
                };

                var newCustomerJObj = JObject.FromObject(newCustomer);

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

                Assert.NotNull(deltaGroup);
                Assert.Equal(GroupValueConversionStatus.NoneFailed, deltaGroup.ValueConversionStatus);
                Assert.Single(deltaGroup.DeltaObjects);
                Assert.Empty(deltaGroup.DeltaObjectsValueConversionFail);
                Assert.Equal(ValueConversionStatus.Success, deltaGroup.DeltaObjects.First(o =>
                                                                                          o.PropertyName == nameof(TestCustomerWithNullable.Salary)).ValueConversionStatus);
                Assert.Equal(newCustomer.Salary, deltaGroup.DeltaObjects.First(o =>
                                                                               o.PropertyName == nameof(TestCustomerWithNullable.Salary)).NewValue);
            }
            public void ReturnsObject_WithNullableNullWhenValueChangedToNull()
            {
                var originalCustomer = new TestCustomerWithNullable
                {
                    Age    = 30,
                    Salary = 100000.45M
                };

                var newCustomer = new TestCustomerWithNullable
                {
                    Age    = 40,
                    Salary = null
                };

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

                Assert.Equal(2, deltaObjects.Count);
                Assert.Null(deltaObjects.First(o => o.PropertyName ==
                                               nameof(TestCustomerWithNullable.Salary)).NewValue);
                Assert.Equal(newCustomer.Age, deltaObjects.First(o => o.PropertyName ==
                                                                 nameof(TestCustomerWithNullable.Age)).NewValue);
            }