Example #1
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());
        }
Example #2
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));
        }
Example #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());
        }
Example #4
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);
        }
Example #5
0
        public bool Finish(ISprint model)
        {
            try
            {
                var sprint = _mapper.Map <Sprint>(model as SprintViewModel);

                sprint.IsFinished = true;
                sprint.FinishedOn = DateTime.UtcNow;

                var nonFinishedTasks = _dbContext.Tasks
                                       .Where(x => x.SprintId == sprint.Id && !x.IsFinished)
                                       .ToList();


                var backlogTasks = _mapper
                                   .Map <List <BacklogTask> >(nonFinishedTasks);

                _dbContext.Sprints.Update(sprint);
                _dbContext.BacklogTasks.AddRange(backlogTasks);
                _dbContext.Tasks.RemoveRange(nonFinishedTasks);
                _dbContext.SaveChanges();

                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
Example #6
0
        public IGraphModel Make(ISprint sprint)
        {
            // タスクを抽出
            var tasks = sprint.Tasks.OfType<ITaskWithRecord>().ToArray();
            // 無かったら空っぽを返す
            if (tasks.Any()==false)
            {
                return new GraphModel();
            }

            // まずは期間を確定させる。
            // 未設定の場合は登録されているメモやレコードから推測する
            var records = tasks.SelectMany(x => x.Records).ToArray();
            var comments = tasks.SelectMany(x => x.Comments).ToArray();

            var pvList = MakePv(sprint, tasks, records, comments);
            var evList = records.Select(x => new GraphPoint { Day = x.Day, Value = x.Value }).ToArray();
            var acList = records.Select(x => new GraphPoint { Day = x.Day, Value = x.WorkValue }).ToArray();
            // 期間未定はPVを計れないので実績に合わせる
            if (pvList.Any() == false)
            {
                pvList = evList.ToArray();
            }

            return new GraphModel
            {
                Pv = pvList,
                Ac = acList,
                Ev = evList,
            };
        }
Example #7
0
 private string ToText(ISprint model)
 {
     return
         (string.Format(@"# {0} {1} {2} {3}"
                        , model.Id.ToString("[00]")
                        , model.Name
                        , model.Left.HasValue ? model.Left.Value.ToString("@yyyy/MM/dd") : ""
                        , model.Right.HasValue ? model.Right.Value.ToString("@yyyy/MM/dd") : ""));
 }
Example #8
0
        public static Report BuildAvansPlusReport(ISprint sprint, List <string> contents, string reportVersion, DateTime date, EReportFormat format)
        {
            IReportBuilder builder = new AvansPlusReportBuilder();

            builder.BuildContent(contents);
            builder.BuildFooter();
            builder.BuildHeader(sprint, reportVersion, date);
            return(builder.GetReport(format));
        }
 public static HourInfoList HourFetchInfoList(ISprint sprint)
 {
     return(HourInfoList.FetchHourInfoList(
                new HourDataCriteria
     {
         ProjectId = new[] { sprint.ProjectId },
         SprintId = sprint.SprintId
     }));
 }
Example #10
0
 public static HourInfoList HourFetchInfoList(ISprint sprint)
 {
     return HourInfoList.FetchHourInfoList(
         new HourDataCriteria
         {
             ProjectId = new[] { sprint.ProjectId },
             SprintId = sprint.SprintId
         });
 }
Example #11
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());
        }
Example #12
0
 private void ToSprintGraph(ISprint model)
 {
     eventAgg.GetEvent <NavigateInProjectViewEvent>()
     .Publish(ViewNames.PROJECT_IN_SPRINT_REPORT
              , new NavigateParams
     {
         { "ProjectId", this.Project.Id },
         { "SprintIds", new [] { model.Id } }
     });
 }
Example #13
0
 public static DbSprint ToDbModel(this ISprint @this)
 {
     return(new DbSprint
     {
         Id = @this.Id,
         Name = @this.Name,
         Left = @this.Left,
         Right = @this.Right,
     });
 }
