Implements the counts handler.
Inheritance: JsonHandler
        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);
        }