public async Task PaymentComplete_PaymentReceivedDateNotSet_AddsDateToAssessment()
        {
            var newDate = NewDate;
            var data = GetNotificationTransactionData(newDate);
            data.Credit = 100.00m;

            var message = new AddNotificationTransaction(data);

            await handler.HandleAsync(message);

            Assert.Equal(newDate, context.NotificationAssessments.Single().Dates.PaymentReceivedDate);
        }
        public async Task PaymentComplete_PaymentReceivedDateSet_AddsDateToAssessment()
        {
            ObjectInstantiator<NotificationDates>.SetProperty(x => x.PaymentReceivedDate, existingDate, assessment.Dates);

            var data = GetNotificationTransactionData(NewDate);
            data.Credit = 100.00m;
            
            var message = new AddNotificationTransaction(data);

            await handler.HandleAsync(message);

            Assert.Equal(existingDate, context.NotificationAssessments.Single().Dates.PaymentReceivedDate);
        }
        private AddNotificationTransaction GetAddNotificationTransaction(DateTime date, decimal?credit, decimal?debit)
        {
            var transactionData =
                new NotificationTransactionData
            {
                Date           = date,
                Credit         = credit,
                Debit          = debit,
                NotificationId = NotificationId,
                PaymentMethod  = PaymentMethod.BacsChaps
            };

            var message = new AddNotificationTransaction(transactionData);

            transactions.Add(new NotificationTransaction(transactionData));

            return(message);
        }
        public async Task PaymentComplete_RefundMade_PaymentCompletedAgain_DoesNotAddDateToAssessment()
        {
            ObjectInstantiator<NotificationDates>.SetProperty(x => x.PaymentReceivedDate, existingDate, assessment.Dates);

            var paymentComplete = GetNotificationTransactionData(existingDate);
            paymentComplete.Credit = 200.00m;

            var refundMade = GetNotificationTransactionData(NewDate);
            refundMade.Debit = 50.00m;

            var paymentCompleteAgain = GetNotificationTransactionData(newerDate);
            paymentCompleteAgain.Credit = 200.00m;

            var message = new AddNotificationTransaction(paymentComplete);
            await handler.HandleAsync(message);

            message = new AddNotificationTransaction(refundMade);
            await handler.HandleAsync(message);

            message = new AddNotificationTransaction(paymentCompleteAgain);
            await handler.HandleAsync(message);

            Assert.Equal(existingDate, context.NotificationAssessments.Single().Dates.PaymentReceivedDate);
        }
        public async Task RefundMade_PaymentComplete_DoesNotAddDateToAssessment()
        {
            ObjectInstantiator<NotificationDates>.SetProperty(x => x.PaymentReceivedDate, existingDate, assessment.Dates);

            var creditData = GetNotificationTransactionData(existingDate);
            creditData.Debit = 30.00m;

            var debitData = GetNotificationTransactionData(NewDate);
            debitData.Debit = 50.00m;

            var message = new AddNotificationTransaction(creditData);
            await handler.HandleAsync(message);

            message = new AddNotificationTransaction(debitData);
            await handler.HandleAsync(message);

            Assert.Equal(existingDate, context.NotificationAssessments.Single().Dates.PaymentReceivedDate);
        }