Example #14
0
        public static StoryInfoList StoryFetchInfoList(ISprint sprint)
        {
            ProjectUserRepository.AuthorizeProjectUser(sprint.ProjectId);

            return(StoryInfoList.FetchStoryInfoList(
                       new StoryDataCriteria
            {
                ProjectId = new[] { sprint.ProjectId },
                SprintId = sprint.SprintId
            }));
        }
 public void BuildHeader(ISprint sprint, string reportVersion, DateTime date)
 {
     this._report.Header = new Header()
     {
         CompanyColor   = "#d1ecbb",
         CompanyName    = "Avans+",
         CompanyLogoURL = "https://avansplus.nl/logo.png",
         Date           = date,
         ReportVersion  = reportVersion,
         SprintName     = sprint.GetName()
     };
 }
Example #16
0
        public bool Update(ISprint model)
        {
            try
            {
                var sprint = _mapper.Map <Sprint>(model as SprintViewModel);
                _dbContext.Sprints.Update(sprint);
                _dbContext.SaveChanges();

                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
Example #17
0
        public bool Add(ISprint model)
        {
            try
            {
                var sprint = _mapper.Map <Sprint>(model as SprintViewModel);

                sprint.Id = Guid.NewGuid();

                _dbContext.Sprints.Add(sprint);
                _dbContext.SaveChanges();

                return(true);
            }
            catch (Exception ex)
            {
                return(false);
            }
        }
Example #18
0
        private IEnumerable <IGraphPoint> MakePv(ISprint sprint, ITaskWithRecord[] tasks, ITaskRecord[] records, ITaskComment[] comments)
        {
            // 期間未定はPVを計れない
            if ((sprint.Left.HasValue && sprint.Right.HasValue) == false)
            {
                return(Enumerable.Empty <IGraphPoint>());
            }

            var dateList = records.Select(x => x.Day).Concat(comments.Select(x => x.Day)).ToArray();
            var left     = sprint.Left ?? (dateList.Any() ? dateList.Min() : DateTime.Now);
            var right    = sprint.Right ?? (dateList.Any() ? dateList.Max() : DateTime.Now);

            // 次にPV(計画)
            // 休日を除く日で総Valueを案分する
            var alldays =
                (from i in Enumerable.Range(0, (right - left).Days + 1)
                 let day = left.AddDays(i)
                           select day).ToArray();
            var workDays =
                (from day in alldays
                 where this.isWorkday(day)
                 select day).ToArray();

            // 稼働日が無い場合は先頭日に全部押し付ける
            if (workDays.Any() == false)
            {
                workDays = new[] { left };
            }

            // 計画値の総量
            var pvAll = tasks.Sum(x => x.Value ?? 0.0);
            // 1日あたりの量
            var pvAve  = pvAll / workDays.Length;
            var pvList = workDays.Select(x => new GraphPoint {
                Day = x, Value = pvAve
            }).ToArray();
            var inHolidays = alldays.Select(x => new GraphPoint {
                Day = x, Value = 0.0
            }).ToArray();

            return(Merge(pvList, inHolidays));
        }
Example #19
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"));
        }
Example #20
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());
        }
Example #21
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());
        }
Example #22
0
        public IGraphModel Make(ISprint sprint)
        {
            // タスクを抽出
            var tasks = sprint.Tasks.OfType <ITaskWithRecord>().ToArray();

            // 無かったら空っぽを返す
            if (tasks.Any() == false)
            {
                return(new GraphModel());
            }

            // まずは期間を確定させる。
            // 未設定の場合は登録されているメモやレコードから推測する
            var records  = tasks.SelectMany(x => x.Records).ToArray();
            var comments = tasks.SelectMany(x => x.Comments).ToArray();

            var pvList = MakePv(sprint, tasks, records, comments);
            var evList = records.Select(x => new GraphPoint {
                Day = x.Day, Value = x.Value
            }).ToArray();
            var acList = records.Select(x => new GraphPoint {
                Day = x.Day, Value = x.WorkValue
            }).ToArray();

            // 期間未定はPVを計れないので実績に合わせる
            if (pvList.Any() == false)
            {
                pvList = evList.ToArray();
            }

            return(new GraphModel
            {
                Pv = pvList,
                Ac = acList,
                Ev = evList,
            });
        }
Example #23
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));
        }
Example #24
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());
        }
Example #25
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
        }
Example #26
0
 public void AddSprint(ISprint sprint)
 {
     this._sprints.Add(sprint);
 }
