コード例 #1
0
        public async Task Start_EstimationCanceledFromServiceBus_TeamEstimationCanceled()
        {
            // Arrange
            var planningPoker = new Mock <IAzurePlanningPoker>(MockBehavior.Strict);
            var serviceBus    = new Mock <IServiceBus>(MockBehavior.Strict);
            var target        = CreatePlanningPokerAzureNode(planningPoker.Object, serviceBus.Object, CreateConfigutartion());

            var message     = new ScrumTeamMessage(TeamName, MessageType.EstimationCanceled);
            var nodeMessage = new NodeMessage(NodeMessageType.ScrumTeamMessage)
            {
                Data = message
            };
            var sendMessages = SetupServiceBus(serviceBus, target.NodeId, nodeMessage);

            var team = CreateBasicTeam();

            team.ScrumMaster.StartEstimation();
            var teamLock = SetupPlanningPoker(planningPoker, team);

            // Act
            await target.Start();

            sendMessages();
            await target.Stop();

            // Verify
            planningPoker.Verify();
            serviceBus.Verify();
            teamLock.Verify();
            Assert.AreEqual <TeamState>(TeamState.EstimationCanceled, team.State);
        }
コード例 #2
0
        public async Task Start_NotInitAndEstimationCanceledFromServiceBus_MessageIgnored()
        {
            // Arrange
            var planningPoker = new Mock <IAzurePlanningPoker>(MockBehavior.Strict);
            var serviceBus    = new Mock <IServiceBus>(MockBehavior.Strict);
            var target        = CreatePlanningPokerAzureNode(planningPoker.Object, serviceBus.Object, CreateConfigutartion());

            var message     = new ScrumTeamMessage(TeamName, MessageType.EstimationCanceled);
            var nodeMessage = new NodeMessage(NodeMessageType.ScrumTeamMessage)
            {
                Data = message
            };
            var sendMessages = SetupServiceBus(serviceBus, target.NodeId, new string[] { TeamName }, nodeMessage);

            SetupPlanningPoker(planningPoker, null, true);
            planningPoker.Setup(p => p.DateTimeProvider).Returns(new DateTimeProviderMock()).Verifiable();

            // Act
            await target.Start();

            sendMessages();
            await target.Stop();

            // Verify
            planningPoker.Verify(p => p.GetScrumTeam(It.IsAny <string>()), Times.Never());
            planningPoker.Verify();
            serviceBus.Verify();
        }
コード例 #3
0
        public async Task Start_EstimationEnded_NoMessageIsSentToServiceBus()
        {
            // Arrange
            var planningPoker = new Mock <IAzurePlanningPoker>(MockBehavior.Strict);
            var serviceBus    = new Mock <IServiceBus>(MockBehavior.Strict);
            var target        = CreatePlanningPokerAzureNode(planningPoker.Object, serviceBus.Object, CreateConfigutartion());

            planningPoker.Setup(p => p.SetTeamsInitializingList(It.IsAny <IEnumerable <string> >()));
            planningPoker.Setup(p => p.EndInitialization());
            var message = new ScrumTeamMessage(TeamName, MessageType.EstimationEnded);
            var startPlanningPokerMsg = SetupPlanningPokerMsg(planningPoker, message);

            var sendServiceBusMsg = SetupServiceBus(serviceBus, target.NodeId, null);

            // Act
            await target.Start();

            sendServiceBusMsg();
            startPlanningPokerMsg();
            await target.Stop();

            // Verify
            planningPoker.Verify();
            serviceBus.Verify();
            serviceBus.Verify(b => b.SendMessage(It.Is <NodeMessage>(m => m.MessageType != NodeMessageType.RequestTeamList)), Times.Never());
        }
コード例 #4
0
        public void Constructor_TeamNameIsEmpty_ArgumentNullException()
        {
            // Arrange
            var teamName    = string.Empty;
            var messageType = MessageType.Empty;

            // Act
            var result = new ScrumTeamMessage(teamName, messageType);
        }
コード例 #5
0
        public void Constructor_MessageTypeSpecified_MessageTypeIsSet()
        {
            // Arrange
            var teamName    = "test";
            var messageType = MessageType.MemberJoined;

            // Act
            var result = new ScrumTeamMessage(teamName, messageType);

            // Verify
            Assert.AreEqual <MessageType>(messageType, result.MessageType);
        }
