public async Task GetMessages_TeamAndMemberName_ReturnsEstimationEndedMessage()
        {
            await using var fixture = new PlanningPokerSignalRClientFixture();

            var resultTask = fixture.Target.GetMessages(PlanningPokerData.TeamName, PlanningPokerData.MemberName, 0, fixture.CancellationToken);

            var message = new EstimationResultMessage
            {
                Id               = 8,
                Type             = MessageType.EstimationEnded,
                EstimationResult = new List <EstimationResultItem>
                {
                    new EstimationResultItem
                    {
                        Member = new TeamMember {
                            Name = PlanningPokerData.ScrumMasterName, Type = PlanningPokerData.ScrumMasterType
                        },
                        Estimation = new Estimation {
                            Value = 2
                        }
                    },
                    new EstimationResultItem
                    {
                        Member = new TeamMember {
                            Name = PlanningPokerData.MemberName, Type = PlanningPokerData.MemberType
                        },
                        Estimation = new Estimation()
                    },
                    new EstimationResultItem
                    {
                        Member = new TeamMember {
                            Name = "Me", Type = PlanningPokerData.MemberType
                        }
                    },
                    new EstimationResultItem
                    {
                        Member = new TeamMember {
                            Name = PlanningPokerData.ObserverName, Type = PlanningPokerData.MemberType
                        },
                        Estimation = new Estimation {
                            Value = Estimation.PositiveInfinity
                        }
                    }
                }
            };

            await ProvideMessages(fixture, message);

            var result = await resultTask;
            await Task.Yield();

            Assert.AreEqual(1, result.Count);
            Assert.AreEqual(message, result[0]);
            var estimationResult = ((EstimationResultMessage)result[0]).EstimationResult;

            Assert.AreEqual(2.0, estimationResult[0].Estimation.Value);
            Assert.IsNull(estimationResult[1].Estimation.Value);
            Assert.IsNull(estimationResult[2].Estimation);
            Assert.IsTrue(double.IsPositiveInfinity(estimationResult[3].Estimation.Value.Value));
        }
예제 #2
0
        public void Constructor_TypeSpecified_MessageTypeIsSet()
        {
            // Arrange
            var type = MessageType.EstimationEnded;

            // Act
            var result = new EstimationResultMessage(type);

            // Verify
            Assert.AreEqual <MessageType>(type, result.MessageType);
        }
예제 #3
0
        public void EstimationResult_Set_EstimationResultIsSet()
        {
            // Arrange
            var target           = new EstimationResultMessage(MessageType.EstimationEnded);
            var estimationResult = new EstimationResult(Enumerable.Empty <Member>());

            // Act
            target.EstimationResult = estimationResult;

            // Verify
            Assert.AreEqual <EstimationResult>(estimationResult, target.EstimationResult);
        }
        public void JsonSerialize_Message_EstimationEnded()
        {
            var message = new EstimationResultMessage
            {
                Id               = 10,
                Type             = MessageType.EstimationEnded,
                EstimationResult = new List <EstimationResultItem>
                {
                    new EstimationResultItem
                    {
                        Member = new TeamMember {
                            Name = "master", Type = "ScrumMaster"
                        },
                        Estimation = new Estimation {
                            Value = 8
                        }
                    },
                    new EstimationResultItem
                    {
                        Member = new TeamMember {
                            Name = "dev", Type = "Member"
                        },
                        Estimation = new Estimation {
                            Value = 13
                        }
                    }
                }
            };

            var result = SerializeAndDeserialize <Message>(message);

            Assert.IsNotNull(result);
            Assert.AreEqual(message.Id, result.Id);
            Assert.AreEqual(message.Type, result.Type);

            Assert.IsInstanceOfType(result, typeof(EstimationResultMessage));
            var estimationResult = (EstimationResultMessage)result;

            Assert.AreEqual(message.EstimationResult[0].Member.Name, estimationResult.EstimationResult[0].Member.Name);
            Assert.AreEqual(message.EstimationResult[0].Member.Type, estimationResult.EstimationResult[0].Member.Type);
            Assert.AreEqual(message.EstimationResult[0].Estimation.Value, estimationResult.EstimationResult[0].Estimation.Value);
            Assert.AreEqual(message.EstimationResult[1].Member.Name, estimationResult.EstimationResult[1].Member.Name);
            Assert.AreEqual(message.EstimationResult[1].Member.Type, estimationResult.EstimationResult[1].Member.Type);
            Assert.AreEqual(message.EstimationResult[1].Estimation.Value, estimationResult.EstimationResult[1].Estimation.Value);
        }
