Inheritance: ExtensibleDataObject
        public void AddAttendee_WhenMemberIsNotAttendeeAndChangedDecision_IsSuccessful()
        {
            var creatorId       = new MemberId(Guid.NewGuid());
            var meetingTestData = CreateMeetingTestData(new MeetingTestDataOptions
            {
                CreatorId = creatorId
            });
            var newMemberId = new MemberId(Guid.NewGuid());

            meetingTestData.MeetingGroup.JoinToGroupMember(newMemberId);
            meetingTestData.Meeting.AddNotAttendee(newMemberId);

            meetingTestData.Meeting.AddAttendee(meetingTestData.MeetingGroup, newMemberId, 0);

            var meetingNotAttendeeChangedDecision = AssertPublishedDomainEvent <MeetingNotAttendeeChangedDecisionDomainEvent>(meetingTestData.Meeting);

            Assert.That(meetingNotAttendeeChangedDecision.MemberId, Is.EqualTo(newMemberId));
        }
        private Meeting(
            MeetingGroupId meetingGroupId,
            string title,
            MeetingTerm term,
            string description,
            MeetingLocation location,
            MeetingLimits meetingLimits,
            Term rsvpTerm,
            MoneyValue eventFee,
            List <MemberId> hostsMembersIds,
            MemberId creatorId)
        {
            Id = new MeetingId(Guid.NewGuid());
            _meetingGroupId = meetingGroupId;
            _title          = title;
            _term           = term;
            _description    = description;
            _location       = location;
            _meetingLimits  = meetingLimits;

            this.SetRsvpTerm(rsvpTerm, _term);
            _eventFee   = eventFee;
            _creatorId  = creatorId;
            _createDate = SystemClock.Now;

            _attendees       = new List <MeetingAttendee>();
            _notAttendees    = new List <MeetingNotAttendee>();
            _waitlistMembers = new List <MeetingWaitlistMember>();

            this.AddDomainEvent(new MeetingCreatedDomainEvent(this.Id));
            var rsvpDate = SystemClock.Now;

            if (hostsMembersIds.Any())
            {
                foreach (var hostMemberId in hostsMembersIds)
                {
                    _attendees.Add(MeetingAttendee.CreateNew(this.Id, hostMemberId, rsvpDate, MeetingAttendeeRole.Host, 0, MoneyValue.Undefined));
                }
            }
            else
            {
                _attendees.Add(MeetingAttendee.CreateNew(this.Id, creatorId, rsvpDate, MeetingAttendeeRole.Host, 0, MoneyValue.Undefined));
            }
        }
Exemplo n.º 3
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void filtersSelf() throws org.neo4j.causalclustering.upstream.UpstreamDatabaseSelectionException
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void FiltersSelf()
        {
            // given
            MemberId myself    = new MemberId(new System.Guid(1234, 5678));
            Config   config    = Config.defaults();
            string   groupName = "groupName";

            // and
            ConnectToRandomCoreServerStrategy connectToRandomCoreServerStrategy = new ConnectToRandomCoreServerStrategy();

            connectToRandomCoreServerStrategy.Inject(new TopologyServiceThatPrioritisesItself(myself, groupName), config, NullLogProvider.Instance, myself);

            // when
            Optional <MemberId> found = connectToRandomCoreServerStrategy.UpstreamDatabase();

            // then
            Assert.assertTrue(found.Present);
            Assert.assertNotEquals(myself, found);
        }