コード例 #6
0
        public void Constructor_TeamNameSpecified_TeamNameIsSet()
        {
            // Arrange
            var teamName    = "test";
            var messageType = MessageType.Empty;

            // Act
            var result = new ScrumTeamMessage(teamName, messageType);

            // Verify
            Assert.AreEqual <string>(teamName, result.TeamName);
        }
コード例 #7
0
        public void ConvertToBrokeredMessageAndBack_ScrumTeamMessage()
        {
            var scrumTeamMessage = new ScrumTeamMessage(TeamName, MessageType.EstimationStarted);
            var nodeMessage      = new NodeMessage(NodeMessageType.ScrumTeamMessage)
            {
                SenderNodeId = SenderId,
                Data         = scrumTeamMessage
            };

            var result     = ConvertToBrokeredMessageAndBack(nodeMessage);
            var resultData = (ScrumTeamMessage)result.Data;

            Assert.AreEqual(MessageType.EstimationStarted, resultData.MessageType);
            Assert.AreEqual(TeamName, resultData.TeamName);
        }
コード例 #8
0
        public void InitializeScrumTeam_TeamSpecified_TeamCreatedMessageIsNotSent()
        {
            // Arrange
            var target = new AzurePlanningPokerController();
            var team   = new ScrumTeam("team");

            target.SetTeamsInitializingList(new string[] { "team" });
            ScrumTeamMessage message = null;

            target.ObservableMessages.Subscribe(m => message = m);

            // Act
            target.InitializeScrumTeam(team);

            // Verify
            Assert.IsNull(message);
        }
コード例 #9
0
        public async Task Start_TeamCreatedMessage_MessageIsSentToServiceBus()
        {
            // Arrange
            var planningPoker = new Mock <IAzurePlanningPoker>(MockBehavior.Strict);
            var serviceBus    = new Mock <IServiceBus>(MockBehavior.Strict);
            var target        = CreatePlanningPokerAzureNode(planningPoker.Object, serviceBus.Object, CreateConfigutartion());

            planningPoker.Setup(p => p.SetTeamsInitializingList(It.IsAny <IEnumerable <string> >()));
            planningPoker.Setup(p => p.EndInitialization());
            var team     = CreateBasicTeam();
            var teamLock = CreateTeamLock(team);
            var message  = new ScrumTeamMessage(TeamName, MessageType.TeamCreated);
            var startPlanningPokerMsg = SetupPlanningPokerMsg(planningPoker, message);

            planningPoker.Setup(p => p.GetScrumTeam(TeamName)).Returns(teamLock.Object).Verifiable();

            var         sendServiceBusMsg = SetupServiceBus(serviceBus, target.NodeId, null);
            NodeMessage nodeMessage       = null;

            serviceBus.Setup(b => b.SendMessage(It.Is <NodeMessage>(m => m.MessageType == NodeMessageType.TeamCreated)))
            .Callback <NodeMessage>(m => nodeMessage = m).Returns(Task.CompletedTask).Verifiable();

            // Act
            await target.Start();

            sendServiceBusMsg();
            startPlanningPokerMsg();
            await target.Stop();

            // Verify
            planningPoker.Verify();
            serviceBus.Verify();
            teamLock.Verify();
            Assert.IsNotNull(nodeMessage);
            Assert.AreEqual <NodeMessageType>(NodeMessageType.TeamCreated, nodeMessage.MessageType);
            Assert.AreEqual <string>(target.NodeId, nodeMessage.SenderNodeId);
            Assert.IsNotNull(nodeMessage.Data);
            Assert.IsInstanceOfType(nodeMessage.Data, typeof(string));
            var expectedData = JsonConvert.SerializeObject(team.GetData());

            Assert.AreEqual(expectedData, (string)nodeMessage.Data);
        }
コード例 #10
0
        private static Action SetupPlanningPokerMsg(Mock <IAzurePlanningPoker> planningPoker, ScrumTeamMessage message)
        {
            var observableMessages = new Subject <ScrumTeamMessage>();

            planningPoker.Setup(p => p.ObservableMessages).Returns(observableMessages).Verifiable();
            return(new Action(
                       () =>
            {
                observableMessages.OnNext(message);
                observableMessages.OnCompleted();
            }));
        }