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); }); }
public async Task AddAsync(MeetingGroupPaymentRegister paymentRegister) { await _paymentsContext.MeetingGroupPaymentRegisters.AddAsync(paymentRegister); }