Exemplo n.º 4
0
        public void SetAttendeeRole_WhenMemberIsOrganizer_IsSuccessful()
        {
            var creatorId       = new MemberId(Guid.NewGuid());
            var meetingTestData = CreateMeetingTestData(new MeetingTestDataOptions
            {
                CreatorId = creatorId
            });
            var newOrganizerId = new MemberId(Guid.NewGuid());

            meetingTestData.MeetingGroup.JoinToGroupMember(newOrganizerId);
            meetingTestData.Meeting.AddAttendee(meetingTestData.MeetingGroup, newOrganizerId, 0);
            meetingTestData.Meeting.SetHostRole(meetingTestData.MeetingGroup, creatorId, newOrganizerId);

            meetingTestData.Meeting.SetAttendeeRole(meetingTestData.MeetingGroup, creatorId, newOrganizerId);

            var newMeetingHostSet = AssertPublishedDomainEvent <MemberSetAsAttendeeDomainEvent>(meetingTestData.Meeting);

            Assert.That(newMeetingHostSet.HostId, Is.EqualTo(newOrganizerId));
        }
Exemplo n.º 5
0
    // todo: add this to metrics tracking
    public async Task AddGroupsToMember(MemberId member, IReadOnlyCollection <GroupId> groups)
    {
        await using var conn = await _db.Obtain();

        await using var w =
                        conn.BeginBinaryImport("copy group_members (group_id, member_id) from stdin (format binary)");
        foreach (var group in groups)
        {
            await w.StartRowAsync();

            await w.WriteAsync(group.Value);

            await w.WriteAsync(member.Value);
        }

        await w.CompleteAsync();

        _logger.Information("Added member {MemberId} to groups {GroupIds}", member, groups);
    }
        public static async Task <MeetingGroupMemberData> GetMeetingGroupMember(MemberId memberId, MeetingId meetingOfGroupId, IDbConnection connection)
        {
            var result = await connection.QuerySingleAsync <MeetingGroupMemberResponse>(
                "SELECT " +
                $"[MeetingGroupMember].{nameof(MeetingGroupMemberResponse.MeetingGroupId)}, " +
                $"[MeetingGroupMember].{nameof(MeetingGroupMemberResponse.MemberId)} " +
                "FROM [meetings].[v_MeetingGroupMembers] AS [MeetingGroupMember] " +
                "INNER JOIN [meetings].[Meetings] AS [Meeting] ON [Meeting].[MeetingGroupId] = [MeetingGroupMember].[MeetingGroupId] " +
                "WHERE [MeetingGroupMember].[MemberId] = @MemberId AND [Meeting].[Id] = @MeetingId",
                new
            {
                MemberId  = memberId.Value,
                MeetingId = meetingOfGroupId.Value
            });

            return(new MeetingGroupMemberData(
                       new MeetingGroupId(result.MeetingGroupId),
                       new MemberId(result.MemberId)));
        }
        public void OnDeserialization(XmlNode objectNode)
        {
            _xmlNode = objectNode;
            if (_id == 0)
            {
                XmlNode idNode = _xmlNode.OwnerDocument.CreateElement(XmlTags.XML_PROPERTY);
                XmlUtil.SetNameAttribute(idNode, "MemberId");
                _xmlNode.AppendChild(idNode);
                idNode.InnerText = MemberId.ToString(System.Globalization.CultureInfo.InvariantCulture);
            }
            XmlNodeList nl = _xmlNode.SelectNodes(string.Format(System.Globalization.CultureInfo.InvariantCulture,
                                                                "{0}/{1}",
                                                                XML_VALUES, XmlTags.XML_Item));

            foreach (XmlNode nd in nl)
            {
                SetResourceString(XmlUtil.GetNameAttribute(nd), nd.InnerText);
            }
        }
Exemplo n.º 8
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void ignoresSelf() throws org.neo4j.causalclustering.upstream.UpstreamDatabaseSelectionException
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void IgnoresSelf()
        {
            // given
            MemberId myself    = new MemberId(new System.Guid(1234, 5678));
            string   groupName = "groupName";

            // and
            LeaderOnlyStrategy leaderOnlyStrategy = new LeaderOnlyStrategy();
            TopologyServiceThatPrioritisesItself topologyServiceNoRetriesStrategy = new TopologyServiceThatPrioritisesItselfAnonymousInnerClass(this, myself, groupName);

            leaderOnlyStrategy.Inject(topologyServiceNoRetriesStrategy, Config.defaults(), NullLogProvider.Instance, myself);

            // when
            Optional <MemberId> resolved = leaderOnlyStrategy.UpstreamDatabase();

            // then
            Assert.assertTrue(resolved.Present);
            Assert.assertNotEquals(myself, resolved.get());
        }
