Ejemplo n.º 1
0
        public void SetScrumMaster_ScrumMasterIsAlreadySet_InvalidOperationException()
        {
            // Arrange
            var name   = "test";
            var target = new ScrumTeam("test team");

            target.SetScrumMaster("master");

            // Act
            var result = target.SetScrumMaster(name);
        }
Ejemplo n.º 2
0
        public void EstimationParticipants_MemberEstimated_MemberEstimatedButNotScrumMaster()
        {
            // Arrange
            var target = new ScrumTeam("test team");
            var master = target.SetScrumMaster("master");
            var member = target.Join("member", false);

            master.StartEstimation();

            // Act
            var result = target.EstimationParticipants;

            // Verify
            Assert.IsNotNull(result);
            Assert.AreEqual <int>(2, result.Count());

            var masterParticipant = result.First(p => p.MemberName == master.Name);

            Assert.IsNotNull(masterParticipant);
            Assert.IsFalse(masterParticipant.Estimated);

            var memberParticipant = result.First(p => p.MemberName == member.Name);

            Assert.IsNotNull(memberParticipant);
            Assert.IsFalse(memberParticipant.Estimated);
        }
Ejemplo n.º 3
0
        public void DisconnectInactiveObservers_EstimationStartedActiveScrumMasterInactiveMember_ScrumMasterGetsEstimationResult()
        {
            // Arrange
            var dateTimeProvider = new DateTimeProviderMock();

            dateTimeProvider.SetUtcNow(new DateTime(2012, 1, 1, 3, 2, 20));

            var target = new ScrumTeam("test team", dateTimeProvider);
            var master = target.SetScrumMaster("master");
            var member = (Member)target.Join("member", false);

            master.StartEstimation();

            dateTimeProvider.SetUtcNow(new DateTime(2012, 1, 1, 3, 2, 30));
            master.Estimation = new Estimation();
            master.UpdateActivity();

            dateTimeProvider.SetUtcNow(new DateTime(2012, 1, 1, 3, 2, 55));
            TestHelper.ClearMessages(master);

            // Act
            target.DisconnectInactiveObservers(TimeSpan.FromSeconds(30.0));

            // Verify
            Assert.AreEqual <TeamState>(TeamState.EstimationFinished, target.State);
            Assert.IsNotNull(target.EstimationResult);

            Assert.IsTrue(master.HasMessage);
            master.PopMessage();
            Assert.IsTrue(master.HasMessage);
            var message = master.PopMessage();

            Assert.AreEqual <MessageType>(MessageType.EstimationEnded, message.MessageType);
        }
Ejemplo n.º 4
0
        public void Estimation_SetOnAllMembers_EstimationResultIsGeneratedForScrumTeam()
        {
            // Arrange
            var team   = new ScrumTeam("test team");
            var master = team.SetScrumMaster("master");
            var member = (Member)team.Join("member", false);

            master.StartEstimation();
            MessageReceivedEventArgs eventArgs = null;

            team.MessageReceived += new EventHandler <MessageReceivedEventArgs>((s, e) => eventArgs = e);
            var masterEstimation = new Estimation();
            var memberEstimation = new Estimation();

            // Act
            master.Estimation = masterEstimation;
            member.Estimation = memberEstimation;

            // Verify
            Assert.IsNotNull(eventArgs);
            var message = eventArgs.Message;

            Assert.IsInstanceOfType(message, typeof(EstimationResultMessage));
            var estimationResultMessage = (EstimationResultMessage)message;

            Assert.AreEqual <EstimationResult>(team.EstimationResult, estimationResultMessage.EstimationResult);
        }
