public void Initialise_CreatesTable_Projects() { _dbContext.Initialise(); const string sql = "SELECT * FROM Projects"; _dbContext.ExecuteNonQuery(sql); Assert.IsTrue(File.Exists(_filePath)); }
public void GetUnprocessedLogFileCount_Integration_ReturnsValidCount() { string filePath = Path.Combine(AppContext.BaseDirectory, Path.GetRandomFileName() + ".dbtest"); int processedCount = new Random().Next(0, 5); using (SQLiteDbContext dbContext = new SQLiteDbContext(filePath)) { dbContext.Initialise(); IProjectRepository projectRepo = new ProjectRepository(dbContext); ProjectModel project = DataHelper.CreateProjectModel(); DataHelper.InsertProjectModel(dbContext, project); ProjectModel project2 = DataHelper.CreateProjectModel(); DataHelper.InsertProjectModel(dbContext, project2); // create records const string sql = @"INSERT INTO LogFiles (ProjectId, FileName, FileHash, CreateDate, FileLength, RecordCount, Status) VALUES (@ProjectId, @FileName, @FileHash, @CreateDate, @FileLength, @RecordCount, @Status)"; // create two processing record - this should be included LogFileModel logFile = DataHelper.CreateLogFileModel(project.Id); logFile.Status = LogFileStatus.Processing; dbContext.ExecuteNonQuery(sql, logFile); // create a processing record - this should be included logFile = DataHelper.CreateLogFileModel(project.Id); logFile.Status = LogFileStatus.Processing; dbContext.ExecuteNonQuery(sql, logFile); // create an error records - this should not be included logFile = DataHelper.CreateLogFileModel(project.Id); logFile.Status = LogFileStatus.Error; dbContext.ExecuteNonQuery(sql, logFile); // create a pending record for another project - this should also not be included logFile = DataHelper.CreateLogFileModel(project2.Id); logFile.Status = LogFileStatus.Processing; dbContext.ExecuteNonQuery(sql, logFile); int result = projectRepo.GetUnprocessedLogFileCount(project.Id); Assert.AreEqual(2, result); } }
public void GetPageLoadTimes_Integration_ReturnsData() { string filePath = Path.Combine(AppContext.BaseDirectory, Path.GetRandomFileName() + ".dbtest"); List <W3CEvent> logEvents = new List <W3CEvent>(); logEvents.Add(CreateW3CEvent("PageA", 17)); logEvents.Add(CreateW3CEvent("PageA", 13)); logEvents.Add(CreateW3CEvent("PageA", 21)); logEvents.Add(CreateW3CEvent("PageA", 9)); logEvents.Add(CreateW3CEvent("PageA", 40)); logEvents.Add(CreateW3CEvent("PageB", 1000)); logEvents.Add(CreateW3CEvent("PageB", 3000)); using (SQLiteDbContext dbContext = new SQLiteDbContext(filePath)) { dbContext.Initialise(); dbContext.BeginTransaction(); ICreateRequestBatchCommand createRequestBatchCommand = new CreateRequestBatchCommand(dbContext, new RequestValidator()); IRequestRepository requestRepo = new RequestRepository(dbContext); // create the project ProjectModel project = DataHelper.CreateProjectModel(); DataHelper.InsertProjectModel(dbContext, project); // create the log file record LogFileModel logFile = DataHelper.CreateLogFileModel(project.Id); DataHelper.InsertLogFileModel(dbContext, logFile); // create the requests createRequestBatchCommand.Execute(logFile.Id, logEvents); // update all requests so the aggregate is different to the stem string sql = "UPDATE Requests SET UriStemAggregate = UriStem || '__'"; dbContext.ExecuteNonQuery(sql); IEnumerable <RequestPageLoadTimeModel> result = requestRepo.GetPageLoadTimes(project.Id); Assert.AreEqual(2, result.Count()); RequestPageLoadTimeModel pageAResult = result.Where(x => x.UriStemAggregate == "PageA__").SingleOrDefault(); Assert.IsNotNull(pageAResult); Assert.AreEqual(5, pageAResult.RequestCount); Assert.AreEqual(20, pageAResult.AvgTimeTakenMilliseconds); RequestPageLoadTimeModel pageBResult = result.Where(x => x.UriStemAggregate == "PageB__").SingleOrDefault(); Assert.IsNotNull(pageBResult); Assert.AreEqual(2, pageBResult.RequestCount); Assert.AreEqual(2000, pageBResult.AvgTimeTakenMilliseconds); } }