-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Added unit tests for DynamicResponseWriter
- Loading branch information
Duco
committed
Jan 17, 2019
1 parent
e17dbaf
commit d9d49ae
Showing
2 changed files
with
180 additions
and
7 deletions.
There are no files selected for viewing
Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.
Oops, something went wrong.
159 changes: 159 additions & 0 deletions
159
...eholder.BusinessLogic.Tests/Implementations/ResponseWriters/DynamicResponseWriterFacts.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,159 @@ | ||
using System.Text; | ||
using System.Threading.Tasks; | ||
using HttPlaceholder.BusinessLogic.Implementations.ResponseWriters; | ||
using HttPlaceholder.Models; | ||
using Microsoft.VisualStudio.TestTools.UnitTesting; | ||
using Moq; | ||
|
||
namespace HttPlaceholder.BusinessLogic.Tests.Implementations.ResponseWriters | ||
{ | ||
[TestClass] | ||
public class DynamicResponseWriterFacts | ||
{ | ||
private readonly Mock<IVariableParser> _variableParserMock = new Mock<IVariableParser>(); | ||
private DynamicResponseWriter _writer; | ||
|
||
[TestInitialize] | ||
public void Initialize() | ||
{ | ||
_writer = new DynamicResponseWriter(_variableParserMock.Object); | ||
} | ||
|
||
[TestCleanup] | ||
public void Cleanup() | ||
{ | ||
_variableParserMock.VerifyAll(); | ||
} | ||
|
||
[TestMethod] | ||
public async Task DynamicResponseWriter_WriteToResponseAsync_EnableDynamicModeIsFalse_ShouldReturnFalse() | ||
{ | ||
// arrange | ||
var stub = new StubModel | ||
{ | ||
Response = new StubResponseModel | ||
{ | ||
EnableDynamicMode = false | ||
} | ||
}; | ||
var response = new ResponseModel(); | ||
|
||
// act | ||
bool result = await _writer.WriteToResponseAsync(stub, response); | ||
|
||
// assert | ||
Assert.IsFalse(result); | ||
} | ||
|
||
[TestMethod] | ||
public async Task DynamicResponseWriter_WriteToResponseAsync_NoBodyAndHeaders_ShouldNotCallParse() | ||
{ | ||
// arrange | ||
var stub = new StubModel | ||
{ | ||
Response = new StubResponseModel | ||
{ | ||
EnableDynamicMode = true | ||
} | ||
}; | ||
var response = new ResponseModel(); | ||
|
||
// act | ||
bool result = await _writer.WriteToResponseAsync(stub, response); | ||
|
||
// assert | ||
Assert.IsTrue(result); | ||
_variableParserMock.Verify(m => m.Parse(It.IsAny<string>()), Times.Never); | ||
} | ||
|
||
[TestMethod] | ||
public async Task DynamicResponseWriter_WriteToResponseAsync_OnlyBodySet_ShouldParseBody() | ||
{ | ||
// arrange | ||
var stub = new StubModel | ||
{ | ||
Response = new StubResponseModel | ||
{ | ||
EnableDynamicMode = true | ||
} | ||
}; | ||
string body = "this is the body"; | ||
var response = new ResponseModel | ||
{ | ||
Body = Encoding.UTF8.GetBytes(body) | ||
}; | ||
|
||
_variableParserMock | ||
.Setup(m => m.Parse(It.IsAny<string>())) | ||
.Returns<string>(i => i); | ||
|
||
// act | ||
bool result = await _writer.WriteToResponseAsync(stub, response); | ||
|
||
// assert | ||
Assert.IsTrue(result); | ||
_variableParserMock.Verify(m => m.Parse(body), Times.Once); | ||
} | ||
|
||
[TestMethod] | ||
public async Task DynamicResponseWriter_WriteToResponseAsync_OnlyBodySet_BodyIsBinary_ShouldNotParseBody() | ||
{ | ||
// arrange | ||
var stub = new StubModel | ||
{ | ||
Response = new StubResponseModel | ||
{ | ||
EnableDynamicMode = true | ||
} | ||
}; | ||
var response = new ResponseModel | ||
{ | ||
Body = new byte[] { 1, 2, 3 }, | ||
BodyIsBinary = true | ||
}; | ||
|
||
// act | ||
bool result = await _writer.WriteToResponseAsync(stub, response); | ||
|
||
// assert | ||
Assert.IsTrue(result); | ||
_variableParserMock.Verify(m => m.Parse(It.IsAny<string>()), Times.Never); | ||
} | ||
|
||
[TestMethod] | ||
public async Task DynamicResponseWriter_WriteToResponseAsync_BodyAndHeadersSet_ShouldParseBodyAndHeaders() | ||
{ | ||
// arrange | ||
var stub = new StubModel | ||
{ | ||
Response = new StubResponseModel | ||
{ | ||
EnableDynamicMode = true | ||
} | ||
}; | ||
string body = "this is the body"; | ||
var response = new ResponseModel | ||
{ | ||
Body = Encoding.UTF8.GetBytes(body), | ||
Headers = | ||
{ | ||
{ "X-Header-1", "Header1" }, | ||
{ "X-Header-2", "Header2" } | ||
} | ||
}; | ||
|
||
_variableParserMock | ||
.Setup(m => m.Parse(It.IsAny<string>())) | ||
.Returns<string>(i => i); | ||
|
||
// act | ||
bool result = await _writer.WriteToResponseAsync(stub, response); | ||
|
||
// assert | ||
Assert.IsTrue(result); | ||
_variableParserMock.Verify(m => m.Parse(body), Times.Once); | ||
_variableParserMock.Verify(m => m.Parse("Header1"), Times.Once); | ||
_variableParserMock.Verify(m => m.Parse("Header2"), Times.Once); | ||
} | ||
} | ||
} |