Esempio n. 1
0
        public async Task PostExistingCustomerAndAgreement_ShouldReturnOk()
        {
            var customer = await CreateUser();

            var agreement = await CreateAgreement(customer);

            var agreementInterest = new AgreementInterestRequest()
            {
                CustomerId      = agreement.CustomerId,
                AgreementId     = agreement.Id,
                NewBaseRateCode = "VILIBOR6m"
            };

            StringContent agreementInterestData = new StringContent(JsonConvert.SerializeObject(agreementInterest), Encoding.UTF8, "application/json");
            var           result = await(await _client.PostAsync("/agreement/interest", agreementInterestData)).Content.ReadAsAsync <AgreementInterestResponse>();

            Assert.AreEqual(customer.Id, result.Customer.Id);
            Assert.AreEqual(agreement.Id, result.Agreement.Id);
            Assert.NotNull(result.CurrentInterestRate);
            Assert.NotNull(result.NewInterestRate);
            Assert.NotNull(result.InterestDifference);

            await _client.DeleteAsync($"/customer/{customer.Id}");

            await _client.DeleteAsync($"/agreement/{agreement.Id}");
        }
        public async Task <IActionResult> SubmitAgreement([FromBody] AgreementInterestRequest agreementInterestRequest)
        {
            if (!BaseRateCodeExists(agreementInterestRequest.NewBaseRateCode))
            {
                return(new BadRequestResult());
            }

            return(new OkObjectResult(await _agreementService.AgreementInterestChange(agreementInterestRequest)));
        }
Esempio n. 3
0
        public async Task PostNonExistingCustomer_ShouldReturnNotFound()
        {
            var testGuid = Guid.NewGuid();

            var agreementInterest = new AgreementInterestRequest()
            {
                CustomerId      = testGuid,
                AgreementId     = testGuid,
                NewBaseRateCode = "VILIBOR6m"
            };

            StringContent agreementInterestData = new StringContent(JsonConvert.SerializeObject(agreementInterest), Encoding.UTF8, "application/json");
            var           result = await _client.PostAsync("/agreement/interest", agreementInterestData);

            Assert.AreEqual(HttpStatusCode.NotFound, result.StatusCode);
        }
Esempio n. 4
0
        public async Task <AgreementInterestResponse> AgreementInterestChange(AgreementInterestRequest model)
        {
            var customer = await _customerRepository.GetById(model.CustomerId);

            var agreement = await GetById(model.AgreementId);

            var currentInterestRate = await _vilibidClient.GetBaseRateValue(agreement.BaseRateCode) + agreement.Margin;

            var newInterestRate = await _vilibidClient.GetBaseRateValue(model.NewBaseRateCode) + agreement.Margin;

            return(new AgreementInterestResponse()
            {
                Customer = customer,
                Agreement = agreement,
                CurrentInterestRate = currentInterestRate,
                NewInterestRate = newInterestRate,
                InterestDifference = currentInterestRate - newInterestRate
            });
        }
Esempio n. 5
0
        public async Task PostNonExistingBaseRateCode_ShouldReturnBadRequest()
        {
            var customer = await CreateUser();

            var agreement = await CreateAgreement(customer);

            var agreementInterest = new AgreementInterestRequest()
            {
                CustomerId      = customer.Id,
                AgreementId     = agreement.Id,
                NewBaseRateCode = "test"
            };

            StringContent agreementInterestData = new StringContent(JsonConvert.SerializeObject(agreementInterest), Encoding.UTF8, "application/json");
            var           result = await _client.PostAsync("/agreement/interest", agreementInterestData);

            Assert.AreEqual(HttpStatusCode.BadRequest, result.StatusCode);

            await _client.DeleteAsync($"/customer/{customer.Id}");

            await _client.DeleteAsync($"/agreement/{agreement.Id}");
        }