Exemplo n.º 9
0
        private void DownloadDatabase(StoreId localStoreId)
        {
            try
            {
                _localDatabase.stopForStoreCopy();
                _enableDisableOnStoreCopy.disable();
            }
            catch (Exception throwable)
            {
                throw new Exception(throwable);
            }

            try
            {
                MemberId source = _selectionStrategy.bestUpstreamDatabase();
                AdvertisedSocketAddress fromAddress = _topologyService.findCatchupAddress(source).orElseThrow(() => new TopologyLookupException(source));
                _storeCopyProcess.replaceWithStoreFrom(new CatchupAddressProvider_SingleAddressProvider(fromAddress), localStoreId);
            }
            catch (Exception e) when(e is IOException || e is StoreCopyFailedException || e is UpstreamDatabaseSelectionException || e is TopologyLookupException)
            {
                _log.warn("Error copying store. Will retry shortly.", e);
                return;
            }
            catch (DatabaseShutdownException e)
            {
                _log.warn("Store copy aborted due to shutdown.", e);
                return;
            }

            try
            {
                _localDatabase.start();
                _enableDisableOnStoreCopy.enable();
            }
            catch (Exception throwable)
            {
                throw new Exception(throwable);
            }

            _latestTxIdOfUpStream = 0;               // we will find out on the next pull request response
            _state = TX_PULLING;
            _applier.refreshFromNewStore();
        }
Exemplo n.º 10
0
        public void AddComment_WhenDataIsValid_IsSuccessful()
        {
            // Arrange
            var commentAuthorId = new MemberId(Guid.NewGuid());
            var meetingTestData = CreateMeetingTestData(new MeetingTestDataOptions {
                Attendees = new[] { commentAuthorId }
            });
            var comment = "Great meeting!";

            // Act
            var meetingComment = meetingTestData.Meeting.AddComment(commentAuthorId, comment, meetingTestData.MeetingGroup, meetingTestData.MeetingCommentingConfiguration);

            // Assert
            var meetingCommentCreatedEvent = AssertPublishedDomainEvent <MeetingCommentAddedDomainEvent>(meetingComment);

            Assert.That(meetingCommentCreatedEvent.MeetingCommentId, Is.EqualTo(meetingComment.Id));
            Assert.That(meetingCommentCreatedEvent.MeetingId, Is.EqualTo(meetingTestData.Meeting.Id));
            Assert.That(meetingCommentCreatedEvent.Comment, Is.EqualTo(comment));
        }
Exemplo n.º 11
0
        public void EditComment_WhenNewTextIsEmpty_BreaksCommentTextMustBeProvidedRule(string missingComment)
        {
            // Arrange
            var authorId        = new MemberId(Guid.NewGuid());
            var meetingTestData = CreateMeetingTestData(new MeetingTestDataOptions {
                Attendees = new[] { authorId }
            });

            var meetingComment = meetingTestData.Meeting.AddComment(authorId, "Great meeting!", meetingTestData.MeetingCommentingConfiguration);

            meetingComment.ClearDomainEvents();

            // Assert
            AssertBrokenRule <CommentTextMustBeProvidedRule>(() =>
            {
                // Act
                meetingComment.Edit(new MemberId(Guid.NewGuid()), missingComment, meetingTestData.MeetingCommentingConfiguration);
            });
        }
        private MeetingComment(MeetingId meetingId, MemberId authorId, string comment, MeetingCommentId?inReplyToCommentId)
        {
            this.CheckRule(new CommentTextMustBeProvidedRule(comment));

            this.Id    = new MeetingCommentId(Guid.NewGuid());
            _meetingId = meetingId;
            _authorId  = authorId;
            _comment   = comment;

            _inReplyToCommentId = inReplyToCommentId;

            _createDate = SystemClock.Now;
            _editDate   = null;

            _isRemoved       = false;
            _removedByReason = null;

            this.AddDomainEvent(new MeetingCommentCreatedDomainEvent(Id));
        }
