public HttpResponseMessage CreatePost([FromBody] UserPostCreateModel model, [FromUri] string sessionKey)
        {
            var responseMsg = this.PerformOperationAndHandleExceptions(() =>
            {
                this.ValidatePostContent(model.Content);

                var user    = this.GetUserBySessionKey(sessionKey);
                var newPost = new UserPost()
                {
                    Content  = model.Content,
                    PostDate = DateTime.Now
                };

                user.Posts.Add(newPost);
                this.db.Users.Update(user);
                this.db.SaveChanges();

                var returnModel = new UserPostModel()
                {
                    Id       = newPost.Id,
                    Content  = model.Content,
                    PostedBy = user.FirstName + " " + user.LastName,
                    PostDate = newPost.PostDate
                };

                var response = this.Request.CreateResponse(HttpStatusCode.Created, returnModel);
                return(response);
            });

            return(responseMsg);
        }
        public void CreatePost_WhenContentIsNull_ShouldReturnBadRequest()
        {
            using (new TransactionScope())
            {
                this.db.Users.Add(this.firstUser);
                this.db.SaveChanges();

                var newPost = new UserPostCreateModel()
                {
                };

                var response = this.httpServer.CreatePostRequest(
                    "/api/userposts/create?sessionKey=" + this.firstUser.SessionKey, newPost);
                Assert.AreEqual(HttpStatusCode.BadRequest, response.StatusCode);
            }
        }
        public void CreatePost_WhenDataIsValid_ShouldSaveInDatabase()
        {
            using (new TransactionScope())
            {
                this.db.Users.Add(this.firstUser);
                this.db.SaveChanges();

                var newPost = new UserPostCreateModel()
                {
                    Content = "Content"
                };

                var response = this.httpServer.CreatePostRequest(
                    "/api/userposts/create?sessionKey=" + this.firstUser.SessionKey, newPost);
                Assert.AreEqual(HttpStatusCode.Created, response.StatusCode);

                var returnedPostModel = this.GetUserPostModelFromResponse(response);
                Assert.IsNotNull(returnedPostModel);
                Assert.IsNotNull(returnedPostModel.PostDate);
                Assert.AreEqual(this.firstUser.FirstName + " " + this.firstUser.LastName, returnedPostModel.PostedBy);
                Assert.AreEqual(newPost.Content, returnedPostModel.Content);
                Assert.IsTrue(returnedPostModel.Id > 0);
            }
        }