Ejemplo n.º 5
0
        public void Estimation_SetOnAllMembers_EstimationResultIsGeneratedForMember()
        {
            // Arrange
            var team   = new ScrumTeam("test team");
            var master = team.SetScrumMaster("master");
            var member = (Member)team.Join("member", false);

            master.StartEstimation();
            var masterEstimation = new Estimation(1);
            var memberEstimation = new Estimation(1);

            // Act
            master.Estimation = masterEstimation;
            member.ClearMessages();
            member.Estimation = memberEstimation;

            // Verify
            Assert.IsTrue(member.HasMessage);
            Assert.AreEqual(2, member.Messages.Count());
            var message = member.Messages.Last();

            Assert.IsInstanceOfType(message, typeof(EstimationResultMessage));
            var estimationResultMessage = (EstimationResultMessage)message;

            Assert.AreEqual <EstimationResult>(team.EstimationResult, estimationResultMessage.EstimationResult);
        }
        private static ScrumTeam CreateBasicTeam()
        {
            var result = new ScrumTeam(TeamName);

            result.SetScrumMaster(ScrumMasterName);
            return(result);
        }
Ejemplo n.º 7
0
        /// <summary>
        /// Creates new Scrum team with specified Scrum master.
        /// </summary>
        /// <param name="teamName">Name of the team.</param>
        /// <param name="scrumMasterName">Name of the Scrum master.</param>
        /// <param name="deck">Selected deck of estimation cards to use in the team.</param>
        /// <returns>
        /// The new Scrum team.
        /// </returns>
        public IScrumTeamLock CreateScrumTeam(string teamName, string scrumMasterName, Deck deck)
        {
            if (string.IsNullOrEmpty(teamName))
            {
                throw new ArgumentNullException(nameof(teamName));
            }

            if (string.IsNullOrEmpty(scrumMasterName))
            {
                throw new ArgumentNullException(nameof(scrumMasterName));
            }

            OnBeforeCreateScrumTeam(teamName, scrumMasterName);

            var availableEstimations = _deckProvider.GetDeck(deck);
            var team = new ScrumTeam(teamName, availableEstimations, DateTimeProvider, GuidProvider);

            team.SetScrumMaster(scrumMasterName);
            var teamLock  = new object();
            var teamTuple = new Tuple <ScrumTeam, object>(team, teamLock);

            // loads team from repository and adds it to in-memory collection
            LoadScrumTeam(teamName);

            if (!_scrumTeams.TryAdd(teamName, teamTuple))
            {
                throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Resources.Error_ScrumTeamAlreadyExists, teamName), nameof(teamName));
            }

            OnTeamAdded(team);
            _logger.LogInformation(Resources.Info_ScrumTeamCreated, team.Name, team.ScrumMaster.Name);

            return(new ScrumTeamLock(teamTuple.Item1, teamTuple.Item2));
        }
Ejemplo n.º 8
0
        public void CreateScrumTeam_ExpiredTeamInRepository_CreatesNewTeamAndDeletesOldOne()
        {
            // Arrange
            var timeProvider  = new DateTimeProviderMock();
            var configuration = new Mock <IPlanningPokerConfiguration>(MockBehavior.Strict);

            configuration.SetupGet(c => c.ClientInactivityTimeout).Returns(TimeSpan.FromMinutes(15));

            timeProvider.SetUtcNow(new DateTime(2015, 1, 1, 10, 0, 0, DateTimeKind.Utc));
            var availableEstimations = DeckProvider.Default.GetDefaultDeck();
            var team   = new ScrumTeam("team", availableEstimations, timeProvider, null);
            var master = team.SetScrumMaster("master");

            master.UpdateActivity();

            var repository = new Mock <IScrumTeamRepository>(MockBehavior.Strict);

            repository.Setup(r => r.LoadScrumTeam("team")).Returns(team);
            repository.Setup(r => r.DeleteScrumTeam("team"));

            timeProvider.SetUtcNow(new DateTime(2015, 1, 1, 10, 16, 0, DateTimeKind.Utc));
            var target = CreatePlanningPokerController(timeProvider, configuration.Object, repository.Object);

            // Act
            using (var teamLock = target.CreateScrumTeam("team", "master", Deck.Standard))
            {
                // Verify
                Assert.AreNotEqual <ScrumTeam>(team, teamLock.Team);
                repository.Verify(r => r.LoadScrumTeam("team"), Times.Once());
                repository.Verify(r => r.DeleteScrumTeam("team"), Times.Once());
            }
        }
