Пример #1
0
        public void TestUpdateDonorLookupThrowsApplicationException()
        {
            _fixture.Request.Headers.Authorization = null;
            var dto = new UpdateDonorDTO
            {
                DonorId       = "123",
                EmailAddress  = "*****@*****.**",
                StripeTokenId = "456"
            };

            var applicationException = new ApplicationException("whoa nelly");

            _donorService.Setup(mocked => mocked.GetContactDonorForEmail("*****@*****.**")).Throws(applicationException);

            try
            {
                _fixture.UpdateDonor(dto);
                Assert.Fail("Expected exception was not thrown");
            }
            catch (Exception e)
            {
                Assert.AreEqual(typeof(HttpResponseException), e.GetType());
            }

            _donorService.VerifyAll();
            _paymentService.VerifyAll();
        }
Пример #2
0
 public IActionResult Update(int donorId, [FromBody] UpdateDonorDTO updateDonor)
 {
     try {
         _donorAppService.Updade(donorId, updateDonor);
         return(Ok());
     }
     catch (KeyNotFoundException) {
         return(NotFound());
     }
 }
Пример #3
0
        public void TestUpdateDonorRegisteredDonor()
        {
            var dto = new UpdateDonorDTO
            {
                DonorId       = "123",
                EmailAddress  = "*****@*****.**",
                StripeTokenId = "456"
            };

            var contactDonor = new MpContactDonor
            {
                DonorId        = 123,
                ContactId      = 789,
                Email          = "*****@*****.**",
                ProcessorId    = "102030",
                RegisteredUser = true,
            };

            var sourceData = new SourceData
            {
                brand       = "Visa",
                last4       = "5432",
                address_zip = "90210",
                exp_month   = "12",
                exp_year    = "19"
            };

            _donorService.Setup(mocked => mocked.GetContactDonorForAuthenticatedUser(It.IsAny <string>())).Returns(contactDonor);
            _paymentService.Setup(mocked => mocked.UpdateCustomerSource(contactDonor.ProcessorId, dto.StripeTokenId))
            .Returns(sourceData);

            var result = _fixture.UpdateDonor(dto);

            _donorService.VerifyAll();
            _paymentService.VerifyAll();

            Assert.NotNull(result);
            Assert.IsInstanceOf <OkNegotiatedContentResult <DonorDTO> >(result);
            var donorDto = ((OkNegotiatedContentResult <DonorDTO>)result).Content;

            Assert.AreEqual(contactDonor.DonorId, donorDto.Id);
            Assert.AreEqual(contactDonor.ProcessorId, donorDto.ProcessorId);
            Assert.AreEqual(contactDonor.RegisteredUser, donorDto.RegisteredUser);
            Assert.IsNotNull(donorDto.DefaultSource.bank_account);
            Assert.IsNotNull(donorDto.DefaultSource.credit_card);
            Assert.AreEqual(sourceData.brand, donorDto.DefaultSource.credit_card.brand);
            Assert.AreEqual(sourceData.last4, donorDto.DefaultSource.credit_card.last4);
            Assert.AreEqual(sourceData.address_zip, donorDto.DefaultSource.credit_card.address_zip);
            Assert.AreEqual(sourceData.exp_month + sourceData.exp_year, donorDto.DefaultSource.credit_card.exp_date);
        }
Пример #4
0
        public void Updade(int donorId, UpdateDonorDTO updateDonor)
        {
            DateTime parsedBirthDate = DateTime.Parse(updateDonor.BirthDate);
            var      donor           = _donorRepository.GetById(donorId);

            donor.Update(updateDonor.FirstName,
                         updateDonor.LastName,
                         parsedBirthDate,
                         updateDonor.RegistrationId,
                         updateDonor.Username,
                         updateDonor.Password,
                         updateDonor.Gender,
                         updateDonor.BloodType
                         );
            _donorRepository.Update(donor);
        }
Пример #5
0
        public void TestUpdateDonorGuestDonor()
        {
            _fixture.Request.Headers.Authorization = null;
            var dto = new UpdateDonorDTO
            {
                DonorId       = "123",
                EmailAddress  = "*****@*****.**",
                StripeTokenId = "456"
            };

            var contactDonor = new MpContactDonor
            {
                DonorId        = 123,
                ContactId      = 789,
                Email          = "*****@*****.**",
                ProcessorId    = "102030",
                RegisteredUser = false,
            };

            var sourceData = new SourceData
            {
                bank_last4     = "5555",
                routing_number = "987654321"
            };

            _donorService.Setup(mocked => mocked.GetContactDonorForEmail("*****@*****.**")).Returns(contactDonor);
            _paymentService.Setup(mocked => mocked.UpdateCustomerSource(contactDonor.ProcessorId, dto.StripeTokenId))
            .Returns(sourceData);

            var result = _fixture.UpdateDonor(dto);

            _donorService.VerifyAll();
            _paymentService.VerifyAll();

            Assert.NotNull(result);
            Assert.IsInstanceOf <OkNegotiatedContentResult <DonorDTO> >(result);
            var donorDto = ((OkNegotiatedContentResult <DonorDTO>)result).Content;

            Assert.AreEqual(contactDonor.DonorId, donorDto.Id);
            Assert.AreEqual(contactDonor.ProcessorId, donorDto.ProcessorId);
            Assert.AreEqual(contactDonor.RegisteredUser, donorDto.RegisteredUser);

            Assert.IsNotNull(donorDto.DefaultSource.credit_card);
            Assert.IsNotNull(donorDto.DefaultSource.bank_account);
            Assert.AreEqual(sourceData.bank_last4, donorDto.DefaultSource.bank_account.last4);
            Assert.AreEqual(sourceData.routing_number, donorDto.DefaultSource.bank_account.routing);
        }
Пример #6
0
        public void TestUpdateDonorStripeUpdateThrowsStripeException()
        {
            _fixture.Request.Headers.Authorization = null;
            var dto = new UpdateDonorDTO
            {
                DonorId       = "123",
                EmailAddress  = "*****@*****.**",
                StripeTokenId = "456"
            };

            var contactDonor = new MpContactDonor
            {
                DonorId        = 123,
                ContactId      = 789,
                Email          = "*****@*****.**",
                ProcessorId    = "102030",
                RegisteredUser = false,
            };

            _donorService.Setup(mocked => mocked.GetContactDonorForEmail("*****@*****.**")).Returns(contactDonor);

            var stripeException = new PaymentProcessorException(HttpStatusCode.PaymentRequired, "auxMessage", "type", "message", "code", "decline", "param");

            _paymentService.Setup(mocked => mocked.UpdateCustomerSource(contactDonor.ProcessorId, dto.StripeTokenId))
            .Throws(stripeException);

            var response = _fixture.UpdateDonor(dto);

            Assert.AreEqual(typeof(RestHttpActionResult <PaymentProcessorErrorResponse>), response.GetType());
            var stripeErrorResponse = (RestHttpActionResult <PaymentProcessorErrorResponse>)response;
            var content             = stripeErrorResponse.Content;

            Assert.AreEqual("type", content.Error.Type);
            Assert.AreEqual("message", content.Error.Message);
            Assert.AreEqual("code", content.Error.Code);
            Assert.AreEqual("decline", content.Error.DeclineCode);
            Assert.AreEqual("param", content.Error.Param);

            _donorService.VerifyAll();
            _paymentService.VerifyAll();
        }