public static async Task UniquelyNamedFileStream_FileExists_AppendsNumberToName() { var dir = "dir"; var fileName = "file"; var extension = ".html"; var path = Path.Combine(dir, Path.ChangeExtension(fileName, extension)); var progressReporter = Substitute.For <IProgressReporter>(); var fileSystem = Substitute.ForPartsOf <WindowsFileSystem>(); fileSystem.FileExists(path).Returns(true); fileSystem.CreateFile(Arg.Any <string>()).Returns(x => new MemoryStream()); var expectedResult = Path.Combine(dir, string.Concat(fileName, "(1)", extension)); var writer = new ReportFileWriter(fileSystem, progressReporter); var report = Encoding.UTF8.GetBytes("This is a test report."); var reportPath = await writer.WriteReportAsync(report, extension, dir, fileName, overwrite : false); Assert.Equal(expectedResult, reportPath); fileSystem.Received(1).CreateFile(Arg.Any <string>()); fileSystem.Received().CreateFile(expectedResult); }
public static async Task UniquelyNamedFileStream_NumberedFileExists_IncrementsNumberInNewName() { const int FileExistsCount = 11; var dir = "dir"; var fileName = "file"; var fileNameFormat = fileName + "({0})"; var extension = ".xlsx"; var path = Path.Combine(dir, Path.ChangeExtension(fileName, extension)); var fileSystem = Substitute.For <IFileSystem>(); var progressReporter = Substitute.For <IProgressReporter>(); fileSystem.CombinePaths(Arg.Any <string[]>()).Returns(a => Path.Combine(a.Arg <string[]>())); fileSystem.CreateFile(Arg.Any <string>()).Returns(x => new MemoryStream()); int fileNumber = 1; do { fileSystem.FileExists(path).Returns(true); var nextFileName = string.Format(CultureInfo.CurrentCulture, fileNameFormat, fileNumber); path = Path.Combine(dir, Path.ChangeExtension(nextFileName, extension)); } while (fileNumber++ < FileExistsCount); var writer = new ReportFileWriter(fileSystem, progressReporter); var report = Encoding.UTF8.GetBytes("This is a test report."); var reportPath = await writer.WriteReportAsync(report, extension, dir, fileName, overwrite : false); Assert.Equal(path, reportPath); fileSystem.Received(1).CreateFile(Arg.Any <string>()); fileSystem.Received().CreateFile(path); }
public static async Task VerifyReportHTMLContents() { var dir = "dir"; var fileName = "file"; var extension = ".html"; var path = Path.Combine(dir, Path.ChangeExtension(fileName, extension)); var progressReporter = Substitute.For <IProgressReporter>(); var memoryStream = new MemoryStream(); var fileSystem = Substitute.ForPartsOf <WindowsFileSystem>(); fileSystem.FileExists(path).Returns(true); fileSystem.CreateFile(Arg.Any <string>()).Returns(memoryStream); var expectedResult = Path.Combine(dir, string.Concat(fileName, "(1)", extension)); var writer = new ReportFileWriter(fileSystem, progressReporter); var report = "This is a test report."; var reportArray = Encoding.UTF8.GetBytes(report); string reportPath = await writer.WriteReportAsync(reportArray, extension, dir, fileName, overwrite : false); fileSystem.Received(1).CreateFile(Arg.Any <string>()); fileSystem.Received().CreateFile(expectedResult); Assert.Equal(expectedResult, reportPath); byte[] writtenBytes = memoryStream.ToArray(); Assert.Equal(report, Encoding.UTF8.GetString(writtenBytes)); }
public static async Task DoNotUpdateExtensionIfInputExtensionIsEmpty() { var dir = "dir"; var fileName = "file.test"; var extension = string.Empty; var path = Path.Combine(dir, fileName); var progressReporter = Substitute.For <IProgressReporter>(); var memoryStream = new MemoryStream(); var fileSystem = Substitute.ForPartsOf <WindowsFileSystem>(); fileSystem.CreateFile(Arg.Any <string>()).Returns(memoryStream); var writer = new ReportFileWriter(fileSystem, progressReporter); var report = "This is a test report."; var reportArray = Encoding.UTF8.GetBytes(report); string reportPath = await writer.WriteReportAsync(reportArray, extension, dir, fileName, overwrite : false); fileSystem.Received(1).CreateFile(Arg.Any <string>()); fileSystem.Received().CreateFile(path); Assert.Equal(path, reportPath); byte[] writtenBytes = memoryStream.ToArray(); Assert.Equal(report, Encoding.UTF8.GetString(writtenBytes)); }
public static ReportFileWriterTemplate Create(ReportFileWriter reportWriter) { return(ReportFileWriterTemplate .Create(reportWriter.FileName) .WithReportTrigger(reportWriter.ReportTrigger) .WithReportElements(reportWriter.ReportElements)); }
public void It_should_preserve_output_path_if_it_is_absolute() { var writer = new ReportFileWriter(Mock.Of <IReportFormatter>(), "c:" + Path.DirectorySeparatorChar + "output.txt"); var expected = Path.GetFullPath("c:" + Path.DirectorySeparatorChar + "output.txt"); Assert.That(writer.OutputPath, Is.EqualTo("c:" + Path.DirectorySeparatorChar + "output.txt")); Assert.That(writer.FullOutputPath, Is.EqualTo(expected)); }
public void It_should_use_working_directory_if_output_is_relative_path() { var writer = new ReportFileWriter(Mock.Of <IReportFormatter>(), "output.txt"); var expected = Path.GetFullPath("output.txt"); Assert.That(writer.OutputPath, Is.EqualTo("output.txt")); Assert.That(writer.FullOutputPath, Is.EqualTo(expected)); }
public void It_should_use_appdomain_base_directory_if_output_starts_with_tilde() { var writer = new ReportFileWriter(Mock.Of <IReportFormatter>(), "~" + Path.DirectorySeparatorChar + "output.txt"); var expected = Path.GetFullPath(BaseDirectory + Path.DirectorySeparatorChar + "output.txt"); Assert.That(writer.OutputPath, Is.EqualTo("~" + Path.DirectorySeparatorChar + "output.txt")); Assert.That(writer.FullOutputPath, Is.EqualTo(expected)); }
public void It_should_preserve_output_path_if_it_is_unc() { var outputPath = @"\\machine\c$\reports\output.txt"; var writer = new ReportFileWriter(Mock.Of <IReportFormatter>(), outputPath); Assert.That(writer.OutputPath, Is.EqualTo(outputPath)); Assert.That(writer.FullOutputPath, Is.EqualTo(outputPath)); }
public void It_should_preserve_output_path_but_with_working_directory_root_if_it_refers_to_root_directory() { var outputPath = Path.DirectorySeparatorChar + "output.txt"; var writer = new ReportFileWriter(Mock.Of <IReportFormatter>(), outputPath); var expected = Path.GetFullPath(outputPath); Assert.That(writer.OutputPath, Is.EqualTo(outputPath)); Assert.That(writer.FullOutputPath, Is.EqualTo(expected)); }
public ReportFileWriter ToReportFileWriter(Type[] reportTriggers, DataSource[] dataSources, Type[] dataAccumulators) { ReportTrigger rt = reportTriggers .Single(t => t.GetDisplayName().Equals(this.ReportTriggerTypeName)) .InstantiateWithDefaultConstructor <ReportTrigger>(); rt.SetParametersFromSnapshotWithInnerObjects(this.ReportTriggerParameters); ReportFileWriter result = new ReportFileWriter(rt, this.FileName); result.AddReportElements(this.ReportElements.Select(re => re.ToReportElement(dataSources, dataAccumulators))); return(result); }