Ejemplo n.º 9
0
        public void Disconnect_EstimationStarted_OnlyScrumMasterIsInEstimationResult()
        {
            // Arrange
            var target = new ScrumTeam("test team");
            var master = target.SetScrumMaster("master");
            var member = (Member)target.Join("member", false);

            master.StartEstimation();
            var masterEstimation = new Estimation();

            // Act
            target.Disconnect(member.Name);
            master.Estimation = masterEstimation;

            // Verify
            Assert.AreEqual <TeamState>(TeamState.EstimationFinished, target.State);
            Assert.IsNotNull(target.EstimationResult);
            var expectedResult = new KeyValuePair <Member, Estimation>[]
            {
                new KeyValuePair <Member, Estimation>(master, masterEstimation),
                new KeyValuePair <Member, Estimation>(member, null)
            };

            CollectionAssert.AreEquivalent(expectedResult, target.EstimationResult.ToList());
        }
Ejemplo n.º 10
0
        public void Estimation_SetOnAllMembers_EstimationResultIsGenerated()
        {
            // Arrange
            var team   = new ScrumTeam("test team");
            var master = team.SetScrumMaster("master");
            var member = (Member)team.Join("member", false);

            master.StartEstimation();
            var masterEstimation = new Estimation();
            var memberEstimation = new Estimation();

            // Act
            master.Estimation = masterEstimation;
            member.Estimation = memberEstimation;

            // Verify
            Assert.IsNotNull(team.EstimationResult);
            var expectedResult = new KeyValuePair <Member, Estimation>[]
            {
                new KeyValuePair <Member, Estimation>(master, masterEstimation),
                new KeyValuePair <Member, Estimation>(member, memberEstimation),
            };

            CollectionAssert.AreEquivalent(expectedResult, team.EstimationResult.ToList());
        }
Ejemplo n.º 11
0
        public void GetScrumTeam_ExpiredTeamInRepository_ThrowsException()
        {
            // Arrange
            var timeProvider  = new DateTimeProviderMock();
            var configuration = new Mock <IPlanningPokerConfiguration>(MockBehavior.Strict);

            configuration.SetupGet(c => c.ClientInactivityTimeout).Returns(TimeSpan.FromMinutes(15));

            timeProvider.SetUtcNow(new DateTime(2015, 1, 1, 10, 0, 0, DateTimeKind.Utc));
            var team   = new ScrumTeam("team", timeProvider);
            var master = team.SetScrumMaster("master");

            master.UpdateActivity();

            var repository = new Mock <IScrumTeamRepository>(MockBehavior.Strict);

            repository.Setup(r => r.LoadScrumTeam("team")).Returns(team);
            repository.Setup(r => r.DeleteScrumTeam("team"));

            timeProvider.SetUtcNow(new DateTime(2015, 1, 1, 10, 16, 0, DateTimeKind.Utc));
            var target = CreatePlanningPokerController(timeProvider, configuration.Object, repository.Object);

            // Act
            target.GetScrumTeam("team");
        }
        public void SerializeAndDeserialize_ReceivedMessages_MessageHasNextId()
        {
            // Arrange
            var team   = new ScrumTeam("test");
            var master = team.SetScrumMaster("master");

            team.Join("member", false);
            team.Join("observer", true);
            master.StartEstimation();

            var lastMessage = master.Messages.Last();

            master.ClearMessages();

            // Act
            var result = VerifySerialization(team);

            // Verify
            var member = (Member)result.FindMemberOrObserver("member");

            member.Estimation = result.AvailableEstimations.First(e => e.Value == 5);

            Assert.IsTrue(result.ScrumMaster.HasMessage);
            var message = result.ScrumMaster.Messages.First();

            Assert.AreEqual(lastMessage.Id + 1, message.Id);
        }
