diff --git a/RichardSzalay.Hosts.Tests/FileInfoResourceSpec.cs b/RichardSzalay.Hosts.Tests/FileInfoResourceSpec.cs new file mode 100644 index 0000000..b506c44 --- /dev/null +++ b/RichardSzalay.Hosts.Tests/FileInfoResourceSpec.cs @@ -0,0 +1,45 @@ +using Machine.Specifications; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Text; + +namespace RichardSzalay.Hosts.Tests +{ + public class FileInfoResourceSpec + { + [Subject(typeof(FileInfoResource), "OpenWrite")] + public class When_writing_to_the_resource + { + Establish context = () => + { + tempFile = new FileInfo(Path.GetTempFileName()); + + File.WriteAllText(tempFile.FullName, "Test original longer text"); + + sut = new FileInfoResource(tempFile); + }; + + Because of = () => + { + using (Stream stream = sut.OpenWrite()) + using (StreamWriter writer = new StreamWriter(stream)) + { + writer.Write("Test 2"); + + stream.Flush(); + } + + result = File.ReadAllText(tempFile.FullName); + }; + + It should_overwrite_existing_contents = () => + result.ShouldEqual("Test 2"); + + static FileInfoResource sut; + static FileInfo tempFile; + static string result; + } + } +} diff --git a/RichardSzalay.Hosts.Tests/RichardSzalay.Hosts.Tests.csproj b/RichardSzalay.Hosts.Tests/RichardSzalay.Hosts.Tests.csproj index 7dfd85d..af77431 100644 --- a/RichardSzalay.Hosts.Tests/RichardSzalay.Hosts.Tests.csproj +++ b/RichardSzalay.Hosts.Tests/RichardSzalay.Hosts.Tests.csproj @@ -47,6 +47,7 @@ + diff --git a/RichardSzalay.Hosts/FileInfoResource.cs b/RichardSzalay.Hosts/FileInfoResource.cs index 031d287..abb16b5 100644 --- a/RichardSzalay.Hosts/FileInfoResource.cs +++ b/RichardSzalay.Hosts/FileInfoResource.cs @@ -26,9 +26,7 @@ public Stream OpenRead() public Stream OpenWrite() { - this.file.Delete(); - - return this.file.OpenWrite(); + return File.Create(this.file.FullName); } #endregion