Exemple #1
0
        public void PaymentInstrumentsIsNotNullAndEmptyOnCreationOfNewMedicalVendorPayment()
        {
            var payment = new MedicalVendorPayment();

            Assert.IsNotNull(payment.PaymentInstruments);
            Assert.IsEmpty(payment.PaymentInstruments);
        }
Exemple #2
0
        public void MakePaymentDoesNotBombWhenAllParametersAreCorrectAndPersistenceSucceeds()
        {
            var dataRecorderMetaData = new DataRecorderMetaData
            {
                DataRecorderCreator  = new OrganizationRoleUser(),
                DataRecorderModifier = new OrganizationRoleUser()
            };
            var check = new Check {
                DataRecorderMetaData = dataRecorderMetaData
            };
            var medicalVendorPayment = new MedicalVendorPayment
            {
                PaymentInstruments = new List <PaymentInstrument> {
                    check
                }
            };
            var medicalVendorPaymentEntity = new PhysicianPaymentEntity();

            ExpectGetDataAccessAdapterAndDispose();
            ExpectSaveEntity(true, true, medicalVendorPaymentEntity);
            ExpectSaveEntityTransaction(medicalVendorPayment, medicalVendorPaymentEntity, false);
            ExpectSaveEntityCollection(_validInvoiceIds.Count);
            ExpectSaveEntity(true, true);
            ExpectSaveEntity(true);
            Expect.Call(_validator.IsValid(medicalVendorPayment)).Return(true);

            _mocks.ReplayAll();
            _medicalVendorPaymentRepository.MakePayment(medicalVendorPayment, _validInvoiceIds);
            _mocks.VerifyAll();
        }
Exemple #3
0
        public void MakePaymentPersistsPaymentToStorageWhenEverythingIsValid()
        {
            DataRecorderMetaData dataRecorderMetaData = _dataRecorderMetaDataFactory.
                                                        CreateDataRecorderMetaData(VALID_ORGANIZATION_ROLE_USER);

            var check = new Check
            {
                DataRecorderMetaData = dataRecorderMetaData,
                Amount    = 5.01m,
                PayableTo = "PayableTo"
            };

            var medicalVendorPayment = new MedicalVendorPayment
            {
                DataRecorderMetaData = dataRecorderMetaData,
                PaymentStatus        = PaymentStatus.Unpaid,
            };

            medicalVendorPayment.PaymentInstruments.Add(check);
            var medicalVendorInvoiceIdsToApplyPaymentTo = new List <long> {
                VALID_MEDICAL_VENDOR_INVOICE_ID
            };

            _medicalVendorPaymentRepository.MakePayment(medicalVendorPayment, medicalVendorInvoiceIdsToApplyPaymentTo);
        }
Exemple #4
0
        public void MakePaymentThrowsExceptionWhenPaymentInstrumentCollectionIsEmpty()
        {
            var medicalVendorPayment = new MedicalVendorPayment();

            medicalVendorPayment.PaymentInstruments.Clear();

            _mocks.ReplayAll();
            _medicalVendorPaymentRepository.MakePayment(medicalVendorPayment, _validInvoiceIds);
            _mocks.VerifyAll();
        }
Exemple #5
0
        public void PaymentAmountReturnsAmountOfSinglePaymentInstrument()
        {
            var payment = new MedicalVendorPayment();

            payment.PaymentInstruments.Add(new Check {
                Amount = 25m
            });
            decimal expectedPaymentAmount = payment.PaymentInstruments[0].Amount;

            Assert.AreEqual(expectedPaymentAmount, payment.PaymentAmount);
        }
Exemple #6
0
        public void MakePaymentThrowsExceptionWhenPaymentIsNotValid()
        {
            var medicalVendorPayment = new MedicalVendorPayment
            {
                PaymentInstruments = new List <PaymentInstrument> {
                    new Check()
                }
            };

            Expect.Call(_validator.IsValid(medicalVendorPayment)).Return(false);
            Expect.Call(_validator.GetBrokenRuleErrorMessages()).Return(new List <string>());

            _mocks.ReplayAll();
            _medicalVendorPaymentRepository.MakePayment(medicalVendorPayment, _validInvoiceIds);
            _mocks.VerifyAll();
        }
Exemple #7
0
        public void PaymentAmountReturnsSumOfThreePaymentInstrumentAmounts()
        {
            var payment = new MedicalVendorPayment();

            payment.PaymentInstruments.Add(new Check {
                Amount = 25m
            });
            payment.PaymentInstruments.Add(new Check {
                Amount = 55m
            });
            payment.PaymentInstruments.Add(new Check {
                Amount = 33m
            });
            decimal expectedPaymentAmount = payment.PaymentInstruments.Sum(p => p.Amount);

            Assert.AreEqual(expectedPaymentAmount, payment.PaymentAmount);
        }