Ejemplo n.º 13
0
        public void Estimation_SetOnAllMembers_EstimationResultIsGeneratedForObserver()
        {
            // Arrange
            var team     = new ScrumTeam("test team");
            var master   = team.SetScrumMaster("master");
            var member   = (Member)team.Join("member", false);
            var observer = team.Join("observer", true);

            master.StartEstimation();
            var masterEstimation = new Estimation();
            var memberEstimation = new Estimation();

            // Act
            master.Estimation = masterEstimation;
            TestHelper.ClearMessages(observer);
            member.Estimation = memberEstimation;

            // Verify
            observer.PopMessage();
            var message = observer.PopMessage();

            Assert.IsInstanceOfType(message, typeof(EstimationResultMessage));
            var estimationResultMessage = (EstimationResultMessage)message;

            Assert.AreEqual <EstimationResult>(team.EstimationResult, estimationResultMessage.EstimationResult);
        }
Ejemplo n.º 14
0
        public void Estimation_SetOnMemberOnly_ObserverGetsMemberEstimatedMessage()
        {
            // Arrange
            var team     = new ScrumTeam("test team");
            var master   = team.SetScrumMaster("master");
            var member   = (Member)team.Join("member", false);
            var observer = team.Join("observer", true);

            master.StartEstimation();
            TestHelper.ClearMessages(observer);
            var memberEstimation = new Estimation();

            // Act
            member.Estimation = memberEstimation;

            // Verify
            Assert.IsTrue(observer.HasMessage);
            var message = observer.PopMessage();

            Assert.AreEqual <MessageType>(MessageType.MemberEstimated, message.MessageType);
            Assert.IsInstanceOfType(message, typeof(MemberMessage));
            var memberMessage = (MemberMessage)message;

            Assert.AreEqual <Observer>(member, memberMessage.Member);
        }
        /// <summary>
        /// Creates new Scrum team with specified Scrum master.
        /// </summary>
        /// <param name="teamName">Name of the team.</param>
        /// <param name="scrumMasterName">Name of the Scrum master.</param>
        /// <returns>
        /// The new Scrum team.
        /// </returns>
        public IScrumTeamLock CreateScrumTeam(string teamName, string scrumMasterName)
        {
            if (string.IsNullOrEmpty(teamName))
            {
                throw new ArgumentNullException("teamName");
            }

            if (string.IsNullOrEmpty(scrumMasterName))
            {
                throw new ArgumentNullException("scrumMasterName");
            }

            this.OnBeforeCreateScrumTeam(teamName, scrumMasterName);

            var team = new ScrumTeam(teamName, this.DateTimeProvider);
            team.SetScrumMaster(scrumMasterName);
            var teamLock = new object();
            var teamTuple = new Tuple<ScrumTeam, object>(team, teamLock);

            // loads team from repository and adds it to in-memory collection
            this.LoadScrumTeam(teamName);

            if (!this.scrumTeams.TryAdd(teamName, teamTuple))
            {
                throw new ArgumentException(string.Format(CultureInfo.CurrentCulture, Properties.Resources.Error_ScrumTeamAlreadyExists, teamName), "teamName");
            }

            this.OnTeamAdded(team);

            return new ScrumTeamLock(teamTuple.Item1, teamTuple.Item2);
        }
Ejemplo n.º 16
0
        public void Estimation_SetOnAllMembers_ObserverGetEstimationEndedMessage()
        {
            // Arrange
            var team     = new ScrumTeam("test team");
            var master   = team.SetScrumMaster("master");
            var member   = (Member)team.Join("member", false);
            var observer = team.Join("observer", true);

            master.StartEstimation();
            var masterEstimation = new Estimation();
            var memberEstimation = new Estimation();

            // Act
            master.Estimation = masterEstimation;
            TestHelper.ClearMessages(observer);
            member.Estimation = memberEstimation;

            // Verify
            Assert.IsTrue(observer.HasMessage);
            observer.PopMessage();
            Assert.IsTrue(observer.HasMessage);
            var message = observer.PopMessage();

            Assert.IsNotNull(message);
            Assert.AreEqual <MessageType>(MessageType.EstimationEnded, message.MessageType);
            Assert.IsFalse(observer.HasMessage);
        }
