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); }
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(); }
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()); }
public void Constructor_TeamNameIsEmpty_ArgumentNullException() { // Arrange var teamName = string.Empty; var messageType = MessageType.Empty; // Act var result = new ScrumTeamMessage(teamName, messageType); }
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); }
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); }
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); }
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); }
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); }
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(); })); }