예제 #5
0
 private static void AssertEstimationResultMessagesAreEqual(EstimationResultMessage expected, EstimationResultMessage actual)
 {
     AssertEstimationResultsAreEqual(expected.EstimationResult, actual.EstimationResult);
 }
예제 #6
0
 private void OnEstimationEnded(EstimationResultMessage message)
 {
     _memberEstimations = GetMemberEstimationList(message.EstimationResult);
     ScrumTeam.State    = TeamState.EstimationFinished;
 }
예제 #7
0
        public async Task ProcessMessages_EstimationEndedAndSameEstimationCountWithNull_6Estimations()
        {
            var propertyChangedCounter = new PropertyChangedCounter();
            var scrumTeam = PlanningPokerData.GetScrumTeam();

            scrumTeam.Members.Add(new TeamMember {
                Type = PlanningPokerData.MemberType, Name = "Developer 1"
            });
            scrumTeam.Members.Add(new TeamMember {
                Type = PlanningPokerData.MemberType, Name = "Developer 2"
            });
            scrumTeam.Members.Add(new TeamMember {
                Type = PlanningPokerData.MemberType, Name = "Tester 1"
            });
            scrumTeam.Members.Add(new TeamMember {
                Type = PlanningPokerData.MemberType, Name = "Tester 2"
            });
            var target = CreateController(propertyChangedCounter);
            await target.InitializeTeam(scrumTeam, PlanningPokerData.MemberName);

            var message = new EstimationResultMessage
            {
                Id               = 10,
                Type             = MessageType.EstimationEnded,
                EstimationResult = new List <EstimationResultItem>
                {
                    new EstimationResultItem
                    {
                        Member = new TeamMember {
                            Type = PlanningPokerData.ScrumMasterType, Name = PlanningPokerData.ScrumMasterName
                        },
                        Estimation = new Estimation {
                            Value = double.PositiveInfinity
                        }
                    },
                    new EstimationResultItem
                    {
                        Member = new TeamMember {
                            Type = PlanningPokerData.MemberType, Name = "Developer 2"
                        },
                        Estimation = new Estimation {
                            Value = null
                        }
                    },
                    new EstimationResultItem
                    {
                        Member = new TeamMember {
                            Type = PlanningPokerData.MemberType, Name = "Tester 1"
                        },
                        Estimation = new Estimation {
                            Value = null
                        }
                    },
                    new EstimationResultItem
                    {
                        Member = new TeamMember {
                            Type = PlanningPokerData.MemberType, Name = PlanningPokerData.MemberName
                        },
                        Estimation = new Estimation {
                            Value = double.PositiveInfinity
                        }
                    },
                    new EstimationResultItem
                    {
                        Member = new TeamMember {
                            Type = PlanningPokerData.MemberType, Name = "Developer 1"
                        },
                        Estimation = new Estimation {
                            Value = 5
                        }
                    },
                    new EstimationResultItem
                    {
                        Member = new TeamMember {
                            Type = PlanningPokerData.MemberType, Name = "Tester 2"
                        },
                        Estimation = new Estimation {
                            Value = 5
                        }
                    }
                }
            };

            StartEstimation(target);
            ProcessMessage(target, message);

            Assert.AreEqual(2, propertyChangedCounter.Count);
            Assert.AreEqual(10, target.LastMessageId);
            Assert.AreEqual(TeamState.EstimationFinished, target.ScrumTeam.State);
            Assert.IsFalse(target.CanSelectEstimation);
            Assert.IsFalse(target.CanStartEstimation);
            Assert.IsFalse(target.CanCancelEstimation);

            var estimations = target.Estimations.ToList();

            Assert.AreEqual(6, estimations.Count);

            var estimation = estimations[0];

            Assert.AreEqual("Developer 1", estimation.MemberName);
            Assert.IsTrue(estimation.HasEstimation);
            Assert.AreEqual(5.0, estimation.Estimation);

            estimation = estimations[1];
            Assert.AreEqual("Tester 2", estimation.MemberName);
            Assert.IsTrue(estimation.HasEstimation);
            Assert.AreEqual(5.0, estimation.Estimation);

            estimation = estimations[2];
            Assert.AreEqual(PlanningPokerData.MemberName, estimation.MemberName);
            Assert.IsTrue(estimation.HasEstimation);
            Assert.AreEqual(double.PositiveInfinity, estimation.Estimation);

            estimation = estimations[3];
            Assert.AreEqual(PlanningPokerData.ScrumMasterName, estimation.MemberName);
            Assert.IsTrue(estimation.HasEstimation);
            Assert.AreEqual(double.PositiveInfinity, estimation.Estimation);

            estimation = estimations[4];
            Assert.AreEqual("Developer 2", estimation.MemberName);
            Assert.IsTrue(estimation.HasEstimation);
            Assert.IsNull(estimation.Estimation);

            estimation = estimations[5];
            Assert.AreEqual("Tester 1", estimation.MemberName);
            Assert.IsTrue(estimation.HasEstimation);
            Assert.IsNull(estimation.Estimation);
        }