Exemple #8
0
        public void GetMedicalVendorPaymentReturnsMedicalVendorPaymentForExistingId()
        {
            const int  medicalVendorPaymentId       = 34;
            const bool medicalVendorPaymentIdExists = true;

            ExpectGetDataAccessAdapterAndDispose();
            ExpectFetchEntity(medicalVendorPaymentIdExists);
            ExpectGetPaymentInstrumentsForMedicalVendorPayment(medicalVendorPaymentId);
            ExpectCreateMedicalVendorPayment();

            _mocks.ReplayAll();
            MedicalVendorPayment medicalVendorPayment = _medicalVendorPaymentRepository.
                                                        GetMedicalVendorPayment(medicalVendorPaymentId);

            _mocks.VerifyAll();

            Assert.IsNotNull(medicalVendorPayment, "No medical vendor payment was returned.");
        }
Exemple #9
0
        public void MakePaymentThrowsExceptionWhenSavingPaymentToPersistenceFails()
        {
            var medicalVendorPayment = new MedicalVendorPayment
            {
                PaymentInstruments = new List <PaymentInstrument> {
                    new Check()
                }
            };
            var medicalVendorPaymentEntity = new PhysicianPaymentEntity();

            ExpectGetDataAccessAdapterAndDispose();
            ExpectSaveEntity(false, true, medicalVendorPaymentEntity);
            ExpectSaveEntityTransaction(medicalVendorPayment, medicalVendorPaymentEntity, true);
            Expect.Call(_validator.IsValid(medicalVendorPayment)).Return(true);

            _mocks.ReplayAll();
            _medicalVendorPaymentRepository.MakePayment(medicalVendorPayment, _validInvoiceIds);
            _mocks.VerifyAll();
        }
        public void MapSetsPaymentStatusToByteValueOfUnpaidWhenUnpaidGiven()
        {
            var medicalVendorPayment = new MedicalVendorPayment
            {
                PaymentStatus        = PaymentStatus.Unpaid,
                DataRecorderMetaData = new DataRecorderMetaData
                {
                    DataRecorderCreator = new OrganizationRoleUser(3), DateCreated = new DateTime()
                }
            };

            _mocks.ReplayAll();
            PhysicianPaymentEntity medicalVendorPaymentEntity = _mapper.Map(medicalVendorPayment);

            _mocks.VerifyAll();

            Assert.AreEqual((byte)medicalVendorPayment.PaymentStatus,
                            medicalVendorPaymentEntity.PaymentStatus);
        }
        public MedicalVendorPayment GetMedicalVendorPayment(int medicalVendorPaymentId)
        {
            var physicianPaymentEntity = new PhysicianPaymentEntity(medicalVendorPaymentId);

            using (var myAdapter = PersistenceLayer.GetDataAccessAdapter())
            {
                if (!myAdapter.FetchEntity(physicianPaymentEntity))
                {
                    throw new ObjectNotFoundInPersistenceException <MedicalVendorPayment>
                              (medicalVendorPaymentId);
                }
            }
            var paymentInstruments = _paymentInstrumentRepository.
                                     GetPaymentInstrumentsForPayment(medicalVendorPaymentId);
            MedicalVendorPayment medicalVendorPayment = _mapper.Map(physicianPaymentEntity);

            medicalVendorPayment.PaymentInstruments = paymentInstruments;
            return(medicalVendorPayment);
        }
        public void MapSetsModifierIdAndDateToNullWhenModifierIsNull()
        {
            var medicalVendorPayment = new MedicalVendorPayment
            {
                DataRecorderMetaData = new DataRecorderMetaData
                {
                    DataRecorderCreator = new OrganizationRoleUser(3), DateCreated = new DateTime()
                }
            };

            medicalVendorPayment.DataRecorderMetaData.DataRecorderModifier = null;

            _mocks.ReplayAll();
            PhysicianPaymentEntity medicalVendorPaymentEntity = _mapper.Map(medicalVendorPayment);

            _mocks.VerifyAll();

            Assert.IsNull(medicalVendorPaymentEntity.DataRecoderModifierId);
            Assert.IsNull(medicalVendorPaymentEntity.DateModifed);
        }
        public void MapMapsPaymentPropertiesToCorrectEntityProperties()
        {
            var medicalVendorPayment = new MedicalVendorPayment(3)
            {
                Notes = "Notes",
                DataRecorderMetaData = new DataRecorderMetaData
                {
                    DataRecorderCreator = new OrganizationRoleUser(3), DateCreated = new DateTime()
                }
            };

            _mocks.ReplayAll();
            PhysicianPaymentEntity medicalVendorPaymentEntity = _mapper.Map(medicalVendorPayment);

            _mocks.VerifyAll();

            Assert.AreEqual(medicalVendorPayment.Id, medicalVendorPaymentEntity.PhysicianPaymentId);
            Assert.AreEqual(medicalVendorPayment.Notes, medicalVendorPaymentEntity.Notes);
            Assert.AreEqual(medicalVendorPayment.DataRecorderMetaData.DataRecorderCreator.Id,
                            medicalVendorPaymentEntity.DataRecoderCreatorId);
            Assert.AreEqual(medicalVendorPayment.DataRecorderMetaData.DateCreated,
                            medicalVendorPaymentEntity.DateCreated);
        }
 public void TearDown()
 {
     _medicalVendorPayment          = null;
     _medicalVendorPaymentValidator = null;
 }