Exemplo n.º 13
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void leaderShouldNotRespondToSuccessResponseThatIndicatesUpToDateFollower() throws Exception
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void LeaderShouldNotRespondToSuccessResponseThatIndicatesUpToDateFollower()
        {
            // given

            /*
             * A leader who
             * - has an append index of 100
             * - knows about instance 2
             * - assumes that instance 2 is at an index less than 100 -say 84
             */
            Leader        leader         = new Leader();
            MemberId      instance2      = member(2);
            FollowerState instance2State = CreateArtificialFollowerState(84);

            ReadableRaftState state = mock(typeof(ReadableRaftState));

            FollowerStates <MemberId> followerState = new FollowerStates <MemberId>();

            followerState = new FollowerStates <MemberId>(followerState, instance2, instance2State);

            ReadableRaftLog logMock = mock(typeof(ReadableRaftLog));

            when(logMock.AppendIndex()).thenReturn(100L);

            when(state.CommitIndex()).thenReturn(-1L);
            when(state.EntryLog()).thenReturn(logMock);
            when(state.FollowerStates()).thenReturn(followerState);
            when(state.Term()).thenReturn(4L);                 // both leader and follower are in the same term

            // when
            // that leader is asked to handle a response from that follower that says that the follower is up to date
            Org.Neo4j.causalclustering.core.consensus.RaftMessages_AppendEntries_Response response = appendEntriesResponse().success().matchIndex(100).term(4).from(instance2).build();

            Outcome outcome = leader.Handle(response, state, mock(typeof(Log)));

            // then
            // The leader should not be trying to send any messages to that instance
            assertTrue(outcome.OutgoingMessages.Count == 0);
            // And the follower state should be updated
            FollowerStates <MemberId> updatedFollowerStates = outcome.FollowerStates;

            assertEquals(100, updatedFollowerStates.Get(instance2).MatchIndex);
        }
Exemplo n.º 14
0
        public void SetHostRole_WhenSettingMemberIsNotAOrganizerOrHostMeeting_IsNotPossible()
        {
            var creatorId       = new MemberId(Guid.NewGuid());
            var meetingTestData = CreateMeetingTestData(new MeetingTestDataOptions
            {
                CreatorId = creatorId
            });
            var settingMemberId = new MemberId(Guid.NewGuid());
            var newOrganizerId  = new MemberId(Guid.NewGuid());

            meetingTestData.MeetingGroup.JoinToGroupMember(newOrganizerId);
            meetingTestData.MeetingGroup.JoinToGroupMember(settingMemberId);
            meetingTestData.Meeting.AddAttendee(meetingTestData.MeetingGroup, newOrganizerId, 0);

            AssertBrokenRule <OnlyMeetingOrGroupOrganizerCanSetMeetingMemberRolesRule>(() =>
            {
                meetingTestData.Meeting.SetHostRole(meetingTestData.MeetingGroup, settingMemberId, newOrganizerId);
            });
        }
        public void DisableCommenting_WhenCommentingAlreadyDisabled_IsIgnored()
        {
            // Arrange
            var organizerId = new MemberId(Guid.NewGuid());
            var meeting     = CreateMeetingTestData(new MeetingTestDataOptions {
                CreatorId = organizerId
            });
            var meetingCommentingConfiguration = meeting.Meeting.CreateCommentingConfiguration();

            meetingCommentingConfiguration.DisableCommenting(organizerId, meeting.MeetingGroup);

            meetingCommentingConfiguration.ClearDomainEvents();

            // Act
            meetingCommentingConfiguration.DisableCommenting(organizerId, meeting.MeetingGroup);

            // Assert
            AssertDomainEventNotPublished <MeetingCommentingDisabledDomainEvent>(meetingCommentingConfiguration);
        }
