예제 #1
0
        public void GetSummaries_should_return_all_results()
        {
            // given
            TestsClient client   = Helpers.CreateTestsClient();
            TestFile    testFile = Helpers.CreateTestFileAndTest(client);

            var repository = ServiceStarter.Container.GetInstance <ITestFileResultRepository>();
            var result1    = new TestFileResult()
            {
                StartTime = DateTime.Now,
                EndTime   = DateTime.Now.AddSeconds(1),
                Filename  = testFile.Filename
            };
            var result2 = new TestFileResult()
            {
                StartTime = DateTime.Now,
                EndTime   = DateTime.Now.AddSeconds(1),
                Filename  = testFile.Filename
            };

            repository.Add(result1).Wait();
            repository.Add(result2).Wait();

            // when
            TestFileResultSummaryCollection results = client.GetSummaries(It.IsAny <DateTime>()).Result;

            // then
            Assert.That(results.TotalFileResults, Is.EqualTo(2));
        }
예제 #2
0
        public async Task <ActionResult> Today(int pageNumber = 1, int noOfResults = 20, string environment = "")
        {
            ViewBag.Title = string.IsNullOrEmpty(environment) ? "All" : environment;

            TestFileResultSummaryCollection result = await _testsClient.GetSummaries(DateTime.Today, pageNumber, noOfResults, environment);

            result.Environments = _environmentsService.Get().OrderBy(x => x.Order).ThenBy(x => x.Name).Select(x => x.Name).ToArray();
            result.Environment  = environment;
            return(View("Index", result));
        }
예제 #3
0
        public async Task Add_should_save_session()
        {
            // Arrange
            var fixture = new Fixture();
            var session = fixture.Create <TestFileResult>();

            MongoTestFileResultRepository repository = GetTestFileResultRepository();

            // Act
            await repository.Add(session);

            // Assert
            TestFileResultSummaryCollection summaries = await repository.GetSummaries(It.IsAny <DateTime>());

            Assert.That(summaries.TotalFileResults, Is.EqualTo(1));
        }
예제 #4
0
        public async Task Delete_should_remove_the_session()
        {
            // Arrange
            var fixture = new Fixture();
            var session = fixture.Create <TestFileResult>();

            MongoTestFileResultRepository repository = GetTestFileResultRepository();
            await repository.Add(session);

            // Act
            await repository.Delete(session.Id);

            // Assert
            TestFileResultSummaryCollection summaries = await repository.GetSummaries(It.IsAny <DateTime>());

            Assert.That(summaries.PagedResults.Count(), Is.EqualTo(0));
        }
예제 #5
0
        public async Task <TestFileResultSummaryCollection> GetSummaries(DateTime fromDate, int pageNumber = 1, int noOfResults = 20, string environment = "")
        {
            // Ensure TestFileResult has indexes on the date it was run and the environment.
            // These index commands don't rebuild the index, they just send the command.
            await _collection.Indexes.CreateOneAsync(Builders <TestFileResult> .IndexKeys.Ascending(x => x.StartTime));

            await _collection.Indexes.CreateOneAsync(Builders <TestFileResult> .IndexKeys.Ascending(x => x.Environment));

            string      env        = environment?.ToLower();
            Task <long> fileResult = _collection.CountAsync(x => x.StartTime >= fromDate && (string.IsNullOrEmpty(environment) || x.Environment.ToLower() == env));

            Task <List <TestFileResult> > testFileCollection = _collection
                                                               .Find(x => x.StartTime >= fromDate && (string.IsNullOrEmpty(environment) || x.Environment.ToLower() == env))
                                                               .Sort(Builders <TestFileResult> .Sort.Descending(x => x.StartTime))
                                                               .Skip((pageNumber - 1) * noOfResults)
                                                               .Limit(noOfResults)
                                                               .ToListAsync();

            await Task.WhenAll(fileResult, testFileCollection);

            var collection = new TestFileResultSummaryCollection
            {
                TotalFileResults = fileResult.Result,
                PageNumber       = pageNumber,
                NoOfResults      = noOfResults,
                PageNumbers      = Math.Ceiling((double)fileResult.Result / noOfResults),
                PagedResults     = testFileCollection.Result
                                   .Select(x => new TestFileResultSummary()
                {
                    Id           = x.Id,
                    DateRun      = x.StartTime,
                    FileName     = x.Filename,
                    TotalRunTime = x.TotalRunTime,
                    TotalPassed  = x.TotalTestsPassed,
                    TotalFailed  = x.TotalTestsFailed,
                    TotalSkipped = x.TotalTestsSkipped,
                    TotalRun     = x.TotalTestsRun,
                    Environment  = x.Environment,
                    Username     = x.Username
                })
            };

            return(collection);
        }
