diff --git a/source/StoneAge.Data.FileSystem.Tests/FileSystemTests.cs b/source/StoneAge.Data.FileSystem.Tests/FileSystemTests.cs index 08f5d4c..77d96a4 100644 --- a/source/StoneAge.Data.FileSystem.Tests/FileSystemTests.cs +++ b/source/StoneAge.Data.FileSystem.Tests/FileSystemTests.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.IO; using System.Linq; using System.Threading.Tasks; @@ -112,6 +112,25 @@ public async Task WhenFileExist_ExpectItOverWritten() contents.Should().BeEquivalentTo(new byte[5]); } + [Test] + public async Task WhenFileDataIsNull_ExpectErrorMessage() + { + //---------------Arrange------------------- + var path = Path.GetTempPath(); + var fileName = Guid.NewGuid() + ".txt"; + var document = new DocumentBuilder() + .With_Name(fileName) + .With_Bytes(null) // explicitly set null data + .Create_Document(); + + var sut = new FileSystem(); + //---------------Act---------------------- + var result = await sut.Write(path, document); + //---------------Assert----------------------- + result.HadError.Should().BeTrue(); + result.ErrorMessages.Should().Contain("No file data provided; cannot write file."); + } + private static void Write_File_Contents_For_Testing(string path, string fileName) { File.WriteAllText(Path.Combine(path, fileName), "test line"); diff --git a/source/StoneAge.Data.FileSystem/FileSystem.cs b/source/StoneAge.Data.FileSystem/FileSystem.cs index 008c2ef..ae57b95 100644 --- a/source/StoneAge.Data.FileSystem/FileSystem.cs +++ b/source/StoneAge.Data.FileSystem/FileSystem.cs @@ -1,4 +1,4 @@ -using System; +using System; using System.Collections.Generic; using System.IO; using System.Linq; @@ -196,6 +196,13 @@ public async Task> ReadAllLines(string path) private WriteFileResult Write_File_To_Path(IDocument file, string filePath, FileMode fileMode) { var result = new WriteFileResult(); + + if (file.Data == null) + { + result.ErrorMessages.Add("No file data provided; cannot write file."); + return result; + } + try { using (var stream = new FileStream(filePath, fileMode))