Skip to content

Commit

Permalink
Added unit tests for DynamicResponseWriter
Browse files Browse the repository at this point in the history
  • Loading branch information
Duco committed Jan 17, 2019
1 parent e17dbaf commit d9d49ae
Show file tree
Hide file tree
Showing 2 changed files with 180 additions and 7 deletions.
28 changes: 21 additions & 7 deletions gui/package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

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);
}
}
}

0 comments on commit d9d49ae

Please sign in to comment.