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()); }