public IEnumerable <ReportTypeAElement> GenerateReportA(DateTime from, DateTime until, string email) { List <ReportTypeAElement> report = new List <ReportTypeAElement>(); List <Status> differentStatus = new List <Status>(); List <Request> requestsByCondition = (List <Request>)requestRepository.GetAllByCondition(r => r.CreationDate >= from && r.CreationDate <= until && r.Email.Equals(email)).ToList(); if (requestsByCondition.Count != 0) { foreach (Request r in requestsByCondition) { if (!differentStatus.Contains(r.Status)) { differentStatus.Add(r.Status); ReportTypeAElement newReportElement = new ReportTypeAElement(); newReportElement.Amount = 1; newReportElement.Status = r.Status; newReportElement.RequestNumbers.Add(r.RequestNumber); report.Add(newReportElement); } else { foreach (ReportTypeAElement rAElement in report) { if (rAElement.Status.Equals(r.Status)) { rAElement.Amount++; rAElement.RequestNumbers.Add(r.RequestNumber); break; } } } } } return(report); }
public void GenerateReportTypeA() { Request req1 = new Request() { RequestNumber = 1, CreationDate = DateTime.Now, Email = "*****@*****.**", Status = Status.Creada }; Request req2 = new Request() { CreationDate = DateTime.Now.AddDays(1), Email = "*****@*****.**", RequestNumber = 2, Status = Status.Creada }; Request req3 = new Request() { CreationDate = DateTime.Now.AddDays(-1), Email = "*****@*****.**", RequestNumber = 3, Status = Status.Aceptada }; ReportTypeAElement repAElem1 = new ReportTypeAElement() { Amount = 2, Status = Status.Creada, RequestNumbers = new List <int>() }; repAElem1.RequestNumbers.Add(req1.RequestNumber); repAElem1.RequestNumbers.Add(req2.RequestNumber); ReportTypeAElement repAElem2 = new ReportTypeAElement() { Amount = 1, Status = Status.Aceptada, RequestNumbers = new List <int>() }; repAElem2.RequestNumbers.Add(req3.RequestNumber); List <Request> requests = new List <Request>(); requests.Add(req1); requests.Add(req2); requests.Add(req3); List <ReportTypeAElement> report = new List <ReportTypeAElement>(); report.Add(repAElem1); report.Add(repAElem2); var reqRepoMock = new Mock <IRequestRepository>(MockBehavior.Strict); var adminRepoMock = new Mock <IRepository <Admin> >(MockBehavior.Strict); reqRepoMock.Setup(m => m.GetAllByCondition(It.IsAny <Expression <Func <Request, bool> > >())).Returns(requests); var adminLogic = new AdminLogic(adminRepoMock.Object, reqRepoMock.Object); List <ReportTypeAElement> reportGenerated = (List <ReportTypeAElement>)adminLogic.GenerateReportA(DateTime.Now.AddDays(-1), DateTime.Now.AddDays(+1), "*****@*****.**"); reqRepoMock.VerifyAll(); Assert.IsTrue(report.SequenceEqual(reportGenerated)); }