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