Exemplo n.º 16
0
        void ParseIdentifier()
        {
            Token token = this.PeekToken();

            if (!Parser.IsCanFollowIdentifier(token))
            {
                throw this.BuildException(Error.BinaryCommaMemberParenIndexerExpected);
            }
            if (this._tree._top.Expression is MemberOp)
            {
                MemberId memberId = new MemberId(this._current.StringValue);
                _tree.AddOperand(memberId);
            }
            else
            {
                Variable variable = new Variable(this._current.StringValue);
                _tree.AddOperand(variable);
            }
        }
        public void DisableCommenting_IsSuccessfull()
        {
            // Arrange
            var organizerId = new MemberId(Guid.NewGuid());
            var meeting     = CreateMeetingTestData(new MeetingTestDataOptions {
                CreatorId = organizerId
            });
            var meetingCommentingConfiguration = meeting.Meeting.CreateCommentingConfiguration();

            meetingCommentingConfiguration.ClearDomainEvents();

            // Act
            meetingCommentingConfiguration.DisableCommenting(organizerId, meeting.MeetingGroup);

            // Assert
            var meetingCommentingDisabledEvent = AssertPublishedDomainEvent <MeetingCommentingDisabledDomainEvent>(meetingCommentingConfiguration);

            Assert.That(meetingCommentingDisabledEvent.MeetingId, Is.EqualTo(meeting.Meeting.Id));
        }
        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));
        }
        public void SignOffMemberFromWaitList_WhenMemberIsOnWaitList_IsSuccessful()
        {
            var creatorId       = new MemberId(Guid.NewGuid());
            var meetingTestData = CreateMeetingTestData(new MeetingTestDataOptions
            {
                CreatorId = creatorId
            });

            var memberId = new MemberId(Guid.NewGuid());

            meetingTestData.MeetingGroup.JoinToGroupMember(memberId);
            meetingTestData.Meeting.SignUpMemberToWaitlist(meetingTestData.MeetingGroup, memberId);

            meetingTestData.Meeting.SignOffMemberFromWaitlist(memberId);

            var memberSignedOffFromMeetingWaitlist = AssertPublishedDomainEvent <MemberSignedOffFromMeetingWaitlistDomainEvent>(meetingTestData.Meeting);

            Assert.That(memberSignedOffFromMeetingWaitlist.MemberId, Is.EqualTo(memberId));
        }
Exemplo n.º 20
0
        public void CancelMeeting_WhenMeetingHasNotStarted_IsSuccessful()
        {
            var creatorId       = new MemberId(Guid.NewGuid());
            var meetingTestData = CreateMeetingTestData(new MeetingTestDataOptions
            {
                CreatorId = creatorId
            });
            var date = DateTime.UtcNow;

            SystemClock.Set(date);

            meetingTestData.Meeting.Cancel(creatorId);

            var meetingCanceled = AssertPublishedDomainEvent <MeetingCanceledDomainEvent>(meetingTestData.Meeting);

            Assert.That(meetingCanceled.MeetingId, Is.EqualTo(meetingTestData.Meeting.Id));
            Assert.That(meetingCanceled.CancelMemberId, Is.EqualTo(creatorId));
            Assert.That(meetingCanceled.CancelDate, Is.EqualTo(date));
        }
        public void RemoveComment_ByAuthor_BreaksRemovingReasonCanBeProvidedOnlyByGroupOrganizer()
        {
            // Arrange
            var commentAuthorId = new MemberId(Guid.NewGuid());
            var meetingTestData = CreateMeetingTestData(new MeetingTestDataOptions {
                Attendees = new[] { commentAuthorId }
            });

            var meetingComment = meetingTestData.Meeting.AddComment(commentAuthorId, "Great meeting!");

            meetingComment.ClearDomainEvents();

            // Assert
            AssertBrokenRule <RemovingReasonCanBeProvidedOnlyByGroupOrganizer>(() =>
            {
                // Act
                meetingComment.Remove(removingMemberId: commentAuthorId, meetingTestData.MeetingGroup, "I don't like the comment.");
            });
        }
