Ejemplo n.º 1
0
        public void AverageTimeBetweenStatusChanges_multiple_documents_unique_change()
        {
            var service = new ReportingService(null, null);
            var author  = new AppUser("Test", "User", UserRole.Operator);
            var now     = DateTime.Now;

            var documentHistory1 = new List <DocumentHistoryEntry>
            {
                new DocumentHistoryEntry(author, DocumentStatus.Created, "", now),
                new DocumentHistoryEntry(author, DocumentStatus.Registered, "", now + TimeSpan.FromMinutes(10)),
                new DocumentHistoryEntry(author, DocumentStatus.Approved, "", now + TimeSpan.FromMinutes(20)),
                new DocumentHistoryEntry(author, DocumentStatus.Canceled, "", now + TimeSpan.FromMinutes(30)),
            };

            var documentHistory2 = new List <DocumentHistoryEntry>
            {
                new DocumentHistoryEntry(author, DocumentStatus.Created, "", now),
                new DocumentHistoryEntry(author, DocumentStatus.Registered, "", now + TimeSpan.FromMinutes(20)),
                new DocumentHistoryEntry(author, DocumentStatus.Approved, "", now + TimeSpan.FromMinutes(60)),
            };

            var createdRegistered  = new StatusChange(DocumentStatus.Created, DocumentStatus.Registered);
            var registeredApproved = new StatusChange(DocumentStatus.Registered, DocumentStatus.Approved);
            var approvedCanceled   = new StatusChange(DocumentStatus.Approved, DocumentStatus.Canceled);

            var documents = new List <IEnumerable <DocumentHistoryEntry> >
            {
                documentHistory1, documentHistory2
            };

            var stats = service.AverageTimeBetweenStatusChanges(documents.AsQueryable());

            Assert.AreEqual(3, stats.Count);
            Assert.IsNotNull(stats[createdRegistered]);
            Assert.IsNotNull(stats[registeredApproved]);
            Assert.IsNotNull(stats[approvedCanceled]);
            Assert.AreEqual(15, stats[createdRegistered].TotalMinutes);
            Assert.AreEqual(25, stats[registeredApproved].TotalMinutes);
            Assert.AreEqual(10, stats[approvedCanceled].TotalMinutes);
        }