public async Task Start_NotInitAndMasterEstimatedFromServiceBus_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 ScrumTeamMemberEstimationMessage(TeamName, MessageType.MemberEstimated)
            {
                MemberName = ScrumMasterName,
                Estimation = 5.0
            };
            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();
        }
        public void Start_MasterEstimatedFromServiceBus_MasterEstimationIsSet()
        {
            // Arrange
            var planningPoker = new Mock <IAzurePlanningPoker>(MockBehavior.Strict);
            var serviceBus    = new Mock <IServiceBus>(MockBehavior.Strict);
            var target        = new PlanningPokerAzureNode(planningPoker.Object, serviceBus.Object, CreateConfigutartion());

            var message = new ScrumTeamMemberEstimationMessage(TeamName, MessageType.MemberEstimated)
            {
                MemberName = ScrumMasterName,
                Estimation = 5.0
            };
            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
            target.Start();
            sendMessages();
            target.Stop();

            // Verify
            planningPoker.Verify();
            serviceBus.Verify();
            teamLock.Verify();
            Assert.IsNotNull(team.ScrumMaster.Estimation);
            Assert.AreEqual <double?>(5.0, team.ScrumMaster.Estimation.Value);
        }
        public void ConvertToBrokeredMessageAndBack_ScrumTeamMemberEstimationMessage()
        {
            var scrumTeamMessage = new ScrumTeamMemberEstimationMessage(TeamName, MessageType.MemberEstimated)
            {
                MemberName = "Scrum Master",
                Estimation = 8
            };
            var nodeMessage = new NodeMessage(NodeMessageType.ScrumTeamMessage)
            {
                SenderNodeId = SenderId,
                Data         = scrumTeamMessage
            };

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

            Assert.AreEqual(MessageType.MemberEstimated, resultData.MessageType);
            Assert.AreEqual(TeamName, resultData.TeamName);
            Assert.AreEqual(scrumTeamMessage.MemberName, resultData.MemberName);
            Assert.AreEqual(scrumTeamMessage.Estimation, resultData.Estimation);
        }