예제 #1
0
        public void CanHideStacksFromStats()
        {
            _dataHelper.ResetProjectData(TestConstants.ProjectId);
            TimeSpan  timeOffset = _projectRepository.GetDefaultTimeOffset(TestConstants.ProjectId);
            DateTime  startDate  = DateTime.UtcNow.Add(timeOffset).Date.AddDays(-120);
            DateTime  endDate    = DateTime.UtcNow.Add(timeOffset).Date;
            const int count      = 50;

            var events = EventData.GenerateEvents(count, organizationId: TestConstants.OrganizationId, startDate: startDate, endDate: endDate, projectId: TestConstants.ProjectId, timeZoneOffset: timeOffset).ToList();

            _eventPipeline.Run(events);

            var firstStack = _stackRepository.Where(es => es.ProjectId == TestConstants.ProjectId).OrderBy(es => es.FirstOccurrence).First();

            firstStack.IsHidden = true;
            _stackRepository.Update(firstStack);

            var biggestStack = _stackRepository.Where(es => es.ProjectId == TestConstants.ProjectId && !es.IsHidden).OrderByDescending(es => es.TotalOccurrences).First();

            biggestStack.IsHidden = true;
            _stackRepository.Update(biggestStack);
            _stackRepository.InvalidateHiddenIdsCache(TestConstants.ProjectId);

            long stackCount         = _stackRepository.Where(s => !s.IsHidden).Count();
            int  countWithoutHidden = count - firstStack.TotalOccurrences - biggestStack.TotalOccurrences;

            var info = _eventStatsHelper.GetProjectEventStats(TestConstants.ProjectId, timeOffset, startDate, endDate);

            Assert.Equal(countWithoutHidden, info.Total);
            Assert.InRange(info.UniqueTotal, 1, count);
            Assert.Equal(stackCount, info.NewTotal);
            Assert.True(info.Stats.Count > 40);
            Assert.Equal(countWithoutHidden, info.Stats.Sum(ds => ds.Total));
            Assert.Equal(stackCount, info.Stats.Sum(ds => ds.NewTotal));
        }