Exemplo n.º 22
0
        private bool PullAndApplyBatchOfTransactions(MemberId upstream, StoreId localStoreId, int batchCount)
        {
            long lastQueuedTxId = _applier.lastQueuedTxId();

            _pullRequestMonitor.txPullRequest(lastQueuedTxId);
            TxPullRequest txPullRequest = new TxPullRequest(lastQueuedTxId, localStoreId);

            _log.debug("Pull transactions from %s where tx id > %d [batch #%d]", upstream, lastQueuedTxId, batchCount);

            TxStreamFinishedResponse response;

            try
            {
                AdvertisedSocketAddress fromAddress = _topologyService.findCatchupAddress(upstream).orElseThrow(() => new TopologyLookupException(upstream));
                response = _catchUpClient.makeBlockingRequest(fromAddress, txPullRequest, new CatchUpResponseAdaptorAnonymousInnerClass(this, response));
            }
            catch (Exception e) when(e is CatchUpClientException || e is TopologyLookupException)
            {
                _log.warn("Exception occurred while pulling transactions. Will retry shortly.", e);
                StreamComplete();
                return(false);
            }

            _latestTxIdOfUpStream = response.LatestTxId();

            switch (response.Status())
            {
            case SUCCESS_END_OF_STREAM:
                _log.debug("Successfully pulled transactions from tx id %d", lastQueuedTxId);
                _upToDateFuture.complete(true);
                return(false);

            case E_TRANSACTION_PRUNED:
                _log.info("Tx pull unable to get transactions starting from %d since transactions have been pruned. Attempting a store copy.", lastQueuedTxId);
                _state = STORE_COPYING;
                return(false);

            default:
                _log.info("Tx pull request unable to get transactions > %d " + lastQueuedTxId);
                return(false);
            }
        }
Exemplo n.º 23
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void randomCoreDoesNotReturnSameCoreTwice()
        public virtual void RandomCoreDoesNotReturnSameCoreTwice()
        {
            // given counter always core member
            TypicallyConnectToRandomReadReplicaStrategy connectionStrategy = new TypicallyConnectToRandomReadReplicaStrategy(1);

            // and
            MemberId        firstOther      = new MemberId(new System.Guid(12, 34));
            MemberId        secondOther     = new MemberId(new System.Guid(56, 78));
            TopologyService topologyService = fakeTopologyService(fakeCoreTopology(Myself, firstOther, secondOther), fakeReadReplicaTopology(memberIDs(2)));

            connectionStrategy.Inject(topologyService, Config.defaults(), NullLogProvider.Instance, Myself);

            // when we collect enough results to feel confident of random values
            IList <MemberId> found = IntStream.range(0, 20).mapToObj(i => connectionStrategy.UpstreamDatabase()).filter(Optional.isPresent).map(Optional.get).collect(Collectors.toList());

            // then
            assertFalse(found.Contains(Myself));
            assertTrue(found.Contains(firstOther));
            assertTrue(found.Contains(secondOther));
        }
