public void Start_TeamCreatedFromServiceBus_TeamAttachedToPlanningPoker() { // 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 nodeMessage = new NodeMessage(NodeMessageType.TeamCreated) { Data = CreateSerializedBasicTeam() }; var sendMessages = SetupServiceBus(serviceBus, target.NodeId, nodeMessage); var dateTimeProvider = new DateTimeProviderMock(); ScrumTeam team = null; planningPoker.Setup(p => p.AttachScrumTeam(It.IsAny <ScrumTeam>())) .Callback <ScrumTeam>(t => team = t).Returns <ScrumTeam>(null).Verifiable(); planningPoker.Setup(p => p.DateTimeProvider).Returns(dateTimeProvider).Verifiable(); planningPoker.Setup(p => p.ObservableMessages).Returns(Observable.Empty <ScrumTeamMessage>()).Verifiable(); planningPoker.Setup(p => p.SetTeamsInitializingList(It.IsAny <IEnumerable <string> >())); planningPoker.Setup(p => p.EndInitialization()); // Act target.Start(); sendMessages(); target.Stop(); // Verify planningPoker.Verify(); serviceBus.Verify(); Assert.IsNotNull(team); Assert.AreEqual <string>(TeamName, team.Name); Assert.AreEqual <DateTimeProvider>(dateTimeProvider, team.DateTimeProvider); }
public void Start_EstimationCanceledFromServiceBus_TeamEstimationCanceled() { // 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 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 target.Start(); sendMessages(); target.Stop(); // Verify planningPoker.Verify(); serviceBus.Verify(); teamLock.Verify(); Assert.AreEqual <TeamState>(TeamState.EstimationCanceled, team.State); }
public void Start_NotInitAndMasterActivityFromServiceBus_MessageIgnored() { // 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 ScrumTeamMemberMessage(TeamName, MessageType.MemberActivity) { MemberName = ScrumMasterName, MemberType = "ScrumMaster" }; 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 target.Start(); sendMessages(); 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 Start_EstimationEnded_NoMessageIsSentToServiceBus() { // Arrange var planningPoker = new Mock <IAzurePlanningPoker>(MockBehavior.Strict); var serviceBus = new Mock <IServiceBus>(MockBehavior.Strict); var target = new PlanningPokerAzureNode(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 target.Start(); sendServiceBusMsg(); startPlanningPokerMsg(); target.Stop(); // Verify planningPoker.Verify(); serviceBus.Verify(); serviceBus.Verify(b => b.SendMessage(It.Is <NodeMessage>(m => m.MessageType != NodeMessageType.RequestTeamList)), Times.Never()); }
public void Start_MemberJoined_MessageIsSentToServiceBus() { // Arrange var planningPoker = new Mock <IAzurePlanningPoker>(MockBehavior.Strict); var serviceBus = new Mock <IServiceBus>(MockBehavior.Strict); var target = new PlanningPokerAzureNode(planningPoker.Object, serviceBus.Object, CreateConfigutartion()); planningPoker.Setup(p => p.SetTeamsInitializingList(It.IsAny <IEnumerable <string> >())); planningPoker.Setup(p => p.EndInitialization()); var message = new ScrumTeamMemberMessage(TeamName, MessageType.MemberJoined) { MemberName = MemberName }; var startPlanningPokerMsg = SetupPlanningPokerMsg(planningPoker, message); var sendServiceBusMsg = SetupServiceBus(serviceBus, target.NodeId, null); NodeMessage nodeMessage = null; serviceBus.Setup(b => b.SendMessage(It.Is <NodeMessage>(m => m.MessageType == NodeMessageType.ScrumTeamMessage))).Callback <NodeMessage>(m => nodeMessage = m).Verifiable(); // Act target.Start(); sendServiceBusMsg(); startPlanningPokerMsg(); target.Stop(); // Verify planningPoker.Verify(); serviceBus.Verify(); Assert.IsNotNull(nodeMessage); Assert.AreEqual <NodeMessageType>(NodeMessageType.ScrumTeamMessage, nodeMessage.MessageType); Assert.AreEqual <string>(target.NodeId, nodeMessage.SenderNodeId); Assert.AreEqual(message, nodeMessage.Data); }
public void Start_RequestTeamListMessageReceived_TeamListIsSentToServiceBus() { // 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 nodeMessage = new NodeMessage(NodeMessageType.RequestTeamList) { SenderNodeId = "sender" }; serviceBus.Setup(b => b.SendMessage(It.IsAny <NodeMessage>())); var sendMessages = SetupServiceBus(serviceBus, target.NodeId, nodeMessage); NodeMessage teamListMessage = null; serviceBus.Setup(b => b.SendMessage(It.Is <NodeMessage>(m => m.MessageType == NodeMessageType.TeamList))) .Callback <NodeMessage>(m => teamListMessage = m).Verifiable(); var teamList = new string[] { TeamName }; planningPoker.Setup(p => p.ObservableMessages).Returns(Observable.Empty <ScrumTeamMessage>()); planningPoker.Setup(p => p.DateTimeProvider).Returns(DateTimeProvider.Default); planningPoker.Setup(p => p.SetTeamsInitializingList(It.IsAny <IEnumerable <string> >())); planningPoker.Setup(p => p.EndInitialization()); planningPoker.Setup(p => p.ScrumTeamNames).Returns(teamList); // Act target.Start(); sendMessages(); target.Stop(); // Verify planningPoker.Verify(); serviceBus.Verify(); Assert.IsNotNull(teamListMessage); Assert.IsNotNull(teamListMessage.Data); CollectionAssert.AreEquivalent(teamList, (string[])teamListMessage.Data); Assert.AreEqual <string>(nodeMessage.SenderNodeId, teamListMessage.RecipientNodeId); }
public void Start_MasterActivityFromServiceBus_MasterUpdatedActivityInTeam() { // 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 ScrumTeamMemberMessage(TeamName, MessageType.MemberActivity) { MemberName = ScrumMasterName, MemberType = "ScrumMaster" }; var nodeMessage = new NodeMessage(NodeMessageType.ScrumTeamMessage) { Data = message }; var sendMessages = SetupServiceBus(serviceBus, target.NodeId, nodeMessage); var dateTimeProvider = new DateTimeProviderMock(); dateTimeProvider.SetUtcNow(new DateTime(2012, 9, 9, 23, 27, 33, DateTimeKind.Utc)); var team = new ScrumTeam(TeamName, dateTimeProvider); team.SetScrumMaster(ScrumMasterName); var teamLock = SetupPlanningPoker(planningPoker, team); dateTimeProvider.SetUtcNow(new DateTime(2012, 9, 9, 23, 28, 27, DateTimeKind.Utc)); // Act target.Start(); sendMessages(); target.Stop(); // Verify planningPoker.Verify(); serviceBus.Verify(); teamLock.Verify(); Assert.AreEqual <DateTime>(dateTimeProvider.UtcNow, team.ScrumMaster.LastActivity); }
public void Start_RequestTeamsMessageReceivedButTeamDoesNotExistAnymore_TeamNameIsSentToServiceBus() { // 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 teamList = new string[] { TeamName }; var nodeMessage = new NodeMessage(NodeMessageType.RequestTeams) { Data = teamList }; serviceBus.Setup(b => b.SendMessage(It.IsAny <NodeMessage>())); var sendMessages = SetupServiceBus(serviceBus, target.NodeId, nodeMessage); NodeMessage initializeTeamMessage = null; serviceBus.Setup(b => b.SendMessage(It.Is <NodeMessage>(m => m.MessageType == NodeMessageType.InitializeTeam))) .Callback <NodeMessage>(m => initializeTeamMessage = m).Verifiable(); planningPoker.Setup(p => p.SetTeamsInitializingList(It.IsAny <IEnumerable <string> >())); planningPoker.Setup(p => p.EndInitialization()).Verifiable(); planningPoker.Setup(p => p.ObservableMessages).Returns(Observable.Empty <ScrumTeamMessage>()).Verifiable(); planningPoker.Setup(p => p.GetScrumTeam(TeamName)).Throws(new ArgumentException()).Verifiable(); // Act target.Start(); sendMessages(); target.Stop(); // Verify planningPoker.Verify(); serviceBus.Verify(); Assert.IsNotNull(initializeTeamMessage); Assert.IsNotNull(initializeTeamMessage.Data); Assert.IsInstanceOfType(initializeTeamMessage.Data, typeof(string)); Assert.AreEqual <string>(TeamName, (string)initializeTeamMessage.Data); Assert.AreEqual <string>(nodeMessage.SenderNodeId, initializeTeamMessage.RecipientNodeId); }
public void Start_TeamCreatedMessage_MessageIsSentToServiceBus() { // Arrange var planningPoker = new Mock <IAzurePlanningPoker>(MockBehavior.Strict); var serviceBus = new Mock <IServiceBus>(MockBehavior.Strict); var target = new PlanningPokerAzureNode(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).Verifiable(); // Act target.Start(); sendServiceBusMsg(); startPlanningPokerMsg(); 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(byte[])); }
public void Start_ObserverJoinedFromServiceBus_ObserverJoinedTeam() { // 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 ScrumTeamMemberMessage(TeamName, MessageType.MemberJoined) { MemberName = ObserverName, MemberType = "Observer" }; var nodeMessage = new NodeMessage(NodeMessageType.ScrumTeamMessage) { Data = message }; var sendMessages = SetupServiceBus(serviceBus, target.NodeId, nodeMessage); var team = CreateBasicTeam(); var teamLock = SetupPlanningPoker(planningPoker, team); // Act target.Start(); sendMessages(); target.Stop(); // Verify planningPoker.Verify(); serviceBus.Verify(); teamLock.Verify(); var observer = team.FindMemberOrObserver(ObserverName); Assert.IsNotNull(observer); Assert.IsInstanceOfType(observer, typeof(Observer)); Assert.AreEqual <string>(ObserverName, observer.Name); }
public Task StartAsync(CancellationToken cancellationToken) { _node.Start(); return(Task.CompletedTask); }