Example #27
0
 private string ToText(ISprint model)
 {
     return
         string.Format(@"# {0} {1} {2} {3}"
             , model.Id.ToString("[00]")
             , model.Name
             , model.Left.HasValue ? model.Left.Value.ToString("@yyyy/MM/dd") : ""
             , model.Right.HasValue ? model.Right.Value.ToString("@yyyy/MM/dd") : "");
 }
 public InitializedState(ISprint sprint)
 {
     this._sprint = sprint;
 }
Example #29
0
        private IEnumerable<IGraphPoint> MakePv(ISprint sprint, ITaskWithRecord[] tasks, ITaskRecord[] records, ITaskComment[] comments)
        {
            // 期間未定はPVを計れない
            if ((sprint.Left.HasValue && sprint.Right.HasValue) == false)
            {
                return Enumerable.Empty<IGraphPoint>();
            }

            var dateList = records.Select(x => x.Day).Concat(comments.Select(x => x.Day)).ToArray();
            var left = sprint.Left ?? (dateList.Any() ? dateList.Min() : DateTime.Now);
            var right = sprint.Right ?? (dateList.Any() ? dateList.Max() : DateTime.Now);

            // 次にPV(計画)
            // 休日を除く日で総Valueを案分する
            var alldays =
                (from i in Enumerable.Range(0, (right - left).Days + 1)
                 let day = left.AddDays(i)
                 select day).ToArray();
            var workDays =
                (from day in alldays
                 where this.workdayService.IsWorkday(day)
                 select day).ToArray();

            // 稼働日が無い場合は先頭日に全部押し付ける
            if (workDays.Any() == false)
            {
                workDays = new[] { left };
            }

            // 計画値の総量
            var pvAll = tasks.Sum(x => x.Value ?? 0.0);
            // 1日あたりの量
            var pvAve = pvAll / workDays.Length;
            var pvList = workDays.Select(x => new GraphPoint { Day = x, Value = pvAve }).ToArray();
            var inHolidays = alldays.Select(x => new GraphPoint { Day = x, Value = 0.0 }).ToArray();
            return Merge(pvList, inHolidays);
        }
Example #30
0
 public FinishedState(ISprint sprint)
 {
     this._sprint = sprint;
 }
 public DevelopmentPipeline(ISprint sprint, EPipelineConfig config)
 {
     _sprint = sprint;
     _config = config;
     _state  = new SourceState(this);
 }
Example #32
0
 public Review(ISprint sprint, Person author, string review)
 {
     this._sprint = sprint;
     this._author = author;
     this._review = review;
 }
Example #33
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);
        }
Example #34
0
        public static StoryInfoList StoryFetchInfoList(ISprint sprint)
        {
            ProjectUserRepository.AuthorizeProjectUser(sprint.ProjectId);

            return StoryInfoList.FetchStoryInfoList(
                new StoryDataCriteria
                {
                    ProjectId = new[] { sprint.ProjectId },
                    SprintId = sprint.SprintId
                });
        }
Example #35
0
 public ActiveState(ISprint sprint)
 {
     this._sprint = sprint;
 }
        private void FillLine(Line line, ISprint sprint, Issue[] issues, IEnumerable<string> ignoreTypes)
        {
            var sprintStart = new DateTime(sprint.Start.Ticks, DateTimeKind.Local);

            issues = issues.Where(i => !ignoreTypes.Contains(i.Type)).ToArray();
            var issueCount = issues.Count(i => i.Value.HasValue);
            var issueTotal = issues.Sum(i => i.Value != null ? i.Value.Value : 0);

            var averageValue = issueTotal/issueCount;

            issueTotal = issues.Sum(i => i.Value != null ? i.Value.Value : averageValue);

            line.AddPoint(issueTotal, sprintStart);

            var pointIssues = issues.Where(i => i.Timestamp.HasValue).OrderBy(i => i.Timestamp.Value);
            foreach (var pointIssue in pointIssues)
            {
                var value = pointIssue.Value.HasValue ? pointIssue.Value.Value : averageValue;
                var change = (float) (value*-1.0);
                var timestamp = pointIssue.Timestamp.Value;
                if (timestamp < sprintStart)
                    timestamp = sprintStart;
                var point = line.AddPointByChange(change, timestamp);
                point.Label = pointIssue.Id;
                point.Description = pointIssue.Summary;
                point.Estimate = pointIssue.Value.HasValue ? (int) pointIssue.Value.Value : (int?) null;
                point.Url = "http://davidweekleyhomes.myjetbrains.com/youtrack/issue/" + pointIssue.Id;
            }
        }