diff --git a/EvoCalculator.Core.Calculation/v1/Validation.cs b/EvoCalculator.Core.Calculation/v1/Validation.cs index 9fbbe04..8ac3852 100644 --- a/EvoCalculator.Core.Calculation/v1/Validation.cs +++ b/EvoCalculator.Core.Calculation/v1/Validation.cs @@ -1,4 +1,5 @@ -using System.Collections.Generic; +using System; +using System.Collections.Generic; using EvoCalculator.Core.Models.Calculation.Models.Request; namespace EvoCalculator.Core.Calculation.v1 @@ -33,7 +34,7 @@ namespace EvoCalculator.Core.Calculation.v1 "Некорректно указана Дата второго платежа, она не может быть раньше Даты заключения ДЛ"); } - if ((preparedValues.FirstPaymentSum / preparedValues.AcceptSum) > 0.5m) + if (preparedValues.FirstPaymentSum / preparedValues.AcceptSum >= 0.500001m) { errors.Add("Первый платеж по графику более 50% от стоимости ПЛ с учетом скидки. Необходимо уменьшить первый платеж"); } diff --git a/EvoCalculator.Core.Tests/Calculation/ValidationTests.cs b/EvoCalculator.Core.Tests/Calculation/ValidationTests.cs new file mode 100644 index 0000000..750f54e --- /dev/null +++ b/EvoCalculator.Core.Tests/Calculation/ValidationTests.cs @@ -0,0 +1,162 @@ +using System; +using EvoCalculator.Core.Calculation.v1; +using EvoCalculator.Core.Models.Calculation.Models.Prepared; +using EvoCalculator.Core.Models.Calculation.Models.Request; +using Xunit; + +namespace EvoCalculator.Core.Tests.Calculation +{ + public class ValidationTests + { + [Fact] + public void ValidationTest1() + { + var requestCalculation = new RequestCalculation() + { + preparedValues = new PreparedValues() + { + AcceptSum = 791666.6666666667m, + FirstPaymentSum = 395833.3333333334m, + + Nmper = 5, + IrrExpected = 5, + Discount = 5, ComissionRub = 5, + PaymentDateNew = DateTime.Today.AddDays(1), + DogDate = DateTime.Now, + } + }; + var errors = new Validation().ValidatePreparedData(requestCalculation); + Assert.Empty(errors); + } + + [Fact] + public void ValidationTest2() + { + var requestCalculation = new RequestCalculation() + { + preparedValues = new PreparedValues() + { + AcceptSum = 691666.6666666667m, + FirstPaymentSum = 345833.3333333334m, + + Nmper = 5, + IrrExpected = 5, + Discount = 5, ComissionRub = 5, + PaymentDateNew = DateTime.Today.AddDays(1), + DogDate = DateTime.Now, + } + }; + var errors = new Validation().ValidatePreparedData(requestCalculation); + Assert.Empty(errors); + } + + [Fact] + public void ValidationTest3() + { + var requestCalculation = new RequestCalculation() + { + preparedValues = new PreparedValues() + { + AcceptSum = 6862036.016666667m, + FirstPaymentSum = 3431018.0083333333m, + + Nmper = 5, + IrrExpected = 5, + Discount = 5, ComissionRub = 5, + PaymentDateNew = DateTime.Today.AddDays(1), + DogDate = DateTime.Now, + } + }; + var errors = new Validation().ValidatePreparedData(requestCalculation); + Assert.Empty(errors); + } + + [Fact] + public void ValidationTest4() + { + var requestCalculation = new RequestCalculation() + { + preparedValues = new PreparedValues() + { + AcceptSum = 6862036.016666667m, + FirstPaymentSum = 3431024.87036935m, + + Nmper = 5, + IrrExpected = 5, + Discount = 5, ComissionRub = 5, + PaymentDateNew = DateTime.Today.AddDays(1), + DogDate = DateTime.Now, + } + }; + + var errors = new Validation().ValidatePreparedData(requestCalculation); + Assert.Empty(errors); + } + + [Fact] + public void ValidationTest5() + { + var requestCalculation = new RequestCalculation() + { + preparedValues = new PreparedValues() + { + AcceptSum = 6862036.016666667m, + FirstPaymentSum = 3499645.23053601m, + + Nmper = 5, + IrrExpected = 5, + Discount = 5, ComissionRub = 5, + PaymentDateNew = DateTime.Today.AddDays(1), + DogDate = DateTime.Now, + } + }; + + var errors = new Validation().ValidatePreparedData(requestCalculation); + Assert.NotEmpty(errors); + } + + [Fact] + public void ValidationTest6() + { + var requestCalculation = new RequestCalculation() + { + preparedValues = new PreparedValues() + { + AcceptSum = 6862036.016666667m, + FirstPaymentSum = 3498952.23351869m, + + Nmper = 5, + IrrExpected = 5, + Discount = 5, ComissionRub = 5, + PaymentDateNew = DateTime.Today.AddDays(1), + DogDate = DateTime.Now, + } + }; + + var errors = new Validation().ValidatePreparedData(requestCalculation); + Assert.NotEmpty(errors); + } + + [Fact] + public void ValidationTest7() + { + var requestCalculation = new RequestCalculation() + { + preparedValues = new PreparedValues() + { + AcceptSum = 6862036.016666667m, + FirstPaymentSum = 1372407.20333333m, + + Nmper = 5, + IrrExpected = 5, + Discount = 5, ComissionRub = 5, + PaymentDateNew = DateTime.Today.AddDays(1), + DogDate = DateTime.Now, + } + }; + + var errors = new Validation().ValidatePreparedData(requestCalculation); + Assert.Empty(errors); + } + } +} \ No newline at end of file