Exemplo n.º 24
0
        public async Task DoesNotRemoveIfIdDoesNotMatch()
        {
            var timeout = new CancellationTokenSource(1000).Token;

            var(activator, identity, pid) = await GetActivatedClusterIdentity(timeout);

            var differentPid = Activate(activator, identity);

            var activation = await _storage.TryGetExistingActivation(identity, timeout);

            await _storage.RemoveActivation(identity, differentPid, timeout);

            var afterRemoval = await _storage.TryGetExistingActivation(identity, timeout);

            activation.Should().NotBeNull();
            activation !.MemberId.Should().Be(activator.Id);
            activation !.Pid.Should().BeEquivalentTo(pid);

            afterRemoval.Should().NotBeNull("Removal pid did not match id, even if it matched cluster identity");
        }
        public void AddAttendee_WhenMemberIsAlreadyAttendeeOfMeeting_IsNotPossible()
        {
            // Arrange
            var creatorId       = new MemberId(Guid.NewGuid());
            var meetingTestData = CreateMeetingTestData(new MeetingTestDataOptions
            {
                CreatorId = creatorId
            });
            var newMemberId = new MemberId(Guid.NewGuid());

            meetingTestData.MeetingGroup.JoinToGroupMember(newMemberId);
            meetingTestData.Meeting.AddAttendee(meetingTestData.MeetingGroup, newMemberId, 0);

            // Assert
            AssertBrokenRule <MemberCannotBeAnAttendeeOfMeetingMoreThanOnceRule>(() =>
            {
                // Act
                meetingTestData.Meeting.AddAttendee(meetingTestData.MeetingGroup, newMemberId, 0);
            });
        }
        public void AddLikeToComment_WhenLikerIsNotGroupMember_BreaksCommentCanBeLikedOnlyByMeetingGroupMemberRule()
        {
            // Arrange
            var commentAuthorId = new MemberId(Guid.NewGuid());
            var meetingTestData = CreateMeetingTestData(new MeetingTestDataOptions {
                Attendees = new[] { commentAuthorId }
            });

            var meetingComment = meetingTestData.Meeting.AddComment(commentAuthorId, "Great meeting!", meetingTestData.MeetingGroup, meetingTestData.MeetingCommentingConfiguration);

            // Assert
            AssertBrokenRule <CommentCanBeLikedOnlyByMeetingGroupMemberRule>(() =>
            {
                // Act
                meetingComment.Like(
                    likerId: new MemberId(Guid.NewGuid()),
                    likerMeetingGroupMember: null,
                    meetingMemberCommentLikesCount: 0);
            });
        }
Exemplo n.º 27
0
//JAVA TO C# CONVERTER TODO TASK: Most Java annotations will not have direct .NET equivalent attributes:
//ORIGINAL LINE: @Test public void shouldDefaultToRandomCoreServerIfNoOtherStrategySpecified() throws Exception
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
        public virtual void ShouldDefaultToRandomCoreServerIfNoOtherStrategySpecified()
        {
            // given
            TopologyService topologyService = mock(typeof(TopologyService));
            MemberId        memberId        = new MemberId(System.Guid.randomUUID());

            when(topologyService.LocalCoreServers()).thenReturn(new CoreTopology(new ClusterId(System.Guid.randomUUID()), false, MapOf(memberId, mock(typeof(CoreServerInfo)))));

            ConnectToRandomCoreServerStrategy defaultStrategy = new ConnectToRandomCoreServerStrategy();

            defaultStrategy.Inject(topologyService, Config.defaults(), NullLogProvider.Instance, null);

            UpstreamDatabaseStrategySelector selector = new UpstreamDatabaseStrategySelector(defaultStrategy);

            // when
            MemberId instance = selector.BestUpstreamDatabase();

            // then
            assertEquals(memberId, instance);
        }
Exemplo n.º 28
0
        public void EditComment_ByNoAuthor_BreaksMeetingCommentCanBeEditedOnlyByAuthor()
        {
            // Arrange
            var commentAuthorId = new MemberId(Guid.NewGuid());
            var meetingTestData = CreateMeetingTestData(new MeetingTestDataOptions {
                Attendees = new[] { commentAuthorId }
            });

            var meetingComment = meetingTestData.Meeting.AddComment(commentAuthorId, "Great meeting!", meetingTestData.MeetingCommentingConfiguration);

            meetingComment.ClearDomainEvents();
            var editedComment = "Wonderful!";

            // Assert
            AssertBrokenRule <MeetingCommentCanBeEditedOnlyByAuthorRule>(() =>
            {
                // Act
                meetingComment.Edit(new MemberId(Guid.NewGuid()), editedComment, meetingTestData.MeetingCommentingConfiguration);
            });
        }