Ejemplo n.º 17
0
        public void GetScrumTeam_TeamAlreadyLoaded_NotLoadingAgain()
        {
            // Arrange
            var timeProvider  = new DateTimeProviderMock();
            var configuration = new Mock <IPlanningPokerConfiguration>(MockBehavior.Strict);

            configuration.SetupGet(c => c.ClientInactivityTimeout).Returns(TimeSpan.FromMinutes(15));

            timeProvider.SetUtcNow(new DateTime(2015, 1, 1, 10, 0, 0, DateTimeKind.Utc));
            var team   = new ScrumTeam("team");
            var master = team.SetScrumMaster("master");

            master.UpdateActivity();

            var repository = new Mock <IScrumTeamRepository>(MockBehavior.Strict);

            repository.Setup(r => r.LoadScrumTeam("team")).Returns(team);

            timeProvider.SetUtcNow(new DateTime(2015, 1, 1, 10, 14, 0, DateTimeKind.Utc));
            var target = CreatePlanningPokerController(timeProvider, configuration.Object, repository.Object);

            // Act
            using (target.GetScrumTeam("team"))
            {
            }

            using (var teamLock = target.GetScrumTeam("team"))
            {
                // Verify
                Assert.AreEqual <ScrumTeam>(team, teamLock.Team);
                repository.Verify(r => r.LoadScrumTeam("team"), Times.Once());
                repository.Verify(r => r.DeleteScrumTeam("team"), Times.Never());
            }
        }
Ejemplo n.º 18
0
        public void DisconnectInactiveObservers_ActiveObserverAndInactiveMember_ObserverMessageReceived()
        {
            // Arrange
            var dateTimeProvider = new DateTimeProviderMock();

            dateTimeProvider.SetUtcNow(new DateTime(2012, 1, 1, 3, 2, 20));

            var target = new ScrumTeam("test team", dateTimeProvider);
            var master = target.SetScrumMaster("master");
            var member = target.Join("member", false);

            dateTimeProvider.SetUtcNow(new DateTime(2012, 1, 1, 3, 2, 30));
            var       observer  = target.Join("observer", true);
            EventArgs eventArgs = null;

            observer.MessageReceived += new EventHandler((s, e) => eventArgs = e);

            dateTimeProvider.SetUtcNow(new DateTime(2012, 1, 1, 3, 2, 55));

            // Act
            target.DisconnectInactiveObservers(TimeSpan.FromSeconds(30.0));

            // Verify
            Assert.IsNotNull(eventArgs);
            Assert.IsTrue(observer.HasMessage);
            var message = observer.PopMessage();

            Assert.AreEqual <MessageType>(MessageType.MemberDisconnected, message.MessageType);
        }
Ejemplo n.º 19
0
        public void Estimation_SetOnAllMembers_ScrumTeamGetEstimationEndedMessage()
        {
            // Arrange
            var team   = new ScrumTeam("test team");
            var master = team.SetScrumMaster("master");
            var member = (Member)team.Join("member", false);

            master.StartEstimation();
            MessageReceivedEventArgs eventArgs = null;

            team.MessageReceived += new EventHandler <MessageReceivedEventArgs>((s, e) => eventArgs = e);
            var masterEstimation = new Estimation();
            var memberEstimation = new Estimation();

            // Act
            master.Estimation = masterEstimation;
            member.Estimation = memberEstimation;

            // Verify
            Assert.IsNotNull(eventArgs);
            var message = eventArgs.Message;

            Assert.IsNotNull(message);
            Assert.AreEqual <MessageType>(MessageType.EstimationEnded, message.MessageType);
        }
