public async Task <IHttpActionResult> PostAsync([FromBody] TodoListItem newItem)
        {
            var storedItem = await _repository.AddNewItemAsync(newItem);

            var location = _urlLocator.GetListItemUrl(storedItem.Id);

            return(Created(location, storedItem));
        }
        public void GetListItemUrl_IdSpecified_ReturnsCorrectUrlWithId()
        {
            var testId = new Guid("11111111-1111-1111-1111-aabbccddeeff");

            _urlHelper
            .Route(
                RoutesConfig.TodoListItemRouteName,
                Arg.Is <object>(obj => (Guid) new HttpRouteValueDictionary(obj)["id"] == testId))
            .Returns(testId.ToString());

            var resultUrl = _locator.GetListItemUrl(testId);

            Assert.That(resultUrl.Equals(testId.ToString()));
        }
        public async Task Post_NewTextSpecifiedInRequestBody_ReturnsCorrectResponse()
        {
            var itemToAdd = new TodoListItem {
                Text = "newText"
            };
            var expectedItem = new TodoListItem {
                Id = _expectedId, Text = "newText"
            };

            _repository.AddNewItemAsync(itemToAdd).Returns(expectedItem);
            const string expectedUrl = "expected/Url";

            _itemUrlLocator.GetListItemUrl(itemToAdd.Id).Returns(expectedUrl);

            var message = await _controller.GetMessageFromActionAsync(controller => controller.PostAsync(itemToAdd));

            message.TryGetContentValue(out TodoListItem itemFromMessage);

            Assert.That(message.StatusCode, Is.EqualTo(HttpStatusCode.Created));
            Assert.That(itemFromMessage, Is.EqualTo(expectedItem).UsingItemEqualityComparer());
        }