Пример #1
0
        public void Changing_To_Previous_State_Should_Not_Throw_Exception_In_ActiveState()
        {
            // Arrange

            Project       project = new Project("Test Project", new Person("Bas", ERole.Lead));
            SprintFactory factory = new SprintFactory();

            Person p1 = new Person("Tom", ERole.Developer);
            Person p2 = new Person("Jan Peter", ERole.Tester);

            ISprint sprint = factory.MakeReleaseSprint("Sprint 1", DateTime.Now, DateTime.Now.AddDays(14), project, p1, new List <Person>()
            {
                p2
            });

            project.AddSprint(sprint);
            sprint.GetState().ToNextState();

            // Act
            project.GetSprints().First().GetState().ToPreviousState();


            // Assert
            Assert.Equal("InitializedState", project.GetSprints().First().GetState().GetType().Name);
        }
Пример #2
0
        public void Adding_Developer_Should_Throw_NotSupportedException_In_FinishedState()
        {
            // Arrange

            Project       project = new Project("Test Project", new Person("Bas", ERole.Lead));
            SprintFactory factory = new SprintFactory();

            Person p1 = new Person("Tom", ERole.Developer);
            Person p2 = new Person("Jan Peter", ERole.Tester);
            Person p3 = new Person("Dick Bruna", ERole.Developer);

            ISprint sprint = factory.MakeReviewSprint("Sprint 1", DateTime.Parse("2010-10-10T00:00:00Z"), DateTime.Parse("2010-10-10T00:00:00Z").AddDays(14), project, p1, new List <Person>()
            {
                p2
            });

            project.AddSprint(sprint);
            sprint.GetState().ToNextState();
            sprint.GetState().ToNextState();

            // Act

            // Assert
            Assert.Throws <NotSupportedException>(() => project.GetSprints().First().GetState().AddDeveloper(p3));
            Assert.DoesNotContain(p3, sprint.GetDevelopers());
        }
Пример #3
0
        public void Adding_Developer_Should_Not_Throw_Exception_In_ActiveState()
        {
            // Arrange

            Project       project = new Project("Test Project", new Person("Bas", ERole.Lead));
            SprintFactory factory = new SprintFactory();

            Person p1 = new Person("Tom", ERole.Developer);
            Person p2 = new Person("Jan Peter", ERole.Tester);
            Person p3 = new Person("Dick Bruna", ERole.Developer);

            ISprint sprint = factory.MakeReleaseSprint("Sprint 1", DateTime.Parse("2010-10-10T00:00:00Z"), DateTime.Parse("2010-10-10T00:00:00Z").AddDays(14), project, p1, new List <Person>()
            {
                p2
            });

            project.AddSprint(sprint);
            sprint.GetState().ToNextState();

            // Act
            sprint.GetState().AddDeveloper(p3);


            // Assert
            Assert.Contains(p3, sprint.GetDevelopers());
        }
Пример #4
0
        public void Set_Review_Should_Throw_SecurityException_In_FinishedState_When_Added_By_Someone_Else_But_ScrumMaster()
        {
            // Arrange

            Project       project = new Project("Test Project", new Person("Bas", ERole.Lead));
            SprintFactory factory = new SprintFactory();

            Person p1 = new Person("Tom", ERole.Developer);
            Person p2 = new Person("Jan Peter", ERole.Tester);

            ISprint sprint = factory.MakeReviewSprint("Sprint 1", DateTime.Now, DateTime.Now.AddDays(14), project, p1, new List <Person>()
            {
                p2
            });

            project.AddSprint(sprint);
            sprint.GetState().ToNextState();
            sprint.GetState().ToNextState();

            Review review = new Review(sprint, p2, "Good work guys!");

            // Act

            // Assert
            Assert.Throws <SecurityException>(() => project.GetSprints().First().GetState().SetReview(review));
        }
Пример #5
0
        public void Notification_Todo_State_Update()
        {
            // Arrange
            Project        project = new Project("Test Project", new Person("Bas", ERole.Lead));
            SprintFactory  factory = new SprintFactory();
            ChannelFactory channel = new ChannelFactory();

            Person p1 = new Person("Tom", ERole.Developer);
            Person p2 = new Person("Jan Roos", ERole.Developer);

            p1.AddChannel(channel.CreateSlackChannel("@tom"));

            ISprint sprint = factory.MakeReleaseSprint("Sprint 1", DateTime.Now, DateTime.Now.AddDays(14), project, p1, new List <Person>()
            {
                p2
            });

            project.AddSprint(sprint);

            var backlog = new Backlog(project);

            var backlogItem = new BacklogItem("User can login into the platform", "Foo", p2, 3, backlog);

            backlogItem.AssignPerson(p2);
            backlog.AddBacklogItem(backlogItem);

            sprint.AddToSprintBacklog(backlogItem);

            project.AddBacklog(backlog);

            var task1 = new Task("Bar", p1);

            backlogItem.GetState().AddTask(task1);

            var backlogItemObserver = new BacklogItemObserver();

            // Act
            backlogItem.Register(backlogItemObserver);
            backlogItem.GetState().NextState();
            // Backlog is in DoingState, set tasks

            backlogItem.GetTasks().First().NextState();
            backlogItem.GetTasks().First().NextState();

            task1.NextState();
            task1.NextState();

            backlogItem.GetState().NextState();
            backlogItem.GetState().NextState();

            // Backlog is in TestingState
            backlogItem.GetState().NextState();

            // Assert
            Assert.NotEmpty(backlogItem.GetObservers());
        }