Exemple #15
0
        public void PaymentAmountReturns0WhenPaymentInstrumentsCollectionIsEmpty()
        {
            var payment = new MedicalVendorPayment();

            Assert.AreEqual(0m, payment.PaymentAmount);
        }
Exemple #16
0
 private void ExpectSaveEntityTransaction(MedicalVendorPayment medicalVendorPayment,
                                          PhysicianPaymentEntity medicalVendorPaymentEntity, bool rollBack)
 {
     Expect.Call(_mockedMapper.Map(medicalVendorPayment)).Return(medicalVendorPaymentEntity);
     ExpectTransaction("MedicalVendorPaymentRepository.MakePayment", !rollBack);
 }
 public void SetUp()
 {
     _medicalVendorPayment          = GetValidMedicalVendorPayment();
     _medicalVendorPaymentValidator = new Validator <MedicalVendorPayment>(new MedicalVendorPaymentValidationRuleFactory());
 }
        public void MakePayment(MedicalVendorPayment medicalVendorPayment, List <long>
                                medicalVendorInvoiceIdsToApplyPaymentTo)
        {
            if (medicalVendorPayment == null)
            {
                throw new ArgumentNullException("medicalVendorPayment");
            }
            if (medicalVendorInvoiceIdsToApplyPaymentTo == null)
            {
                throw new ArgumentNullException("medicalVendorInvoiceIdsToApplyPaymentTo");
            }
            if (medicalVendorPayment.PaymentInstruments.Count == 0 ||
                medicalVendorInvoiceIdsToApplyPaymentTo.Count == 0)
            {
                throw new EmptyCollectionException();
            }

            if (!_validator.IsValid(medicalVendorPayment))
            {
                throw new InvalidObjectException <MedicalVendorPayment>(_validator);
            }

            PhysicianPaymentEntity medicalVendorPaymentEntity = _mapper.Map(medicalVendorPayment);

            using (var myAdapter = PersistenceLayer.GetDataAccessAdapter())
            {
                myAdapter.StartTransaction(IsolationLevel.ReadCommitted,
                                           "MedicalVendorPaymentRepository.MakePayment");
                try
                {
                    // Persist payment.
                    if (!myAdapter.SaveEntity(medicalVendorPaymentEntity, true))
                    {
                        throw new PersistenceFailureException();
                    }

                    // Persist payment instrument(s) & associate with payment.
                    foreach (Check check in medicalVendorPayment.PaymentInstruments)
                    {
                        long?dataRecoderModifierId = null;
                        if (check.DataRecorderMetaData.DataRecorderModifier != null)
                        {
                            dataRecoderModifierId = check.DataRecorderMetaData.DataRecorderModifier.Id;
                        }
                        var checkEntity = new CheckEntity
                        {
                            AccountNumber         = check.AccountNumber,
                            CheckNumber           = check.CheckNumber,
                            RoutingNumber         = check.RoutingNumber,
                            BankName              = check.BankName,
                            Memo                  = check.Memo,
                            DataRecoderCreatorId  = check.DataRecorderMetaData.DataRecorderCreator.Id,
                            DateCreated           = check.DataRecorderMetaData.DateCreated,
                            DataRecoderModifierId = dataRecoderModifierId,
                            DateModified          = check.DataRecorderMetaData.DateModified,
                            Amount                = check.Amount,
                            PayableTo             = check.PayableTo,
                            CheckDate             = check.CheckDate
                        };
                        if (!myAdapter.SaveEntity(checkEntity, true))
                        {
                            throw new PersistenceFailureException();
                        }
                        var paymentCheckDetailEntity = new MVPaymentCheckDetailsEntity(checkEntity.CheckId,
                                                                                       medicalVendorPaymentEntity.PhysicianPaymentId);
                        if (!myAdapter.SaveEntity(paymentCheckDetailEntity))
                        {
                            throw new PersistenceFailureException();
                        }
                    }

                    // Associate payment with invoice(s).
                    long medicalVendorPaymentId = medicalVendorPaymentEntity.PhysicianPaymentId;
                    var  medicalVendorPaymentInvoiceEntities =
                        new EntityCollection <PhysicianPaymentInvoiceEntity>();
                    foreach (var medicalVendorInvoiceId in medicalVendorInvoiceIdsToApplyPaymentTo)
                    {
                        medicalVendorPaymentInvoiceEntities.Add(new PhysicianPaymentInvoiceEntity
                                                                    (medicalVendorPaymentId, medicalVendorInvoiceId));
                    }
                    myAdapter.SaveEntityCollection(medicalVendorPaymentInvoiceEntities);
                    myAdapter.Commit();
                }
                catch (Exception)
                {
                    myAdapter.Rollback();
                    throw;
                }
            }
        }