コード例 #1
0
        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);
        }
コード例 #2
0
        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));
        }