public void AcceptProposal_WhenIsNotAccepted_IsSuccessful() { var proposalMemberId = new MemberId(Guid.NewGuid()); var meetingProposal = MeetingGroupProposal.ProposeNew( "name", "description", new MeetingGroupLocation("Warsaw", "PL"), proposalMemberId); meetingProposal.Accept(); var meetingGroupProposalAccepted = AssertPublishedDomainEvent <MeetingGroupProposalAcceptedDomainEvent>(meetingProposal); Assert.That(meetingGroupProposalAccepted.MeetingGroupProposalId, Is.EqualTo(meetingProposal.Id)); }
public void CreateProposalToVerify_IsSuccessful() { var meetingGroupProposalId = Guid.NewGuid(); var location = new MeetingGroupLocation("Warsaw", "Poland"); var proposalUserId = new UserId(Guid.NewGuid()); var proposalDate = DateTime.Now; var meetingGroupProposal = MeetingGroupProposal.CreateToVerify(meetingGroupProposalId, "meetingName", "meetingDescription", location, proposalUserId, proposalDate); var meetingGroupProposalVerificationRequested = AssertPublishedDomainEvent <MeetingGroupProposalVerificationRequestedDomainEvent>(meetingGroupProposal); Assert.That(meetingGroupProposalVerificationRequested.Id, Is.EqualTo(new MeetingGroupProposalId(meetingGroupProposalId))); }
public async Task <Guid> Handle(RequestMeetingGroupProposalVerificationCommand request, CancellationToken cancellationToken) { var meetingGroupProposal = MeetingGroupProposal.CreateToVerify( request.MeetingGroupProposalId, request.Name, request.Description, MeetingGroupLocation.Create(request.LocationCity, request.LocationCountryCode), new UserId(request.ProposalUserId), request.ProposalDate ); await _meetingGroupProposalRepository.AddAsync(meetingGroupProposal); return(meetingGroupProposal.Id.Value); }
public void AcceptProposal_WhenIsAlreadyAccepted_BreaksProposalCannotBeAcceptedMoreThanOnceRule() { var proposalMemberId = new MemberId(Guid.NewGuid()); var meetingProposal = MeetingGroupProposal.ProposeNew( "name", "description", MeetingGroupLocation.CreateNew("Warsaw", "PL"), proposalMemberId); meetingProposal.Accept(); AssertBrokenRule <MeetingGroupProposalCannotBeAcceptedMoreThanOnceRule>(() => { meetingProposal.Accept(); }); }
private static MeetingGroup CreateMeetingGroup(MemberId definedProposalMemberId = null) { var proposalMemberId = definedProposalMemberId ?? new MemberId(Guid.NewGuid()); var meetingProposal = MeetingGroupProposal.ProposeNew( "name", "description", new MeetingGroupLocation("Warsaw", "PL"), proposalMemberId); meetingProposal.Accept(); var meetingGroup = meetingProposal.CreateMeetingGroup(); DomainEventsTestHelper.ClearAllDomainEvents(meetingGroup); return(meetingGroup); }
public void RejectProposal_WithoutProvidedReason_CannotBeRejected() { var meetingGroupProposalId = Guid.NewGuid(); var location = MeetingGroupLocation.Create("Warsaw", "Poland"); var userId = new UserId(Guid.NewGuid()); var proposalUserId = userId; var proposalDate = DateTime.Now; var meetingGroupProposal = MeetingGroupProposal.CreateToVerify(meetingGroupProposalId, "meetingName", "meetingDescription", location, proposalUserId, proposalDate); AssertBrokenRule <MeetingGroupProposalRejectionMustHaveAReasonRule>(() => { meetingGroupProposal.Reject(userId, string.Empty); }); }
public void AcceptProposal_WhenDecisionIsNotMade_IsSuccessful() { var meetingGroupProposalId = Guid.NewGuid(); var location = MeetingGroupLocation.Create("Warsaw", "Poland"); var proposalUserId = new UserId(Guid.NewGuid()); var proposalDate = DateTime.Now; var meetingGroupProposal = MeetingGroupProposal.CreateToVerify(meetingGroupProposalId, "meetingName", "meetingDescription", location, proposalUserId, proposalDate); meetingGroupProposal.Accept(new UserId(Guid.NewGuid())); var meetingGroupProposalAccepted = AssertPublishedDomainEvent <MeetingGroupProposalAcceptedDomainEvent>(meetingGroupProposal); Assert.That(meetingGroupProposalAccepted.MeetingGroupProposalId, Is.EqualTo(new MeetingGroupProposalId(meetingGroupProposalId))); }
public void RejectProposal_WhenDecisionIsMade_CanBeVerifiedOnlyOnce() { var meetingGroupProposalId = Guid.NewGuid(); var location = MeetingGroupLocation.Create("Warsaw", "Poland"); var userId = new UserId(Guid.NewGuid()); var proposalUserId = userId; var proposalDate = DateTime.Now; var meetingGroupProposal = MeetingGroupProposal.CreateToVerify(meetingGroupProposalId, "meetingName", "meetingDescription", location, proposalUserId, proposalDate); meetingGroupProposal.Accept(userId); AssertBrokenRule <MeetingGroupProposalCanBeVerifiedOnceRule>(() => { meetingGroupProposal.Reject(userId, "rejectReason"); }); }
public void CreateMeetingGroup_IsSuccessful_And_CreatorIsAHost() { var proposalMemberId = new MemberId(Guid.NewGuid()); var name = "name"; var description = "description"; var meetingGroupLocation = MeetingGroupLocation.CreateNew("Warsaw", "PL"); var meetingProposal = MeetingGroupProposal.ProposeNew( name, description, meetingGroupLocation, proposalMemberId); var meetingGroup = meetingProposal.CreateMeetingGroup(); var meetingGroupCreated = AssertPublishedDomainEvent <MeetingGroupCreatedDomainEvent>(meetingGroup); var newMeetingGroupMemberJoined = AssertPublishedDomainEvent <NewMeetingGroupMemberJoinedDomainEvent>(meetingGroup); Assert.That(meetingGroupCreated.MeetingGroupId, Is.EqualTo(meetingProposal.Id)); Assert.That(newMeetingGroupMemberJoined.MemberId, Is.EqualTo(proposalMemberId)); Assert.That(newMeetingGroupMemberJoined.Role, Is.EqualTo(MeetingGroupMemberRole.Organizer)); }
protected MeetingTestData CreateMeetingTestData(MeetingTestDataOptions options) { var proposalMemberId = options.CreatorId ?? new MemberId(Guid.NewGuid()); var meetingProposal = MeetingGroupProposal.ProposeNew( "name", "description", MeetingGroupLocation.CreateNew("Warsaw", "PL"), proposalMemberId); meetingProposal.Accept(); var meetingGroup = meetingProposal.CreateMeetingGroup(); meetingGroup.SetExpirationDate(DateTime.Now.AddDays(1)); var meetingTerm = options.MeetingTerm ?? MeetingTerm.CreateNewBetweenDates(DateTime.UtcNow.AddDays(1), DateTime.UtcNow.AddDays(2)); var rsvpTerm = options.RvspTerm ?? Term.NoTerm; var meeting = meetingGroup.CreateMeeting( "title", meetingTerm, "description", MeetingLocation.CreateNew("Name", "Address", "PostalCode", "City"), options.AttendeesLimit, options.GuestsLimit, rsvpTerm, MoneyValue.Undefined, new List <MemberId>(), proposalMemberId); foreach (var attendee in options.Attendees) { meetingGroup.JoinToGroupMember(attendee); meeting.AddAttendee(meetingGroup, attendee, 0); } DomainEventsTestHelper.ClearAllDomainEvents(meetingGroup); return(new MeetingTestData(meetingGroup, meeting)); }
public async Task AddAsync(MeetingGroupProposal meetingGroupProposal) { await _context.MeetingGroupProposals.AddAsync(meetingGroupProposal); }