public void Persist_UnSuccessful() { var projectUid = Guid.NewGuid(); var csvExportUserPreference = new CSVExportUserPreferences(); var requestArgument = new CSVExportRequestArgument ( projectUid, new FilterSet(new CombinedFilter()), null, CoordType.Northeast, OutputTypes.PassCountLastPass, csvExportUserPreference, new List <CSVExportMappedMachine>(), false, false ) { TRexNodeID = Guid.NewGuid() }; var dataRows = new List <string>() { "string one", "string two" }; var csvExportFileWriter = new CSVExportFileWriter(requestArgument); Action act = () => csvExportFileWriter.PersistResult(dataRows); act.Should().Throw <ArgumentNullException>(); var projectDir = Path.Combine(Path.GetTempPath(), projectUid.ToString()); if (Directory.Exists(projectDir)) { Directory.Delete(projectDir, true); } }
public void CreateHeaders_VedaFinalPass() { var projectUid = Guid.NewGuid(); var csvExportUserPreference = new CSVExportUserPreferences(); var requestArgument = new CSVExportRequestArgument ( projectUid, new FilterSet(new CombinedFilter()), "the filename", CoordType.Northeast, OutputTypes.VedaFinalPass, csvExportUserPreference, new List <CSVExportMappedMachine>(), false, false ) { TRexNodeID = Guid.NewGuid() }; var dataRows = new List <string>() { "string one", "string two" }; var mockTransferProxy = new Mock <ITransferProxy>(); mockTransferProxy.Setup(t => t.UploadToBucket(It.IsAny <Stream>(), It.IsAny <string>(), It.IsAny <string>())); var mockTransferProxyFactory = new Mock <ITransferProxyFactory>(); mockTransferProxyFactory.Setup(x => x.NewProxy(It.IsAny <TransferProxyType>())).Returns(mockTransferProxy.Object); DIBuilder .Continue() .Add(x => x.AddSingleton(mockTransferProxyFactory.Object)) .Complete(); var csvExportFileWriter = new CSVExportFileWriter(requestArgument, true); csvExportFileWriter.PersistResult(dataRows); var localExportPath = FilePathHelper.GetTempFolderForExport(requestArgument.ProjectID, ""); var uniqueFileName = requestArgument.FileName + "__" + requestArgument.TRexNodeID; var firstFile = Path.Combine(localExportPath, uniqueFileName, requestArgument.FileName + CSV_extension); if (!FileSystem.Exists(firstFile)) { Assert.True(true, $"firstFile: {firstFile} should exist"); } string header; using (var fs = new StreamReader(firstFile)) header = fs.ReadLine(); header.Should().NotBeNullOrEmpty(); header.Should().Be("Time,CellN_m,CellE_m,Elevation_m,PassCount,LastRadioLtncy,DesignName,Machine,Speed_km/h,LastGPSMode,GPSAccTol_m,TargPassCount,TotalPasses,Lift,LastCMV,TargCMV,LastMDP,TargMDP,LastRMV,LastFreq_Hz,LastAmp_mm,TargThickness_m,MachineGear,VibeState,LastTemp,_c"); var projectDir = localExportPath.Remove(localExportPath.Length - 7); if (Directory.Exists(projectDir)) { Directory.Delete(projectDir, true); } }
public void Persist_Successful() { var projectUid = Guid.NewGuid(); var csvExportUserPreference = new CSVExportUserPreferences(); var requestArgument = new CSVExportRequestArgument ( projectUid, new FilterSet(new CombinedFilter()), "the filename", CoordType.Northeast, OutputTypes.PassCountLastPass, csvExportUserPreference, new List <CSVExportMappedMachine>(), false, false ) { TRexNodeID = Guid.NewGuid() }; var dataRows = new List <string> { "string one", "string two" }; var mockTransferProxy = new Mock <ITransferProxy>(); mockTransferProxy.Setup(t => t.UploadToBucket(It.IsAny <Stream>(), It.IsAny <string>(), It.IsAny <string>())); var mockTransferProxyFactory = new Mock <ITransferProxyFactory>(); mockTransferProxyFactory.Setup(x => x.NewProxy(It.IsAny <TransferProxyType>())).Returns(mockTransferProxy.Object); DIBuilder .Continue() .Add(x => x.AddSingleton(mockTransferProxyFactory.Object)) .Complete(); var csvExportFileWriter = new CSVExportFileWriter(requestArgument); var s3FullPath = csvExportFileWriter.PersistResult(dataRows); s3FullPath.Should().NotBeNull(); s3FullPath.Should().Be($"project/{requestArgument.ProjectID}/TRexExport/{requestArgument.FileName}__{requestArgument.TRexNodeID}.zip"); var projectDir = Path.Combine(Path.GetTempPath(), projectUid.ToString()); if (Directory.Exists(projectDir)) { Directory.Delete(projectDir, true); } }
public void CreateHeaders_RestrictOutputSize_TwoFiles() { var projectUid = Guid.NewGuid(); var userPreferences = new UserPreferences { TemperatureUnits = (int)TemperatureUnitEnum.Fahrenheit }; var csvExportUserPreference = AutoMapperUtility.Automapper.Map <CSVExportUserPreferences>(userPreferences); var requestArgument = new CSVExportRequestArgument ( projectUid, new FilterSet(new CombinedFilter()), "the filename", CoordType.Northeast, OutputTypes.VedaFinalPass, csvExportUserPreference, new List <CSVExportMappedMachine>(), true, true ) { TRexNodeID = Guid.NewGuid() }; var dataRows = new List <string>(70000); for (int i = 0; i < 70000; i++) { dataRows.Add($"row number: {i}"); } ; var mockTransferProxy = new Mock <ITransferProxy>(); mockTransferProxy.Setup(t => t.UploadToBucket(It.IsAny <Stream>(), It.IsAny <string>(), It.IsAny <string>())); var mockTransferProxyFactory = new Mock <ITransferProxyFactory>(); mockTransferProxyFactory.Setup(x => x.NewProxy(It.IsAny <TransferProxyType>())).Returns(mockTransferProxy.Object); DIBuilder .Continue() .Add(x => x.AddSingleton(mockTransferProxyFactory.Object)) .Complete(); var csvExportFileWriter = new CSVExportFileWriter(requestArgument, true); csvExportFileWriter.PersistResult(dataRows); var localExportPath = FilePathHelper.GetTempFolderForExport(requestArgument.ProjectID, ""); var uniqueFileName = requestArgument.FileName + "__" + requestArgument.TRexNodeID; var zipFullPath = Path.Combine(localExportPath, uniqueFileName) + ZIP_extension; if (!FileSystem.Exists(zipFullPath)) { Assert.True(true, $"zipFullPath: {zipFullPath} should exist"); } using (var zip = ZipFile.OpenRead(zipFullPath)) { zip.Entries.Count.Should().Be(2); var firstFileName = Path.Combine(requestArgument.FileName + "(1)" + CSV_extension); var firstFileNamePath = Path.Combine(localExportPath, uniqueFileName, firstFileName); new FileInfo(firstFileNamePath).Length.Should().Be(1234316); zip.Entries[0].Name.Should().Be(firstFileName); var fileInfo = new FileInfo(firstFileNamePath); zip.Entries[0].Length.Should().Be(fileInfo.Length); var secondFileName = Path.Combine(requestArgument.FileName + "(2)" + CSV_extension); var secondFileNamePath = Path.Combine(localExportPath, uniqueFileName, secondFileName); new FileInfo(secondFileNamePath).Length.Should().Be(85096); zip.Entries[1].Name.Should().Be(secondFileName); fileInfo = new FileInfo(secondFileNamePath); zip.Entries[1].Length.Should().Be(fileInfo.Length); } var projectDir = localExportPath.Remove(localExportPath.Length - 7); if (Directory.Exists(projectDir)) { Directory.Delete(projectDir, true); } }
public void CreateHeaders_RestrictOutputSize_SingleFile() { var projectUid = Guid.NewGuid(); var userPreferences = new UserPreferences() { TemperatureUnits = (int)TemperatureUnitEnum.Fahrenheit }; var csvExportUserPreference = AutoMapperUtility.Automapper.Map <CSVExportUserPreferences>(userPreferences); var requestArgument = new CSVExportRequestArgument ( projectUid, new FilterSet(new CombinedFilter()), "the filename", CoordType.Northeast, OutputTypes.VedaFinalPass, csvExportUserPreference, new List <CSVExportMappedMachine>(), true, true ) { TRexNodeID = Guid.NewGuid() }; var dataRows = new List <string> { "string one", "string two" }; var mockTransferProxy = new Mock <ITransferProxy>(); mockTransferProxy.Setup(t => t.UploadToBucket(It.IsAny <Stream>(), It.IsAny <string>(), It.IsAny <string>())); var mockTransferProxyFactory = new Mock <ITransferProxyFactory>(); mockTransferProxyFactory.Setup(x => x.NewProxy(It.IsAny <TransferProxyType>())).Returns(mockTransferProxy.Object); DIBuilder .Continue() .Add(x => x.AddSingleton(mockTransferProxyFactory.Object)) .Complete(); var csvExportFileWriter = new CSVExportFileWriter(requestArgument, true); csvExportFileWriter.PersistResult(dataRows); var localExportPath = FilePathHelper.GetTempFolderForExport(requestArgument.ProjectID, ""); var uniqueFileName = requestArgument.FileName + "__" + requestArgument.TRexNodeID; var zipFullPath = Path.Combine(localExportPath, uniqueFileName) + ZIP_extension; var firstFile = Path.Combine(localExportPath, uniqueFileName, requestArgument.FileName + CSV_extension); if (!FileSystem.Exists(firstFile)) { Assert.True(true, $"firstFile: {firstFile} should exist"); } if (!FileSystem.Exists(zipFullPath)) { Assert.True(true, $"zipFullPath: {zipFullPath} should exist"); } using (var zip = ZipFile.OpenRead(zipFullPath)) { zip.Entries.Count.Should().Be(1); zip.Entries[0].Name.Should().Be(requestArgument.FileName + CSV_extension); var fileInfo = new System.IO.FileInfo(firstFile); fileInfo.Length.Should().Be(285); zip.Entries[0].Length.Should().Be(fileInfo.Length); } string header; using (var fs = new StreamReader(firstFile)) header = fs.ReadLine(); header.Should().NotBeNullOrEmpty(); header.Should().Be("Time,CellN_FT,CellE_FT,Elevation_FT,PassCount,lastRadioLtncy,DesignName,Machine,Speed_mph,LastGPSMode,GPSAccTol_FT,TargPassCount,TotalPasses,Lift,LastCMV,TargCMV,LastMDP,TargMDP,LastRMV,LastFreq_Hz,LastAmp_mm,TargThickness_FT,MachineGear,VibeState,LastTemp,_f"); var projectDir = localExportPath.Remove(localExportPath.Length - 7); if (Directory.Exists(projectDir)) { Directory.Delete(projectDir, true); } }