Skip to content

Commit 23c578d

Browse files
committed
[edit] simplify stream dispose assertion and fix VS Code test filter syntax
1 parent 28f88e5 commit 23c578d

2 files changed

Lines changed: 27 additions & 12 deletions

File tree

.vscode/tasks.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@
5656
"-f",
5757
"net10.0",
5858
"--filter",
59-
"TestCategory!=\"Benchmark\"",
59+
"TestCategory!=Benchmark",
6060
"/p:CollectCoverage=true",
6161
"/p:CoverletOutputFormat=lcov",
6262
"/p:CoverletOutput=./lcov.info"

src/Simplify.Web.Tests/Responses/FileTests.cs

Lines changed: 26 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
1-
using System.Threading.Tasks;
1+
using System.IO;
2+
using System.Threading.Tasks;
23
using Microsoft.AspNetCore.Http;
34
using Moq;
45
using NUnit.Framework;
56
using Simplify.Web.Http.ResponseWriting;
67
using Simplify.Web.Modules.Context;
78
using Simplify.Web.Responses;
8-
using Stream = System.IO.Stream;
9+
using File = Simplify.Web.Responses.File;
910

1011
namespace Simplify.Web.Tests.Responses;
1112

@@ -83,10 +84,9 @@ public async Task Process_Stream_StreamSentAndDisposed()
8384
{
8485
// Arrange
8586

86-
var stream = new Mock<Stream> { CallBase = false };
87-
stream.SetupGet(x => x.CanRead).Returns(true);
87+
var stream = new DisposableMemoryStream();
8888

89-
var file = new Mock<File>(stream.Object, "application/example", null!,
89+
var file = new Mock<File>(stream, "application/example", null!,
9090
ContentDispositionType.Inline, null!, null!, 200)
9191
{ CallBase = true };
9292

@@ -101,11 +101,26 @@ public async Task Process_Stream_StreamSentAndDisposed()
101101
Assert.That(result, Is.EqualTo(ResponseBehavior.RawOutput));
102102
Assert.That(_headerDictionary["Content-Disposition"], Is.EqualTo("inline"));
103103

104-
_responseWriter.Verify(x => x.WriteAsync(It.IsAny<HttpResponse>(), It.Is<Stream>(s => s == stream.Object)));
105-
#if NETFRAMEWORK
106-
stream.Verify(x => x.Dispose());
107-
#else
108-
stream.Verify(x => x.DisposeAsync());
104+
_responseWriter.Verify(x => x.WriteAsync(It.IsAny<HttpResponse>(), It.Is<Stream>(s => s == stream)));
105+
Assert.That(stream.Disposed, Is.True);
106+
}
107+
108+
private class DisposableMemoryStream : MemoryStream
109+
{
110+
public bool Disposed { get; private set; }
111+
112+
protected override void Dispose(bool disposing)
113+
{
114+
Disposed = true;
115+
base.Dispose(disposing);
116+
}
117+
118+
#if !NETSTANDARD2_0
119+
public override async ValueTask DisposeAsync()
120+
{
121+
Disposed = true;
122+
await base.DisposeAsync();
123+
}
109124
#endif
110125
}
111-
}
126+
}

0 commit comments

Comments
 (0)