Пример #6
0
        public void Changing_SprintName_Should_Throw_NotSupportedException_In_ActiveState()
        {
            // Arrange

            Project       project = new Project("Test Project", new Person("Bas", ERole.Lead));
            SprintFactory factory = new SprintFactory();

            Person p1 = new Person("Tom", ERole.Developer);
            Person p2 = new Person("Jan Peter", ERole.Tester);

            ISprint sprint = factory.MakeReleaseSprint("Sprint 1", DateTime.Now, DateTime.Now.AddDays(14), project, p1, new List <Person>()
            {
                p2
            });

            project.AddSprint(sprint);
            sprint.GetState().ToNextState();
            // Act
            // Assert
            Assert.Throws <NotSupportedException>(() => project.GetSprints().First().GetState().SetName("Foo"));
        }
Пример #7
0
        public void Backlog_Can_Register_Multiple_Observers()
        {
            // Arrange
            Project       project = new Project("Test Project", new Person("Bas", ERole.Lead));
            SprintFactory factory = new SprintFactory();

            Person p1 = new Person("Tom", ERole.Developer);
            Person p2 = new Person("Jan Roos", ERole.Developer);

            ISprint sprint = factory.MakeReleaseSprint("Sprint 1", DateTime.Now, DateTime.Now.AddDays(14), project, p1, new List <Person>()
            {
                p2
            });

            project.AddSprint(sprint);

            var backlog = new Backlog(project);

            var backlogItem = new BacklogItem("User can login into the platform", "Foo", p2, 3, backlog);

            backlogItem.AssignPerson(p2);
            backlog.AddBacklogItem(backlogItem);

            sprint.AddToSprintBacklog(backlogItem);

            project.AddBacklog(backlog);

            var task1 = new Task("Bar", p1);

            backlogItem.GetState().AddTask(task1);

            var backlogItemObserver = new BacklogItemObserver();

            // Act
            // TODO: Add sprint observer
            backlogItem.Register(backlogItemObserver);

            // Assert
            Assert.Single(backlogItem.GetObservers());
        }
Пример #8
0
        public void Changing_SprintName_Should_Not_Throw_Exception_In_InitializedState()
        {
            // Arrange

            Project       project = new Project("Test Project", new Person("Bas", ERole.Lead));
            SprintFactory factory = new SprintFactory();

            Person p1 = new Person("Tom", ERole.Developer);
            Person p2 = new Person("Jan Peter", ERole.Tester);

            ISprint sprint = factory.MakeReviewSprint("Sprint 1", DateTime.Now, DateTime.Now.AddDays(14), project, p1, new List <Person>()
            {
                p2
            });

            project.AddSprint(sprint);
            // Act

            sprint.GetState().SetName("foo");

            // Assert
            Assert.Equal("foo", project.GetSprints().First().GetName());
        }
Пример #9
0
        public void Set_Review_Should_Throw_NotSupportedException_In_InitializedState()
        {
            // Arrange

            Project       project = new Project("Test Project", new Person("Bas", ERole.Lead));
            SprintFactory factory = new SprintFactory();

            Person p1 = new Person("Tom", ERole.Developer);
            Person p2 = new Person("Jan Peter", ERole.Tester);

            ISprint sprint = factory.MakeReleaseSprint("Sprint 1", DateTime.Now, DateTime.Now.AddDays(14), project, p1, new List <Person>()
            {
                p2
            });

            project.AddSprint(sprint);

            Review review = new Review(sprint, p1, "No good");

            // Act

            // Assert
            Assert.Throws <NotSupportedException>(() => project.GetSprints().First().GetState().SetReview(review));
        }
Пример #10
0
        public void Changing_EndDate_Should_Not_Throw_Exception_In_InitializedState()
        {
            // Arrange

            Project       project = new Project("Test Project", new Person("Bas", ERole.Lead));
            SprintFactory factory = new SprintFactory();

            Person p1 = new Person("Tom", ERole.Developer);
            Person p2 = new Person("Jan Peter", ERole.Tester);

            ISprint sprint = factory.MakeReleaseSprint("Sprint 1", DateTime.Parse("2010-10-10T00:00:00Z"), DateTime.Parse("2010-10-10T00:00:00Z").AddDays(14), project, p1, new List <Person>()
            {
                p2
            });

            project.AddSprint(sprint);
            // Act

            sprint.GetState().SetEndDate(DateTime.Parse("2010-10-10T00:00:00Z").AddDays(7));


            // Assert
            Assert.Equal(DateTime.Parse("2010-10-17T00:00:00Z"), project.GetSprints().First().GetEndDate());
        }