Ejemplo n.º 20
0
        public void CreateScrumTeam_TeamInRepository_DoesNotDeleteOldTeam()
        {
            // Arrange
            var timeProvider  = new DateTimeProviderMock();
            var configuration = new Mock <IPlanningPokerConfiguration>(MockBehavior.Strict);

            configuration.SetupGet(c => c.ClientInactivityTimeout).Returns(TimeSpan.FromMinutes(15));

            timeProvider.SetUtcNow(new DateTime(2015, 1, 1, 10, 0, 0, DateTimeKind.Utc));
            var team   = new ScrumTeam("team");
            var master = team.SetScrumMaster("master");

            master.UpdateActivity();

            var repository = new Mock <IScrumTeamRepository>(MockBehavior.Strict);

            repository.Setup(r => r.LoadScrumTeam("team")).Returns(team);

            timeProvider.SetUtcNow(new DateTime(2015, 1, 1, 10, 14, 0, DateTimeKind.Utc));
            var target = CreatePlanningPokerController(timeProvider, configuration.Object, repository.Object);

            // Act
            try
            {
                target.CreateScrumTeam("team", "master");
            }
            catch (ArgumentException)
            {
                // expected exception when adding same team
            }

            // Verify
            repository.Verify(r => r.LoadScrumTeam("team"), Times.Once());
            repository.Verify(r => r.DeleteScrumTeam("team"), Times.Never());
        }
Ejemplo n.º 21
0
        public void AttachScrumTeam_TeamInRepository_DoesNotCreateNewTeam()
        {
            // Arrange
            var timeProvider  = new DateTimeProviderMock();
            var configuration = new Mock <IPlanningPokerConfiguration>(MockBehavior.Strict);

            configuration.SetupGet(c => c.ClientInactivityTimeout).Returns(TimeSpan.FromMinutes(15));

            timeProvider.SetUtcNow(new DateTime(2015, 1, 1, 10, 0, 0, DateTimeKind.Utc));
            var team   = new ScrumTeam("team");
            var master = team.SetScrumMaster("master");

            master.UpdateActivity();

            var repository = new Mock <IScrumTeamRepository>(MockBehavior.Strict);

            repository.Setup(r => r.LoadScrumTeam("team")).Returns(team);

            timeProvider.SetUtcNow(new DateTime(2015, 1, 1, 10, 14, 0, DateTimeKind.Utc));
            var target = CreatePlanningPokerController(timeProvider, configuration.Object, repository.Object);

            var inputTeam = new ScrumTeam("team");

            // Act
            Assert.ThrowsException <ArgumentException>(() => target.AttachScrumTeam(inputTeam));
        }
Ejemplo n.º 22
0
        public void GetScrumTeam_TeamCreatedWhileLoading_DoesNotCreateNewTeam()
        {
            // Arrange
            var timeProvider  = new DateTimeProviderMock();
            var configuration = new Mock <IPlanningPokerConfiguration>(MockBehavior.Strict);

            configuration.SetupGet(c => c.ClientInactivityTimeout).Returns(TimeSpan.FromMinutes(15));

            timeProvider.SetUtcNow(new DateTime(2015, 1, 1, 10, 0, 0, DateTimeKind.Utc));
            var team   = new ScrumTeam("team");
            var master = team.SetScrumMaster("master");

            master.UpdateActivity();

            bool firstLoad   = true;
            bool firstReturn = true;
            PlanningPokerController target = null;
            ScrumTeam createdTeam          = null;

            var repository = new Mock <IScrumTeamRepository>(MockBehavior.Strict);

            repository.Setup(r => r.LoadScrumTeam("team"))
            .Callback <string>(n =>
            {
                if (firstLoad)
                {
                    firstLoad = false;
                    using (var teamLock = target.CreateScrumTeam("team", "master"))
                    {
                        createdTeam = teamLock.Team;
                    }
                }
            }).Returns <string>(n =>
            {
                if (firstReturn)
                {
                    firstReturn = false;
                    return(null);
                }
                else
                {
                    return(team);
                }
            });

            target = CreatePlanningPokerController(timeProvider, configuration.Object, repository.Object);

            // Act
            using (var teamLock = target.GetScrumTeam("team"))
            {
                // Verify
                Assert.AreNotEqual <ScrumTeam>(team, createdTeam);
                Assert.AreNotEqual <ScrumTeam>(team, teamLock.Team);
                Assert.AreEqual <ScrumTeam>(createdTeam, teamLock.Team);
                repository.Verify(r => r.LoadScrumTeam("team"), Times.Exactly(2));
                repository.Verify(r => r.DeleteScrumTeam("team"), Times.Never());
            }
        }
