Esempio n. 1
0
        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);
        }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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));
        }
Esempio n. 4
0
        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));
        }
Esempio n. 5
0
 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));
        }
Esempio n. 9
0
        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));
        }
Esempio n. 10
0
        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));
        }
Esempio n. 11
0
        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);
        }