Example #1
0
        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));
        }
Example #2
0
        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)));
        }
Example #3
0
        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);
        }
Example #6
0
        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);
            });
        }
Example #7
0
        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)));
        }
Example #8
0
        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));
        }
Example #10
0
        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));
        }
Example #11
0
 public async Task AddAsync(MeetingGroupProposal meetingGroupProposal)
 {
     await _context.MeetingGroupProposals.AddAsync(meetingGroupProposal);
 }