public void WillWriteCompiledCoffee()
        {
            var          testable = new TestableCoffeeHandler();
            const string expected = "var square;\nsquare = function(x) {\n  return x * x;\n};";

            testable.ClassUnderTest.ProcessRequest(testable.MockedContext.Object);

            Assert.Equal(expected, testable.CompileResult);
        }
        public void WillSetCorrectContentType()
        {
            var testable = new TestableCoffeeHandler();

            testable.MockedResponse.SetupProperty(x => x.ContentType);

            testable.ClassUnderTest.ProcessRequest(testable.MockedContext.Object);

            Assert.Equal("text/javascript", testable.MockedResponse.Object.ContentType);
        }
        public void WillReturn404IfFileNotFound()
        {
            var testable = new TestableCoffeeHandler();

            testable.MockedContext.Setup(x => x.Request.PhysicalPath).Returns(string.Format("{0}\\TestScripts\\bad.coffee", AppDomain.CurrentDomain.BaseDirectory));
            testable.MockedResponse.SetupProperty(x => x.StatusCode);

            testable.ClassUnderTest.ProcessRequest(testable.MockedContext.Object);

            Assert.Equal(404, testable.MockedResponse.Object.StatusCode);
        }
        public void WillReturn500IfIOExceptionIsThrown()
        {
            var testable = new TestableCoffeeHandler();

            testable.MockedContext.Setup(x => x.Request.Path).Returns("~/badaddress/bad.coffee");
            testable.MockedServer.Setup(x => x.MapPath("~/badaddress/bad.coffee")).Returns("h:\\crazy\\crazy.coffee");
            testable.MockedResponse.SetupProperty(x => x.StatusCode);

            testable.ClassUnderTest.ProcessRequest(testable.MockedContext.Object);

            Assert.Equal(500, testable.MockedResponse.Object.StatusCode);
        }