Пример #11
0
        public void TestPipeline_Should_Fire_When_ReviewSprint_Reaches_FinishedState()
        {
            // Arrange

            Project       project = new Project("Test Project", new Person("Bas", ERole.Lead));
            SprintFactory factory = new SprintFactory();

            Person p1 = new Person("Tom", ERole.Developer);
            Person p2 = new Person("Jan Peter", ERole.Tester);

            ISprint sprint = factory.MakeReviewSprint("Sprint 1", DateTime.Now, DateTime.Now.AddDays(14), project, p1,
                                                      new List <Person>()
            {
                p2
            });

            project.AddSprint(sprint);
            sprint.GetState().ToNextState();
            sprint.GetState().ToNextState();

            // Act
            sprint.GetState().StartStateAction();
            // Assert
        }
Пример #12
0
        public void Generating_A_Report_Should_Not_Throw_Exception()
        {
            // Arrange

            Project       project = new Project("Test Project", new Person("Bas", ERole.Lead));
            SprintFactory factory = new SprintFactory();

            Person p1 = new Person("Tom", ERole.Developer);
            Person p2 = new Person("Jan Peter", ERole.Tester);

            ISprint sprint = factory.MakeReviewSprint("Sprint 1", DateTime.Now, DateTime.Now.AddDays(14), project, p1, new List <Person>()
            {
                p2
            });
            ISprint sprint2 = factory.MakeReleaseSprint("Sprint 2", DateTime.Now, DateTime.Now.AddDays(14), project, p1, new List <Person>()
            {
                p2
            });

            project.AddSprint(sprint);
            project.AddSprint(sprint2);

            // Act
            DateTime now = DateTime.Now;
            Report   sprint1GeneratedAvansReport = sprint.GenerateReport(EReportBranding.Avans, new List <string>()
            {
                "Burndown chart: foo", "Velocity: 21"
            }, "v1.0", now, EReportFormat.PDF);
            Report sprint1GeneratedAvansPlusReport = sprint.GenerateReport(EReportBranding.AvansPlus, new List <string>()
            {
                "Burndown chart: bar", "Velocity: 13"
            }, "v2.0", now, EReportFormat.PNG);


            Report sprint2GeneratedAvansReport = sprint.GenerateReport(EReportBranding.Avans, new List <string>()
            {
                "Burndown chart: foo", "Velocity: 21"
            }, "v1.0", now, EReportFormat.PDF);
            Report sprint2GeneratedAvansPlusReport = sprint.GenerateReport(EReportBranding.AvansPlus, new List <string>()
            {
                "Burndown chart: bar", "Velocity: 13"
            }, "v2.0", now, EReportFormat.PNG);


            // Assert
            Assert.Equal(now, sprint1GeneratedAvansReport.Header.Date);
            Assert.Equal("Avans", sprint1GeneratedAvansReport.Header.CompanyName);
            Assert.Equal(new List <string>()
            {
                "Burndown chart: foo", "Velocity: 21"
            }, sprint1GeneratedAvansReport.Contents);
            Assert.Equal("v1.0", sprint1GeneratedAvansReport.Header.ReportVersion);
            Assert.Equal(EReportFormat.PDF, sprint1GeneratedAvansReport.Format);

            Assert.Equal(now, sprint1GeneratedAvansPlusReport.Header.Date);
            Assert.Equal("Avans+", sprint1GeneratedAvansPlusReport.Header.CompanyName);
            Assert.Equal(new List <string>()
            {
                "Burndown chart: bar", "Velocity: 13"
            }, sprint2GeneratedAvansPlusReport.Contents);
            Assert.Equal("v2.0", sprint1GeneratedAvansPlusReport.Header.ReportVersion);
            Assert.Equal(EReportFormat.PNG, sprint1GeneratedAvansPlusReport.Format);

            Assert.Equal(now, sprint2GeneratedAvansReport.Header.Date);
            Assert.Equal("Avans", sprint2GeneratedAvansReport.Header.CompanyName);
            Assert.Equal(new List <string>()
            {
                "Burndown chart: foo", "Velocity: 21"
            }, sprint2GeneratedAvansReport.Contents);
            Assert.Equal("v1.0", sprint2GeneratedAvansReport.Header.ReportVersion);
            Assert.Equal(EReportFormat.PDF, sprint1GeneratedAvansReport.Format);

            Assert.Equal(now, sprint2GeneratedAvansPlusReport.Header.Date);
            Assert.Equal("Avans+", sprint2GeneratedAvansPlusReport.Header.CompanyName);
            Assert.Equal(new List <string>()
            {
                "Burndown chart: bar", "Velocity: 13"
            }, sprint2GeneratedAvansPlusReport.Contents);
            Assert.Equal("v2.0", sprint2GeneratedAvansPlusReport.Header.ReportVersion);
            Assert.Equal(EReportFormat.PNG, sprint2GeneratedAvansPlusReport.Format);
        }