예제 #8
0
        public async Task ProcessMessages_EstimationEnded_5Estimations()
        {
            var propertyChangedCounter = new PropertyChangedCounter();
            var scrumTeam = PlanningPokerData.GetScrumTeam();

            scrumTeam.Members.Add(new TeamMember {
                Type = PlanningPokerData.MemberType, Name = "Developer 1"
            });
            scrumTeam.Members.Add(new TeamMember {
                Type = PlanningPokerData.MemberType, Name = "Tester"
            });
            scrumTeam.Members.Add(new TeamMember {
                Type = PlanningPokerData.MemberType, Name = "Developer 2"
            });
            var target = CreateController(propertyChangedCounter);
            await target.InitializeTeam(scrumTeam, PlanningPokerData.ScrumMasterName);

            var message1 = new MemberMessage
            {
                Id     = 5,
                Type   = MessageType.MemberEstimated,
                Member = new TeamMember
                {
                    Type = PlanningPokerData.MemberType,
                    Name = "Developer 1"
                }
            };
            var message2 = new MemberMessage
            {
                Id     = 6,
                Type   = MessageType.MemberEstimated,
                Member = new TeamMember
                {
                    Type = PlanningPokerData.MemberType,
                    Name = PlanningPokerData.MemberName
                }
            };
            var message3 = new MemberMessage
            {
                Id     = 7,
                Type   = MessageType.MemberEstimated,
                Member = new TeamMember
                {
                    Type = PlanningPokerData.ScrumMasterType,
                    Name = PlanningPokerData.ScrumMasterName
                }
            };
            var message4 = new MemberMessage
            {
                Id     = 8,
                Type   = MessageType.MemberEstimated,
                Member = new TeamMember
                {
                    Type = PlanningPokerData.MemberType,
                    Name = "Tester"
                }
            };
            var message5 = new MemberMessage
            {
                Id     = 9,
                Type   = MessageType.MemberEstimated,
                Member = new TeamMember
                {
                    Type = PlanningPokerData.MemberType,
                    Name = "Developer 2"
                }
            };

            var message = new EstimationResultMessage
            {
                Id               = 10,
                Type             = MessageType.EstimationEnded,
                EstimationResult = new List <EstimationResultItem>
                {
                    new EstimationResultItem
                    {
                        Member = new TeamMember {
                            Type = PlanningPokerData.MemberType, Name = "Developer 1"
                        },
                        Estimation = new Estimation {
                            Value = 8
                        }
                    },
                    new EstimationResultItem
                    {
                        Member = new TeamMember {
                            Type = PlanningPokerData.MemberType, Name = "Tester"
                        },
                        Estimation = new Estimation {
                            Value = 8
                        }
                    },
                    new EstimationResultItem
                    {
                        Member = new TeamMember {
                            Type = PlanningPokerData.ScrumMasterType, Name = PlanningPokerData.ScrumMasterName
                        },
                        Estimation = new Estimation {
                            Value = 3
                        }
                    },
                    new EstimationResultItem
                    {
                        Member = new TeamMember {
                            Type = PlanningPokerData.MemberType, Name = PlanningPokerData.MemberName
                        },
                        Estimation = new Estimation {
                            Value = 8
                        }
                    },
                    new EstimationResultItem
                    {
                        Member = new TeamMember {
                            Type = PlanningPokerData.MemberType, Name = "Developer 2"
                        },
                        Estimation = new Estimation {
                            Value = 2
                        }
                    }
                }
            };

            StartEstimation(target);
            ProcessMessage(target, message1);
            target.ProcessMessages(new Message[] { message2, message3, message4 });
            target.ProcessMessages(new Message[] { message5, message });

            Assert.AreEqual(7, propertyChangedCounter.Count);
            Assert.AreEqual(10, target.LastMessageId);
            Assert.AreEqual(TeamState.EstimationFinished, target.ScrumTeam.State);
            Assert.IsFalse(target.CanSelectEstimation);
            Assert.IsTrue(target.CanStartEstimation);
            Assert.IsFalse(target.CanCancelEstimation);

            var estimations = target.Estimations.ToList();

            Assert.AreEqual(5, estimations.Count);

            var estimation = estimations[0];

            Assert.AreEqual("Developer 1", estimation.MemberName);
            Assert.IsTrue(estimation.HasEstimation);
            Assert.AreEqual(8.0, estimation.Estimation);

            estimation = estimations[1];
            Assert.AreEqual(PlanningPokerData.MemberName, estimation.MemberName);
            Assert.IsTrue(estimation.HasEstimation);
            Assert.AreEqual(8.0, estimation.Estimation);

            estimation = estimations[2];
            Assert.AreEqual("Tester", estimation.MemberName);
            Assert.IsTrue(estimation.HasEstimation);
            Assert.AreEqual(8.0, estimation.Estimation);

            estimation = estimations[3];
            Assert.AreEqual("Developer 2", estimation.MemberName);
            Assert.IsTrue(estimation.HasEstimation);
            Assert.AreEqual(2.0, estimation.Estimation);

            estimation = estimations[4];
            Assert.AreEqual(PlanningPokerData.ScrumMasterName, estimation.MemberName);
            Assert.IsTrue(estimation.HasEstimation);
            Assert.AreEqual(3.0, estimation.Estimation);
        }
        public async Task GetMessages_TeamAndMemberName_Returns3Messages()
        {
            await using var fixture = new PlanningPokerSignalRClientFixture();

            var resultTask = fixture.Target.GetMessages(PlanningPokerData.TeamName, PlanningPokerData.MemberName, 0, fixture.CancellationToken);

            var estimationStartedMessage = new Message
            {
                Id   = 8,
                Type = MessageType.EstimationStarted
            };
            var memberEstimatedMessage = new MemberMessage
            {
                Id     = 9,
                Type   = MessageType.MemberEstimated,
                Member = new TeamMember {
                    Name = PlanningPokerData.ScrumMasterName, Type = PlanningPokerData.ScrumMasterType
                }
            };
            var estimationEndedMessage = new EstimationResultMessage
            {
                Id               = 10,
                Type             = MessageType.MemberEstimated,
                EstimationResult = new List <EstimationResultItem>
                {
                    new EstimationResultItem
                    {
                        Member = new TeamMember {
                            Name = PlanningPokerData.ScrumMasterName, Type = PlanningPokerData.ScrumMasterType
                        },
                        Estimation = new Estimation {
                            Value = 5
                        }
                    },
                    new EstimationResultItem
                    {
                        Member = new TeamMember {
                            Name = PlanningPokerData.MemberName, Type = PlanningPokerData.MemberType
                        },
                        Estimation = new Estimation {
                            Value = 40
                        }
                    }
                }
            };

            await ProvideMessages(fixture, estimationStartedMessage, memberEstimatedMessage, estimationEndedMessage);

            var result = await resultTask;
            await Task.Yield();

            Assert.AreEqual(3, result.Count);
            Assert.AreEqual(estimationStartedMessage, result[0]);
            Assert.AreEqual(memberEstimatedMessage, result[1]);
            Assert.AreEqual(estimationEndedMessage, result[2]);

            var estimationResult = ((EstimationResultMessage)result[2]).EstimationResult;

            Assert.AreEqual(5.0, estimationResult[0].Estimation.Value);
            Assert.AreEqual(40.0, estimationResult[1].Estimation.Value);
        }