Exemplo n.º 29
0
//JAVA TO C# CONVERTER WARNING: Method 'throws' clauses are not available in C#:
//ORIGINAL LINE: void dump() throws java.io.IOException
        internal virtual void Dump()
        {
            SimpleStorage <MemberId> memberIdStorage = new SimpleFileStorage <MemberId>(_fs, _clusterStateDirectory, CORE_MEMBER_ID_NAME, new MemberId.Marshal(), NullLogProvider.Instance);

            if (memberIdStorage.Exists())
            {
                MemberId memberId = memberIdStorage.ReadState();
                @out.println(CORE_MEMBER_ID_NAME + ": " + memberId);
            }

            DumpState(LAST_FLUSHED_NAME, new LongIndexMarshal());
            DumpState(LOCK_TOKEN_NAME, new ReplicatedLockTokenState.Marshal(new MemberId.Marshal()));
            DumpState(ID_ALLOCATION_NAME, new IdAllocationState.Marshal());
            DumpState(SESSION_TRACKER_NAME, new GlobalSessionTrackerState.Marshal(new MemberId.Marshal()));

            /* raft state */
            DumpState(RAFT_MEMBERSHIP_NAME, new RaftMembershipState.Marshal());
            DumpState(RAFT_TERM_NAME, new TermState.Marshal());
            DumpState(RAFT_VOTE_NAME, new VoteState.Marshal(new MemberId.Marshal()));
        }
        public void RemoveComment_IsSuccessful()
        {
            // Arrange
            var removingMemberId = new MemberId(Guid.NewGuid());
            var meetingTestData  = CreateMeetingTestData(new MeetingTestDataOptions {
                Attendees = new[] { removingMemberId }
            });

            var meetingComment = meetingTestData.Meeting.AddComment(authorId: removingMemberId, "Great meeting!");

            meetingComment.ClearDomainEvents();

            // Act
            meetingComment.Remove(removingMemberId, meetingTestData.MeetingGroup);

            // Assert
            var meetingCommentCreated = AssertPublishedDomainEvent <MeetingCommentRemovedDomainEvent>(meetingComment);

            Assert.That(meetingCommentCreated.MeetingCommentId, Is.EqualTo(meetingComment.Id));
        }
Exemplo n.º 31
0
        public void Scenario_AddAndRemoveMember()
        {
	        var member = new MemberId(Constants.MeId);

	        _trelloReadWrite.Boards.AddMember(_welcomeBoardWritable, member);
            var membersAfterAddMember = _trelloReadWrite.Members.ForBoard(_welcomeBoardWritable);

            _trelloReadWrite.Boards.RemoveMember(_welcomeBoardWritable, member);
			var membersAfterRemoveMember = _trelloReadWrite.Members.ForBoard(_welcomeBoardWritable);

            Assert.That(membersAfterAddMember.Any(x => x.Id.Equals(Constants.MeId)));
			Assert.That(!membersAfterRemoveMember.Any(x => x.Id.Equals(Constants.MeId)));
        }
Exemplo n.º 32
0
		void ParseIdentifier() {
			Token token = this.PeekToken();
			if (!Parser.IsCanFollowIdentifier(token)) {
				throw this.BuildException(Error.BinaryCommaMemberParenIndexerExpected);
			}
			if (this._tree._top.Expression is MemberOp) {
				MemberId memberId = new MemberId(this._current.StringValue);
				_tree.AddOperand(memberId);
			} else {
				Variable variable = new Variable(this._current.StringValue);
				_tree.AddOperand(variable);
			}
		}