public void DashboardHandlerCountsGet()
{
var record = new CountsRecord()
{
HistoryCount = 1,
QueueCount = 2,
ScheduleCount = 3,
WorkerCount = 4,
WorkingCount = 5
};
var transaction = new Mock<IDbTransaction>();
var repository = new Mock<IRepository>();
repository.Setup(r => r.BeginTransaction()).Returns(transaction.Object);
repository.Setup(r => r.GetCounts(It.IsAny<string>(), It.IsAny<IDbTransaction>())).Returns(record);
var factory = new Mock<IRepositoryFactory>();
factory.Setup(f => f.Create()).Returns(repository.Object);
CountsHandler handler = null;
string output;
try
{
handler = new CountsHandler(factory.Object);
handler.ApplicationName = BlueCollarSection.Section.ApplicationName;
handler.HandlerRelativeRequestUrl = "~/counts";
handler.QueryString = new QueryString();
using (MemoryStream inputStream = new MemoryStream())
{
using (MemoryStream outputStream = new MemoryStream())
{
var context = MockHttpContext("GET", "/counts", inputStream, outputStream);
handler.ProcessRequest(context.Object);
outputStream.Position = 0;
output = Encoding.UTF8.GetString(outputStream.ToArray());
}
}
}
finally
{
handler.Dispose();
}
Assert.IsNotNull(output);
Assert.IsTrue(output.Length > 0);
var outputRecord = JsonConvert.DeserializeObject<CountsRecord>(output);
Assert.IsNotNull(outputRecord);
Assert.AreEqual(record.HistoryCount, outputRecord.HistoryCount);
Assert.AreEqual(record.QueueCount, outputRecord.QueueCount);
Assert.AreEqual(record.ScheduleCount, outputRecord.ScheduleCount);
Assert.AreEqual(record.WorkerCount, outputRecord.WorkerCount);
Assert.AreEqual(record.WorkingCount, outputRecord.WorkingCount);
}