public async Task CreateImportedFile_HappyPath_GeoTiff() { // FlowFile uploads the file from client (possibly as a background task via scheduler) // Controller uploads file to TCC and/or S3 // V2 Note: BCC file has already put the file on TCC. // the controller a) copies within TCC to client project (raptor) // b) copies locally and hence to S3. (TRex) var customHeaders = new HeaderDictionary(); var importedFileUid = Guid.NewGuid(); var TCCFilePath = "/BC Data/Sites/Chch Test Site"; var fileName = "MoundRoad.tif"; var fileDescriptor = FileDescriptor.CreateFileDescriptor(_fileSpaceId, TCCFilePath, fileName); var fileCreatedUtc = DateTime.UtcNow.AddHours(-45); var fileUpdatedUtc = fileCreatedUtc.AddHours(1); var surveyedUtc = fileCreatedUtc.AddHours(-1); var newImportedFile = new ImportedFile { ProjectUid = _projectUid.ToString(), ImportedFileUid = importedFileUid.ToString(), ImportedFileId = 999, LegacyImportedFileId = 200000, ImportedFileType = ImportedFileType.GeoTiff, Name = fileDescriptor.FileName, FileDescriptor = JsonConvert.SerializeObject(fileDescriptor), SurveyedUtc = surveyedUtc }; _ = new CreateImportedFileEvent { CustomerUID = _customerUid, ProjectUID = _projectUid, ImportedFileUID = importedFileUid, ImportedFileType = ImportedFileType.GeoTiff, DxfUnitsType = DxfUnitsType.Meters, Name = fileDescriptor.FileName, FileDescriptor = JsonConvert.SerializeObject(fileDescriptor), FileCreatedUtc = fileCreatedUtc, FileUpdatedUtc = fileUpdatedUtc, ImportedBy = string.Empty, SurveyedUTC = surveyedUtc, ParentUID = null, Offset = 0, ActionUTC = DateTime.UtcNow }; var createImportedFile = new CreateImportedFile( _projectUid, fileDescriptor.FileName, fileDescriptor, ImportedFileType.GeoTiff, surveyedUtc, DxfUnitsType.Meters, fileCreatedUtc, fileUpdatedUtc, "some folder", null, 0, importedFileUid, "some file"); var importedFilesList = new List <ImportedFile> { newImportedFile }; var mockConfigStore = new Mock <IConfigurationStore>(); var logger = ServiceProvider.GetRequiredService <ILoggerFactory>(); var serviceExceptionHandler = ServiceProvider.GetRequiredService <IServiceExceptionHandler>(); var projectRepo = new Mock <IProjectRepository>(); projectRepo.Setup(pr => pr.StoreEvent(It.IsAny <CreateImportedFileEvent>())).ReturnsAsync(1); projectRepo.Setup(pr => pr.GetImportedFile(It.IsAny <string>())).ReturnsAsync(newImportedFile); projectRepo.Setup(pr => pr.GetImportedFiles(It.IsAny <string>())).ReturnsAsync(importedFilesList); var project = CreateProjectDetailModel(_customerTrn, _projectTrn); var projectList = CreateProjectListModel(_customerTrn, _projectTrn); var cwsProjectClient = new Mock <ICwsProjectClient>(); cwsProjectClient.Setup(ps => ps.GetMyProject(It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <IHeaderDictionary>())).ReturnsAsync(project); cwsProjectClient.Setup(ps => ps.GetProjectsForCustomer(It.IsAny <Guid>(), It.IsAny <Guid>(), It.IsAny <bool>(), It.IsAny <CwsProjectType?>(), It.IsAny <ProjectStatus?>(), It.IsAny <bool>(), It.IsAny <IHeaderDictionary>())).ReturnsAsync(projectList); var scheduler = new Mock <ISchedulerProxy>(); scheduler.Setup(s => s.ScheduleVSSJob(It.IsAny <JobRequest>(), It.IsAny <HeaderDictionary>())).ReturnsAsync(new ScheduleJobResult()); var executor = RequestExecutorContainerFactory .Build <CreateImportedFileExecutor>(logger, mockConfigStore.Object, serviceExceptionHandler, _customerUid.ToString(), _userUid.ToString(), _userEmailAddress, customHeaders, projectRepo: projectRepo.Object, schedulerProxy: scheduler.Object, cwsProjectClient: cwsProjectClient.Object); var result = await executor.ProcessAsync(createImportedFile).ConfigureAwait(false) as ImportedFileDescriptorSingleResult; Assert.NotNull(result); Assert.Equal(0, result.Code); Assert.NotNull(result.ImportedFileDescriptor); Assert.Equal(_projectUid.ToString(), result.ImportedFileDescriptor.ProjectUid); Assert.Equal(fileDescriptor.FileName, result.ImportedFileDescriptor.Name); }
public async Task CreateImportedFile_TRex_ReferenceSurface_NoParentDesign() { // FlowFile uploads the file from client (possibly as a background task via scheduler) // Controller uploads file to TCC and/or S3 // V2 Note: BCC file has already put the file on TCC. // the controller a) copies within TCC to client project (raptor) // b) copies locally and hence to S3. (TRex) var customHeaders = new HeaderDictionary(); var importedFileUid = Guid.NewGuid(); var parentUid = Guid.NewGuid(); var offset = 1.5; var TCCFilePath = "/BC Data/Sites/Chch Test Site"; var fileName = "MoundRoad.ttm"; var fileDescriptor = FileDescriptor.CreateFileDescriptor(_fileSpaceId, TCCFilePath, fileName); var fileCreatedUtc = DateTime.UtcNow.AddHours(-45); var fileUpdatedUtc = fileCreatedUtc; var newImportedFile = new ImportedFile { ProjectUid = _projectUid.ToString(), ImportedFileUid = importedFileUid.ToString(), ImportedFileId = 999, LegacyImportedFileId = 200000, ImportedFileType = ImportedFileType.ReferenceSurface, Name = fileDescriptor.FileName, FileDescriptor = JsonConvert.SerializeObject(fileDescriptor), Offset = offset, ParentUid = parentUid.ToString() }; _ = new CreateImportedFileEvent { CustomerUID = _customerUid, ProjectUID = _projectUid, ImportedFileUID = importedFileUid, ImportedFileType = ImportedFileType.ReferenceSurface, DxfUnitsType = DxfUnitsType.Meters, Name = fileDescriptor.FileName, FileDescriptor = JsonConvert.SerializeObject(fileDescriptor), FileCreatedUtc = fileCreatedUtc, FileUpdatedUtc = fileUpdatedUtc, ImportedBy = string.Empty, SurveyedUTC = null, ParentUID = parentUid, Offset = offset, ActionUTC = DateTime.UtcNow }; var createImportedFile = new CreateImportedFile( _projectUid, fileDescriptor.FileName, fileDescriptor, ImportedFileType.ReferenceSurface, null, DxfUnitsType.Meters, DateTime.UtcNow.AddHours(-45), DateTime.UtcNow.AddHours(-44), "some folder", parentUid, offset, importedFileUid, "some file"); var importedFilesList = new List <ImportedFile> { newImportedFile }; var logger = ServiceProvider.GetRequiredService <ILoggerFactory>(); var serviceExceptionHandler = ServiceProvider.GetRequiredService <IServiceExceptionHandler>(); var tRexImportFileProxy = new Mock <ITRexImportFileProxy>(); tRexImportFileProxy.Setup(tr => tr.AddFile(It.IsAny <DesignRequest>(), It.IsAny <HeaderDictionary>())).ReturnsAsync(new ContractExecutionResult()); var projectRepo = new Mock <IProjectRepository>(); projectRepo.Setup(pr => pr.StoreEvent(It.IsAny <CreateImportedFileEvent>())).ReturnsAsync(1); projectRepo.Setup(pr => pr.GetImportedFile(newImportedFile.ImportedFileUid)).ReturnsAsync(newImportedFile); projectRepo.Setup(pr => pr.GetImportedFile(parentUid.ToString())).ReturnsAsync((ImportedFile)null); projectRepo.Setup(pr => pr.GetImportedFiles(It.IsAny <string>())).ReturnsAsync(importedFilesList); var executor = RequestExecutorContainerFactory .Build <CreateImportedFileExecutor>(logger, null, serviceExceptionHandler, _customerUid.ToString(), _userUid.ToString(), _userEmailAddress, customHeaders, tRexImportFileProxy: tRexImportFileProxy.Object, projectRepo: projectRepo.Object); await Assert.ThrowsAsync <ServiceException>(async() => await executor.ProcessAsync(createImportedFile).ConfigureAwait(false)); }