public async Task ReconnectTeam_TeamAndMemberName_ReturnsScrumTeamWithEstimationFinished()
        {
            var estimationResultJson = PlanningPokerClientData.GetEstimationResultJson(scrumMasterEstimation: "null", memberEstimation: "-1111100");
            var scrumTeamJson        = PlanningPokerClientData.GetScrumTeamJson(member: true, observer: true, state: 2, estimationResult: estimationResultJson);
            var httpMock             = new MockHttpMessageHandler();

            httpMock.When(BaseUrl + $"api/PlanningPokerService/ReconnectTeam")
            .Respond(JsonType, PlanningPokerClientData.GetReconnectTeamResultJson(scrumTeamJson, lastMessageId: "123", selectedEstimation: "-1111100"));
            var target = CreatePlanningPokerClient(httpMock);

            var result = await target.ReconnectTeam(PlanningPokerClientData.TeamName, PlanningPokerClientData.MemberName, CancellationToken.None);

            Assert.IsNotNull(result.ScrumTeam);
            Assert.AreEqual(PlanningPokerClientData.ReconnectSessionId, result.SessionId);
            Assert.AreEqual(123, result.LastMessageId);
            Assert.IsNotNull(result.SelectedEstimation);
            Assert.IsNotNull(result.SelectedEstimation.Value);
            Assert.IsTrue(double.IsPositiveInfinity(result.SelectedEstimation.Value.Value));

            var scrumTeam = result.ScrumTeam;

            Assert.AreEqual(TeamState.EstimationFinished, scrumTeam.State);
            Assert.AreEqual(PlanningPokerClientData.TeamName, scrumTeam.Name);
            Assert.AreEqual(PlanningPokerClientData.ScrumMasterName, scrumTeam.ScrumMaster.Name);
            Assert.AreEqual(PlanningPokerClientData.ScrumMasterType, scrumTeam.ScrumMaster.Type);

            Assert.AreEqual(2, scrumTeam.Members.Count);
            var member = scrumTeam.Members[0];

            Assert.AreEqual(PlanningPokerClientData.ScrumMasterName, member.Name);
            Assert.AreEqual(PlanningPokerClientData.ScrumMasterType, member.Type);

            member = scrumTeam.Members[1];
            Assert.AreEqual(PlanningPokerClientData.MemberName, member.Name);
            Assert.AreEqual(PlanningPokerClientData.MemberType, member.Type);

            Assert.AreEqual(1, scrumTeam.Observers.Count);
            member = scrumTeam.Observers[0];
            Assert.AreEqual(PlanningPokerClientData.ObserverName, member.Name);
            Assert.AreEqual(PlanningPokerClientData.ObserverType, member.Type);

            AssertAvailableEstimations(scrumTeam);

            Assert.AreEqual(2, scrumTeam.EstimationResult.Count);
            var estimationResult = scrumTeam.EstimationResult[0];

            Assert.AreEqual(PlanningPokerClientData.ScrumMasterName, estimationResult.Member.Name);
            Assert.AreEqual(PlanningPokerClientData.ScrumMasterType, estimationResult.Member.Type);
            Assert.IsNull(estimationResult.Estimation.Value);

            estimationResult = scrumTeam.EstimationResult[1];
            Assert.AreEqual(PlanningPokerClientData.MemberName, estimationResult.Member.Name);
            Assert.AreEqual(PlanningPokerClientData.MemberType, estimationResult.Member.Type);
            Assert.IsTrue(double.IsPositiveInfinity(estimationResult.Estimation.Value.Value));

            Assert.AreEqual(0, scrumTeam.EstimationParticipants.Count);
        }
        public async Task JoinTeam_TeamAndMemberName_ReturnsScrumTeamWithEstimationFinished()
        {
            var estimationResultJson = PlanningPokerClientData.GetEstimationResultJson();
            var scrumTeamJson        = PlanningPokerClientData.GetScrumTeamJson(member: true, observer: true, state: 2, estimationResult: estimationResultJson);
            var httpMock             = new MockHttpMessageHandler();

            httpMock.When(BaseUrl + $"api/PlanningPokerService/JoinTeam")
            .Respond(JsonType, PlanningPokerClientData.GetTeamResultJson(scrumTeamJson));
            var target = CreatePlanningPokerClient(httpMock);

            var result = await target.JoinTeam(PlanningPokerClientData.TeamName, PlanningPokerClientData.MemberName, false, CancellationToken.None);

            Assert.IsNotNull(result);
            Assert.AreEqual(PlanningPokerClientData.SessionId, result.SessionId);

            var resultTeam = result.ScrumTeam;

            Assert.IsNotNull(resultTeam);
            Assert.AreEqual(TeamState.EstimationFinished, resultTeam.State);
            Assert.AreEqual(PlanningPokerClientData.TeamName, resultTeam.Name);
            Assert.AreEqual(PlanningPokerClientData.ScrumMasterName, resultTeam.ScrumMaster.Name);
            Assert.AreEqual(PlanningPokerClientData.ScrumMasterType, resultTeam.ScrumMaster.Type);

            Assert.AreEqual(2, resultTeam.Members.Count);
            var member = resultTeam.Members[0];

            Assert.AreEqual(PlanningPokerClientData.ScrumMasterName, member.Name);
            Assert.AreEqual(PlanningPokerClientData.ScrumMasterType, member.Type);

            member = resultTeam.Members[1];
            Assert.AreEqual(PlanningPokerClientData.MemberName, member.Name);
            Assert.AreEqual(PlanningPokerClientData.MemberType, member.Type);

            Assert.AreEqual(1, resultTeam.Observers.Count);
            member = resultTeam.Observers[0];
            Assert.AreEqual(PlanningPokerClientData.ObserverName, member.Name);
            Assert.AreEqual(PlanningPokerClientData.ObserverType, member.Type);

            AssertAvailableEstimations(resultTeam);

            Assert.AreEqual(2, resultTeam.EstimationResult.Count);
            var estimationResult = resultTeam.EstimationResult[0];

            Assert.AreEqual(PlanningPokerClientData.ScrumMasterName, estimationResult.Member.Name);
            Assert.AreEqual(PlanningPokerClientData.ScrumMasterType, estimationResult.Member.Type);
            Assert.AreEqual(5.0, estimationResult.Estimation.Value);

            estimationResult = resultTeam.EstimationResult[1];
            Assert.AreEqual(PlanningPokerClientData.MemberName, estimationResult.Member.Name);
            Assert.AreEqual(PlanningPokerClientData.MemberType, estimationResult.Member.Type);
            Assert.AreEqual(20.0, estimationResult.Estimation.Value);

            Assert.AreEqual(0, resultTeam.EstimationParticipants.Count);
        }