Ejemplo n.º 23
0
        public void SetScrumMaster_NameIsEmpty_ArgumentNullException()
        {
            // Arrange
            var name   = string.Empty;
            var target = new ScrumTeam("test team");

            // Act
            var result = target.SetScrumMaster(name);
        }
Ejemplo n.º 24
0
        public void CreateScrumTeam_TeamCreatedWhileLoading_DoesNotCreateNewTeam()
        {
            // Arrange
            var timeProvider  = new DateTimeProviderMock();
            var configuration = new Mock <IPlanningPokerConfiguration>(MockBehavior.Strict);

            configuration.SetupGet(c => c.ClientInactivityTimeout).Returns(TimeSpan.FromMinutes(15));

            timeProvider.SetUtcNow(new DateTime(2015, 1, 1, 10, 0, 0, DateTimeKind.Utc));
            var team   = new ScrumTeam("team");
            var master = team.SetScrumMaster("master");

            master.UpdateActivity();

            bool firstLoad   = true;
            bool firstReturn = true;
            PlanningPokerController target = null;

            var repository = new Mock <IScrumTeamRepository>(MockBehavior.Strict);

            repository.Setup(r => r.LoadScrumTeam("team"))
            .Callback <string>(n =>
            {
                if (firstLoad)
                {
                    firstLoad = false;
                    try
                    {
                        using (var teamLock = target.CreateScrumTeam("team", "master", Deck.Standard))
                        {
                            Assert.AreNotEqual <ScrumTeam>(team, teamLock.Team);
                        }
                    }
                    catch (ArgumentException)
                    {
                        // if ArgumentException is here, test should fail
                    }
                }
            }).Returns <string>(n =>
            {
                if (firstReturn)
                {
                    firstReturn = false;
                    return(null);
                }
                else
                {
                    return(team);
                }
            });

            target = CreatePlanningPokerController(timeProvider, configuration.Object, repository.Object);

            // Act
            Assert.ThrowsException <ArgumentException>(() => target.CreateScrumTeam("team", "master", Deck.Standard));
        }
        private static ScrumTeam CreateScrumTeam(string name = "The team")
        {
            var team = new ScrumTeam(name);

            team.SetScrumMaster("master");
            team.Join("member", false);
            team.ScrumMaster.StartEstimation();
            team.ScrumMaster.Estimation = team.AvailableEstimations.First(e => e.Value == 5);
            return(team);
        }
        public void Constructor_DuplicateMember_InvalidOperationException()
        {
            // Arrange
            var team   = new ScrumTeam("test team");
            var master = team.SetScrumMaster("master");
            var member = (Member)team.Join("member", false);

            // Act
            var result = new EstimationResult(new Member[] { master, member, master });
        }
        public void IndexerGet_MemberNotInResult_KeyNotFoundException()
        {
            // Arrange
            var team   = new ScrumTeam("test team");
            var master = team.SetScrumMaster("master");
            var member = (Member)team.Join("member", false);
            var target = new EstimationResult(new Member[] { master });

            // Act
            var estimation = target[member];
        }
Ejemplo n.º 28
0
        public void SetScrumMaster_ObserverWithSpecifiedNameExists_ArgumentException()
        {
            // Arrange
            var name   = "test";
            var target = new ScrumTeam("test team");

            target.Join("test", true);

            // Act
            var result = target.SetScrumMaster(name);
        }
        public void SerializeAndDeserialize_WithoutAvailableEstimations_CopyOfTheTeam()
        {
            // Arrange
            var team = new ScrumTeam("test");

            team.SetScrumMaster("master");

            // Act
            // Verify
            VerifySerialization(team, removeAvailableEstimations: true);
        }
        public void SerializeAndDeserialize_TeamWithScrumMaster_CopyOfTheTeam()
        {
            // Arrange
            var team = new ScrumTeam("test");

            team.SetScrumMaster("master");

            // Act
            // Verify
            VerifySerialization(team);
        }