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 Persist_UnSuccessful_NoAWS() { 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 originalConfiguration = DIContext.Obtain <IConfigurationStore>(); var moqConfiguration = DIContext.Obtain <Mock <IConfigurationStore> >(); moqConfiguration.Setup(c => c.GetValueString("AWS_TEMPORARY_BUCKET_NAME")).Returns((string)null); moqConfiguration.Setup(c => c.GetValueString("AWS_TEMPORARY_BUCKET_NAME", It.IsAny <string>())).Returns((string)null); DIBuilder .Continue() .Add(x => x.AddSingleton <IConfigurationStore>(moqConfiguration.Object)) .Complete(); Action act = () => new CSVExportFileWriter(requestArgument); act.Should().Throw <ServiceException>(); DIBuilder .Continue() .Add(x => x.AddSingleton <IConfigurationStore>(originalConfiguration)) .Complete(); }
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 CSVExportFormatter(CSVExportUserPreferences userPreference, OutputTypes outputType, bool isRawDataAsDBaseRequired = false) { UserPreference = userPreference; OutputType = outputType; IsRawDataAsDBaseRequired = isRawDataAsDBaseRequired; NullString = isRawDataAsDBaseRequired ? string.Empty : "?"; SetupUserPreferences(userPreference); _nfiUser = NumberFormatInfo.GetInstance(CultureInfo.InvariantCulture).Clone() as NumberFormatInfo; _nfiUser.NumberDecimalSeparator = userPreference.DecimalSeparator ?? _nfiUser.NumberDecimalSeparator; _nfiUser.NumberGroupSeparator = userPreference.ThousandsSeparator ?? _nfiUser.NumberGroupSeparator; _nfiUser.NumberDecimalDigits = DefaultDecimalPlaces; _nfiDefault = _nfiUser.Clone() as NumberFormatInfo; // the dp will be altered on this }
private ISiteModel SetupSiteAndRequestArgument(CoordType coordType, OutputTypes outputType, bool isRawDataAsDBaseRequired, string tagFileDirectory, out CSVExportRequestArgument requestArgument) { // tagFileDirectory: "Dimensions2018-CaseMachine" - extents match the CSIB constant // "ElevationMappingMode-KettlewellDrive" var tagFiles = Directory.GetFiles(Path.Combine("TestData", "TAGFiles", tagFileDirectory), "*.tag").ToArray(); var siteModel = DITAGFileAndSubGridRequestsFixture.BuildModel(tagFiles, out _); var csvExportUserPreference = new CSVExportUserPreferences(); requestArgument = new CSVExportRequestArgument ( siteModel.ID, new FilterSet(new CombinedFilter()), "the filename", coordType, outputType, csvExportUserPreference, new List <CSVExportMappedMachine>(), false, isRawDataAsDBaseRequired ); return(siteModel); }
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); } }
/// <summary> /// Use values direct from UserPreferenceData where possible. /// This method provides differences required for export format /// </summary> /// <param name="newUserPreference"></param> private void SetupUserPreferences(CSVExportUserPreferences newUserPreference) { switch (newUserPreference.Units) { case UnitsTypeEnum.Metric: { DistanceConversionFactor = 1.0; SpeedUnitString = "km/h"; SpeedConversionFactor = 1000; DistanceUnitString = "m"; break; } case UnitsTypeEnum.Imperial: { DistanceConversionFactor = ImperialFeetToMeters; SpeedUnitString = "mph"; SpeedConversionFactor = ImperialFeetToMeters * 5280; DistanceUnitString = "ft"; break; } default: // case UnitsTypeEnum.US: // USSurveyFeet { DistanceConversionFactor = USFeetToMeters; SpeedUnitString = "mph"; SpeedConversionFactor = USFeetToMeters * 5280; DistanceUnitString = "FT"; break; } } if (OutputType == OutputTypes.VedaAllPasses || OutputType == OutputTypes.VedaFinalPass || string.IsNullOrEmpty(UserPreference.DateSeparator) || string.IsNullOrEmpty(UserPreference.TimeSeparator) || string.IsNullOrEmpty(UserPreference.DecimalSeparator)) { ExportDateTimeFormatString = "yyyy-MMM-dd HH:mm:ss.fff"; } else { ExportDateTimeFormatString = $"yyyy{UserPreference.DateSeparator}MMM{UserPreference.DateSeparator}dd HH{UserPreference.TimeSeparator}mm{UserPreference.TimeSeparator}ss{UserPreference.DecimalSeparator}fff"; } }