public async Task Invoker_Options_Dunno() // TODO
        {
            var handler = new MockHttpRequestHandler
            {
                RequestMethod = "OPTIONS",
                ResourcePath  = ""
            };

            await _invoker.InvokeAsync(handler, handler, new TestRequestContext());
        }
        public async Task Invoker_Delete_405()
        {
            var handler = new MockHttpRequestHandler
            {
                RequestMethod = "DELETE",
                ResourcePath  = ""
            };

            await _invoker.InvokeAsync(handler, handler, new TestRequestContext());

            Assert.Equal(HttpStatusCode.MethodNotAllowed, handler.ResponseStatusCode);
        }
        public async Task Invoker_Delete_SetsToNull()
        {
            var handler = new MockHttpRequestHandler
            {
                RequestMethod = "DELETE",
                ResourcePath  = ""
            };

            await _invoker.InvokeAsync(handler, handler, new TestRequestContext());

            Assert.Equal(null, _startResource.ObjectValue);
        }
        public async Task Invoker_PostSalarBody_400()
        {
            var handler = new MockHttpRequestHandler
            {
                RequestMethod        = "POST",
                RequestContentReader = new MockJsonReader(@"""New value"""),
                ResourcePath         = ""
            };

            await _invoker.InvokeAsync(handler, handler, new TestRequestContext());

            Assert.Equal(HttpStatusCode.BadRequest, handler.ResponseStatusCode);
        }
        public async Task Invoker_Put_405()
        {
            var handler = new MockHttpRequestHandler
            {
                RequestMethod        = "PUT",
                RequestContentReader = new MockJsonReader(@"""New value"""),
                ResourcePath         = ""
            };

            await _invoker.InvokeAsync(handler, handler, new TestRequestContext());

            Assert.Equal(HttpStatusCode.MethodNotAllowed, handler.ResponseStatusCode);
        }
        public async Task Invoker_Put_EditsScalar()
        {
            var handler = new MockHttpRequestHandler
            {
                RequestMethod        = "PUT",
                RequestContentReader = new MockJsonReader(@"""New value"""),
                ResourcePath         = ""
            };

            await _invoker.InvokeAsync(handler, handler, new TestRequestContext());

            Assert.Equal("New value", _startResource.ObjectValue);
        }
        public async Task Invoker_Get_ReturnsStartResourceBody()
        {
            var handler = new MockHttpRequestHandler
            {
                RequestMethod = "GET",
                ResourcePath  = ""
            };

            await _invoker.InvokeAsync(handler, handler, new TestRequestContext());

            Assert.Equal(HttpStatusCode.OK, handler.ResponseStatusCode);
            // TODO too big-a-test. Maybe test invoker alone?
            //Assert.Equal(_startResource.ObjectValue, handler.ResponseBody);
        }
        public async Task Invoker_Get_ReturnsCollectionBody()
        {
            var handler = new MockHttpRequestHandler
            {
                RequestMethod = "GET",
                ResourcePath  = ""
            };

            await _invoker.InvokeAsync(handler, handler, new TestRequestContext());

            Assert.Equal(HttpStatusCode.OK, handler.ResponseStatusCode);
            // TODO test the response is the collection
            //var enumerable = Assert.IsAssignableFrom<IEnumerable>(handler.ResponseBody);
            //Assert.Equal(_startResource.List.Count, enumerable.OfType<object>().Count());
        }
        public async Task Invoker_Post_AddsToList()
        {
            var handler = new MockHttpRequestHandler
            {
                RequestMethod        = "POST",
                RequestContentReader = new MockJsonReader(@"{ value: ""New value"" }"),
                ResourcePath         = ""
            };

            int startCount = _startResource.List.Count;

            await _invoker.InvokeAsync(handler, handler, new TestRequestContext());

            Assert.Equal(startCount + 1, _startResource.List.Count);
            Assert.Equal(HttpStatusCode.Created, handler.ResponseStatusCode);
        }