public void RegisterPayment_TermsAreNotOverlapping_IsSuccessful()
        {
            var meetingGroupId = new MeetingGroupId(Guid.NewGuid());
            var paymentScheduleForMeetingGroup = MeetingGroupPaymentRegister.CreatePaymentScheduleForMeetingGroup(meetingGroupId);

            var payerId     = new PayerId(Guid.NewGuid());
            var paymentTerm = new PaymentTerm(
                new DateTime(2019, 1, 1),
                new DateTime(2019, 1, 31));

            paymentScheduleForMeetingGroup.RegisterPayment(
                paymentTerm, payerId);

            var nextPaymentTerm = new PaymentTerm(
                new DateTime(2019, 2, 1),
                new DateTime(2019, 2, 28));

            paymentScheduleForMeetingGroup.RegisterPayment(
                nextPaymentTerm, payerId);

            var domainEvents = AssertPublishedDomainEvents <PaymentRegisteredDomainEvent>(paymentScheduleForMeetingGroup);

            Assert.That(domainEvents.Count, Is.EqualTo(2));
            Assert.That(domainEvents[1].DateTo, Is.EqualTo(nextPaymentTerm.EndDate));
        }
        public async Task <Unit> Handle(CreatePaymentRegisterCommand command, CancellationToken cancellationToken)
        {
            var paymentRegister = MeetingGroupPaymentRegister.CreatePaymentScheduleForMeetingGroup(
                new MeetingGroupId(command.MeetingGroupProposalId));

            await _meetingGroupPaymentRegisterRepository.AddAsync(paymentRegister);

            return(Unit.Value);
        }
        public void CreatePaymentScheduleForMeetingGroup_IsSuccessful()
        {
            var meetingGroupId = new MeetingGroupId(Guid.NewGuid());
            var paymentScheduleForMeetingGroup = MeetingGroupPaymentRegister.CreatePaymentScheduleForMeetingGroup(meetingGroupId);

            var meetingGroupPaymentRegisterCreated =
                AssertPublishedDomainEvent <MeetingGroupPaymentRegisterCreatedDomainEvent>(paymentScheduleForMeetingGroup);

            Assert.That(meetingGroupPaymentRegisterCreated.MeetingGroupPaymentRegisterId.Value, Is.EqualTo(meetingGroupId.Value));
        }
        public void RegisterPayment_OnlyOnePayment_IsSuccessful()
        {
            var meetingGroupId = new MeetingGroupId(Guid.NewGuid());
            var paymentScheduleForMeetingGroup = MeetingGroupPaymentRegister.CreatePaymentScheduleForMeetingGroup(meetingGroupId);

            var payerId     = new PayerId(Guid.NewGuid());
            var paymentTerm = new PaymentTerm(
                new DateTime(2019, 1, 1),
                new DateTime(2019, 1, 31));

            paymentScheduleForMeetingGroup.RegisterPayment(
                paymentTerm, payerId);

            var paymentRegistered = AssertPublishedDomainEvent <PaymentRegisteredDomainEvent>(paymentScheduleForMeetingGroup);

            Assert.That(paymentRegistered.MeetingGroupPaymentRegisterId, Is.EqualTo(paymentScheduleForMeetingGroup.Id));
            Assert.That(paymentRegistered.DateTo, Is.EqualTo(paymentTerm.EndDate));
        }
        public void RegisterPayment_TermsAreOverlapping_BreaksPaymentTermsCannotOverlapRule()
        {
            var meetingGroupId = new MeetingGroupId(Guid.NewGuid());
            var paymentScheduleForMeetingGroup = MeetingGroupPaymentRegister.CreatePaymentScheduleForMeetingGroup(meetingGroupId);

            var payerId     = new PayerId(Guid.NewGuid());
            var paymentTerm = new PaymentTerm(
                new DateTime(2019, 1, 1),
                new DateTime(2019, 1, 31));

            paymentScheduleForMeetingGroup.RegisterPayment(
                paymentTerm, payerId);

            var nextPaymentTerm = new PaymentTerm(
                new DateTime(2019, 1, 31),
                new DateTime(2019, 2, 28));

            AssertBrokenRule <MeetingGroupPaymentsCannotOverlapRule>(() =>
            {
                paymentScheduleForMeetingGroup.RegisterPayment(
                    nextPaymentTerm, payerId);
            });
        }
Exemple #6
0
 public async Task AddAsync(MeetingGroupPaymentRegister paymentRegister)
 {
     await _paymentsContext.MeetingGroupPaymentRegisters.AddAsync(paymentRegister);
 }