public async Task TestCollectionsApiPostAsync() { // Arrange int actualCollectionCount = 0; // Act IHttpActionResult collectionResult = controller.Get(); var message = await collectionResult.ExecuteAsync(new System.Threading.CancellationToken()); var collections = await message.Content.ReadAsAsync <IEnumerable <Collection> >(); foreach (var collection in collections) { actualCollectionCount++; } ////////////////////////////////////////////////////////////////// // Post -- invalid model -- expect bad request message Collection newCollection = new Collection(); newCollection.Name = ""; newCollection.Description = "The latest news!"; newCollection.Id = new Guid("55555555-4444-aaaa-4444-222222222222"); controller.ModelState.AddModelError("k1", "name is required"); IHttpActionResult result = controller.Post(new CollectionAPI(newCollection)); var badPostMessage = await result.ExecuteAsync(new System.Threading.CancellationToken()); Assert.AreEqual(HttpStatusCode.BadRequest, badPostMessage.StatusCode); newCollection.Name = "News"; controller.ModelState.Remove("k1"); IHttpActionResult goodResult = controller.Post(new CollectionAPI(newCollection)); var goodPostMessage = await goodResult.ExecuteAsync(new System.Threading.CancellationToken()); Assert.AreEqual(HttpStatusCode.OK, goodPostMessage.StatusCode); ///////////////////////////////////////////////////////////////// // Arrange int expectedCollectionCount = actualCollectionCount + 1; // reset count to test again after the POST actualCollectionCount = 0; // Act collectionResult = controller.Get(); message = await collectionResult.ExecuteAsync(new System.Threading.CancellationToken()); collections = await message.Content.ReadAsAsync <IEnumerable <Collection> >(); foreach (var collection in collections) { actualCollectionCount++; } // Assert Assert.AreEqual(expectedCollectionCount, actualCollectionCount); }