public void Constructor_CalledWithNullServiceMethodInvocation_ExpectArgumentNullExceptionWithCorrectParamName(
            RouteTableBuilder routeTableBuilder, RouteDispatchBuilder routeDispatchBuilder)
        {
            Action constructor = () => new RouteRegistrar(
                routeTableBuilder, routeDispatchBuilder, DummyServiceFactory, DummyRequestMessageBinder, null);

            constructor.ShouldThrow <ArgumentNullException>().And.ParamName.Should().Be("serviceMethodInvocation");
        }
		public void Constructor_CalledWithNullServiceMethodInvocation_ExpectArgumentNullExceptionWithCorrectParamName(
			RouteTableBuilder routeTableBuilder, RouteDispatchBuilder routeDispatchBuilder)
		{
			Action constructor = () => new RouteRegistrar(
				routeTableBuilder, routeDispatchBuilder, DummyServiceFactory, DummyRequestMessageBinder, null);

			constructor.ShouldThrow<ArgumentNullException>().And.ParamName.Should().Be("serviceMethodInvocation");
		}
		public void WithServiceFactory_Called_ExpectSameBuilderInstanceIsReturned()
		{
			var builder = new RouteDispatchBuilder();
			builder.WithServiceFactory(x => null).Should().BeSameAs(builder);
		}
		public void WithDefaultResponse_CalledWithNullResponse_ExpectNoArgumentNullException()
		{
			var builder = new RouteDispatchBuilder();
			builder.Invoking(x => x.WithDefaultResponse(null)).ShouldNotThrow<ArgumentNullException>();
		}
		public void WithDefaultResponse_Called_ExpectSameBuilderInstanceIsReturned(object defaultResponse)
		{
			var builder = new RouteDispatchBuilder();
			builder.WithDefaultResponse(defaultResponse).Should().BeSameAs(builder);
		}
		public void WithMethod_CalledWithNullMethod_ExpectArgumentNullExceptionWithCorrectParamName()
		{
			var builder = new RouteDispatchBuilder();
			builder.Invoking(x => x.WithMethod(null)).ShouldThrow<ArgumentNullException>().And.ParamName.Should().Be("method");
		}
		public void WithMethod_Called_ExpectSameBuilderInstanceIsReturned()
		{
			var builder = new RouteDispatchBuilder();
			builder.WithMethod(InfoOf.Method<StubService>(x => x.ServiceMethod(null))).Should().BeSameAs(builder);
		}
		public void WithRequestMessageBinder_Called_ExpectSameBuilderInstanceIsReturned()
		{
			var builder = new RouteDispatchBuilder();
			builder.WithRequestMessageBinder(DummyRequestMessageBinder).Should().BeSameAs(builder);
		}
        public void WithDefaultResponse_Called_ExpectSameBuilderInstanceIsReturned(object defaultResponse)
        {
            var builder = new RouteDispatchBuilder();

            builder.WithDefaultResponse(defaultResponse).Should().BeSameAs(builder);
        }
        public void WithModule_CalledWithNullModule_ExpectArgumentNullExceptionWithCorrectParamName()
        {
            var builder = new RouteDispatchBuilder();

            builder.Invoking(x => x.WithModule(null)).ShouldThrow <ArgumentNullException>().And.ParamName.Should().Be("module");
        }
        public void WithModule_Called_ExpectSameBuilderInstanceIsReturned(NancyModule module)
        {
            var builder = new RouteDispatchBuilder();

            builder.WithModule(module).Should().BeSameAs(builder);
        }
        public void WithRequestMessageBinder_CalledWithNullRequestMessageBinder_ExpectArgumentNullExceptionWithCorrectParamName()
        {
            var builder = new RouteDispatchBuilder();

            builder.Invoking(x => x.WithRequestMessageBinder(null)).ShouldThrow <ArgumentNullException>().And.ParamName.Should().Be("requestMessageBinder");
        }
        public void WithRequestMessageBinder_Called_ExpectSameBuilderInstanceIsReturned()
        {
            var builder = new RouteDispatchBuilder();

            builder.WithRequestMessageBinder(DummyRequestMessageBinder).Should().BeSameAs(builder);
        }
        public void WithServiceMethodInvocation_Called_ExpectSameBuilderInstanceIsReturned()
        {
            var builder = new RouteDispatchBuilder();

            builder.WithServiceMethodInvocation(DummyServiceMethodInvocation).Should().BeSameAs(builder);
        }
        public void WithServiceMethodInvocation_CalledWithNullServiceMethodInvocation_ExpectArgumentNullExceptionWithCorrectParamName()
        {
            var builder = new RouteDispatchBuilder();

            builder.Invoking(x => x.WithServiceMethodInvocation(null)).ShouldThrow <ArgumentNullException>().And.ParamName.Should().Be("serviceMethodInvocation");
        }
        public void WithServiceFactory_Called_ExpectSameBuilderInstanceIsReturned()
        {
            var builder = new RouteDispatchBuilder();

            builder.WithServiceFactory(x => null).Should().BeSameAs(builder);
        }
		public void WithServiceMethodInvocation_Called_ExpectSameBuilderInstanceIsReturned()
		{
			var builder = new RouteDispatchBuilder();
			builder.WithServiceMethodInvocation(DummyServiceMethodInvocation).Should().BeSameAs(builder);
		}
		public void WithServiceType_CalledWithNullServiceType_ExpectArgumentNullExceptionWithCorrectParamName()
		{
			var builder = new RouteDispatchBuilder();
			builder.Invoking(x => x.WithServiceType(null)).ShouldThrow<ArgumentNullException>().And.ParamName.Should().Be("serviceType");
		}
		public void WithRequestMessageBinder_CalledWithNullRequestMessageBinder_ExpectArgumentNullExceptionWithCorrectParamName()
		{
			var builder = new RouteDispatchBuilder();
			builder.Invoking(x => x.WithRequestMessageBinder(null)).ShouldThrow<ArgumentNullException>().And.ParamName.Should().Be("requestMessageBinder");
		}
        public void WithMethod_Called_ExpectSameBuilderInstanceIsReturned()
        {
            var builder = new RouteDispatchBuilder();

            builder.WithMethod(InfoOf.Method <StubService>(x => x.ServiceMethod(null))).Should().BeSameAs(builder);
        }
		public void WithModule_Called_ExpectSameBuilderInstanceIsReturned(NancyModule module)
		{
			var builder = new RouteDispatchBuilder();
			builder.WithModule(module).Should().BeSameAs(builder);
		}
        public void WithDefaultResponse_CalledWithNullResponse_ExpectNoArgumentNullException()
        {
            var builder = new RouteDispatchBuilder();

            builder.Invoking(x => x.WithDefaultResponse(null)).ShouldNotThrow <ArgumentNullException>();
        }
		public void WithServiceType_Called_ExpectSameBuilderInstanceIsReturned()
		{
			var builder = new RouteDispatchBuilder();
			builder.WithServiceType(typeof(StubService)).Should().BeSameAs(builder);
		}
        public void WithServiceType_Called_ExpectSameBuilderInstanceIsReturned()
        {
            var builder = new RouteDispatchBuilder();

            builder.WithServiceType(typeof(StubService)).Should().BeSameAs(builder);
        }