public async void Author_Can_Publish_BlogPost_From_OLW()
        {
            // Arrange
            SeedTestPost();
            var blogPost = new BlogPost // A user posts this from OLW
            {
                UserId        = Actor.AUTHOR_ID,
                Title         = "Hello World!",
                Slug          = null,                 // user didn't input
                Body          = "This is my first post",
                Excerpt       = null,                 // user didn't input
                CategoryTitle = null,                 // user didn't input
                TagTitles     = null,                 // user didn't input
                CreatedOn     = new DateTimeOffset(), // user didn't input, it's MinValue
                Status        = EPostStatus.Published,
                CommentStatus = ECommentStatus.AllowComments,
            };

            // Act
            var result = await _blogSvc.CreatePostAsync(blogPost);

            // Assert
            Assert.Equal(2, result.Id);
            Assert.Equal("hello-world", result.Slug);
            Assert.NotEqual(DateTimeOffset.MinValue, result.CreatedOn);
            Assert.Equal(1, result.Category.Id);
            Assert.Empty(result.Tags);
        }
        public async void Admin_Publish_BlogPost_With_New_Category_And_Tags_From_OLW()
        {
            // Arrange
            SeedTestPost();
            var blogPost = new BlogPost // A user posts this from OLW
            {
                UserId        = Actor.ADMIN_ID,
                Title         = "Hello World!",
                Slug          = null,
                Body          = "This is my first post",
                Excerpt       = null,
                CategoryTitle = "Travel",
                TagTitles     = new List <string> {
                    "Windows 10", TAG2_TITLE
                },
                Tags          = await _tagSvc.GetAllAsync(),
                CreatedOn     = new DateTimeOffset(),
                Status        = EPostStatus.Published,
                CommentStatus = ECommentStatus.AllowComments,
            };

            // Act
            var result = await _blogSvc.CreateAsync(blogPost);

            // Assert
            var cats = await _catSvc.GetAllAsync();

            var tags = await _tagSvc.GetAllAsync();

            // BlogPost
            Assert.Equal(2, result.Id);
            Assert.Equal(2, result.Category.Id);
            Assert.Equal("travel", result.Category.Slug);
            Assert.Equal(2, result.Tags.Count);
            Assert.Equal("cs", result.Tags[1].Slug);

            // Category
            Assert.Equal(2, cats.Count); // there are now 2 cats
            Assert.Equal(1, cats[1].Count);

            // Tags
            Assert.Equal(3, tags.Count);                                  // there are now 3 tags
            Assert.Equal(2, tags.Find(t => t.Title == TAG2_TITLE).Count); // C# has 2 posts
        }