public void Process_NotFound()
        {
            // Arrange
            var pageId = 389432;

            var pageRepository = Mocks.Create<IDocumentationPageRepository>();
            pageRepository.Setup(r => r.Read(pageId)).Returns(null as DocumentationPage);

            var processor = new ReadDocumentationPageRequestProcessor(pageRepository.Object);

            // Act
            var result = processor.Process(pageId.ToString());

            // Assert
            Assert.That(result, Is.Not.Null, "A valid ResponseState should be returned.");
            Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.NotFound));

            Mocks.VerifyAll();
        }
        public void Process_Success()
        {
            // Arrange
            var page = Models.CreateDocumentationPage(id: 84932);

            var pageRepository = Mocks.Create<IDocumentationPageRepository>();
            pageRepository.Setup(r => r.Read(page.Id)).Returns(page);

            var processor = new ReadDocumentationPageRequestProcessor(pageRepository.Object);

            // Act
            var result = processor.Process(page.Id.ToString());

            // Assert
            Assert.That(result, Is.Not.Null, "A valid ResponseState should be returned.");
            Assert.That(result.StatusCode, Is.EqualTo(HttpStatusCode.OK), "The request should succeed.");
            Assert.That(result.ContentType, Is.EqualTo(ContentTypes.Json), "JSON should be returned in the response.");
            var serializer = new JavaScriptSerializer();
            var clientPage = serializer.Deserialize<DocumentationPage>(result.Content);
            Assert.That(clientPage.Id, Is.EqualTo(page.Id), "The page read from the repository should be included in the result.");

            Mocks.VerifyAll();
        }