예제 #6
0
        public async Task GetSummaries_should_return_sessioninfo_objects_for_today_only()
        {
            // Arrange
            var fixture       = new Fixture();
            var todaySession1 = fixture.Create <TestFileResult>();
            var todaySession2 = fixture.Create <TestFileResult>();
            var otherSession1 = fixture.Create <TestFileResult>();
            var otherSession2 = fixture.Create <TestFileResult>();

            todaySession1.StartTime = DateTime.Today;
            todaySession1.EndTime   = todaySession1.StartTime.AddMinutes(5);

            todaySession2.StartTime = DateTime.Today.AddHours(1);
            todaySession2.EndTime   = todaySession2.StartTime.AddMinutes(5);

            otherSession1.StartTime = DateTime.Today.AddDays(-2);
            otherSession1.EndTime   = otherSession1.StartTime.AddMinutes(10);

            otherSession2.StartTime = DateTime.Today.AddDays(-2);
            otherSession2.EndTime   = otherSession2.StartTime.AddMinutes(10);

            MongoTestFileResultRepository repository = GetTestFileResultRepository();
            await repository.Add(todaySession1);

            await repository.Add(todaySession2);

            await repository.Add(otherSession1);

            await repository.Add(otherSession2);

            // Act
            TestFileResultSummaryCollection summaries = await repository.GetSummaries(DateTime.Today);

            // Assert
            Assert.That(summaries.TotalFileResults, Is.EqualTo(2));

            IEnumerable <Guid> ids = summaries.PagedResults.Select(x => x.Id);

            Assert.That(ids, Contains.Item(todaySession1.Id));
            Assert.That(ids, Contains.Item(todaySession2.Id));
        }
예제 #7
0
        public async Task GetSummaries_should_return_sessioninfos()
        {
            // Arrange
            var fixture  = new Fixture();
            var session1 = fixture.Create <TestFileResult>();
            var session2 = fixture.Create <TestFileResult>();

            MongoTestFileResultRepository repository = GetTestFileResultRepository();
            await repository.Add(session1);

            await repository.Add(session2);

            // Act
            TestFileResultSummaryCollection summaries = await repository.GetSummaries(It.IsAny <DateTime>());

            // Assert
            Assert.That(summaries.TotalFileResults, Is.EqualTo(2));

            IEnumerable <Guid> ids = summaries.PagedResults.Select(x => x.Id);

            Assert.That(ids, Contains.Item(session1.Id));
            Assert.That(ids, Contains.Item(session2.Id));
        }
예제 #8
0
        public async Task DeleteBeforeDate_should_only_remove_entries_before_a_certain_date()
        {
            // Arrange
            MongoTestFileResultRepository repository = GetTestFileResultRepository();
            var fixture = new Fixture();

            var oldResult1 = fixture.Create <TestFileResult>();

            oldResult1.StartTime = DateTime.Now.AddDays(-10);
            await repository.Add(oldResult1);

            var oldResult2 = fixture.Create <TestFileResult>();

            oldResult2.StartTime = DateTime.Now.AddDays(-6);
            await repository.Add(oldResult2);

            var newResult1 = fixture.Create <TestFileResult>();

            newResult1.StartTime = DateTime.Now.AddDays(-4);
            await repository.Add(newResult1);

            var newResult2 = fixture.Create <TestFileResult>();

            newResult2.StartTime = DateTime.Now.AddDays(0);
            await repository.Add(newResult2);

            // Act
            await repository.DeleteBeforeDate(DateTime.Now.AddDays(-5));

            // Assert
            TestFileResultSummaryCollection summaries = await repository.GetSummaries(DateTime.MinValue);

            Assert.That(summaries.PagedResults.Count(), Is.EqualTo(2));
            Assert.That(summaries.PagedResults.Count(x => x.Id == newResult1.Id), Is.EqualTo(1));
            Assert.That(summaries.PagedResults.Count(x => x.Id == newResult2.Id), Is.EqualTo(1));
        }