Nop.Core_4.7/Tests/Nop.Tests/Nop.Services.Tests/Blogs/BlogServiceTests.cs

242 lines
7.4 KiB
C#

using FluentAssertions;
using Nop.Core.Domain.Blogs;
using Nop.Services.Blogs;
using NUnit.Framework;
namespace Nop.Tests.Nop.Services.Tests.Blogs;
[TestFixture]
public class BlogServiceTests : ServiceTest
{
private IBlogService _blogService;
[OneTimeSetUp]
public void SetUp()
{
_blogService = GetService<IBlogService>();
}
[Test]
public async Task CanParseTags()
{
var blogPost = new BlogPost
{
Tags = "tag1, tag2, tag 3 4, "
};
var tags = await _blogService.ParseTagsAsync(blogPost);
tags.Count.Should().Be(3);
tags[0].Should().Be("tag1");
tags[1].Should().Be("tag2");
tags[2].Should().Be("tag 3 4");
}
[Test]
public void ShouldBeAvailableWhenStartDateIsNotSet()
{
var blogPost = new BlogPost
{
StartDateUtc = null
};
_blogService.BlogPostIsAvailable(blogPost, new DateTime(2010, 01, 03)).Should().BeTrue();
}
[Test]
public void ShouldBeAvailableWhenStartDateIsLessThanSomeDate()
{
var blogPost = new BlogPost
{
StartDateUtc = new DateTime(2010, 01, 02)
};
_blogService.BlogPostIsAvailable(blogPost, new DateTime(2010, 01, 03)).Should().BeTrue();
}
[Test]
public void ShouldNotBeAvailableWhenStartDateIsGreaterThanSomeDate()
{
var blogPost = new BlogPost
{
StartDateUtc = new DateTime(2010, 01, 02)
};
_blogService.BlogPostIsAvailable(blogPost, new DateTime(2010, 01, 01)).Should().BeFalse();
}
[Test]
public void ShouldBeAvailableWhenEndDateIsNotSet()
{
var blogPost = new BlogPost
{
EndDateUtc = null
};
_blogService.BlogPostIsAvailable(blogPost, new DateTime(2010, 01, 03)).Should().BeTrue();
}
[Test]
public void ShouldBeAvailableWhenEndDateIsGreaterThanSomeDate()
{
var blogPost = new BlogPost
{
EndDateUtc = new DateTime(2010, 01, 02)
};
_blogService.BlogPostIsAvailable(blogPost, new DateTime(2010, 01, 01)).Should().BeTrue();
}
[Test]
public void ShouldNotBeAvailableWhenEndDateIsLessThanSomeDate()
{
var blogPost = new BlogPost
{
EndDateUtc = new DateTime(2010, 01, 02)
};
_blogService.BlogPostIsAvailable(blogPost, new DateTime(2010, 01, 03)).Should().BeFalse();
}
[Test]
public async Task CanGetAllBlogPosts()
{
var blogPosts = await _blogService.GetAllBlogPostsAsync();
blogPosts.TotalCount.Should().Be(2);
blogPosts = await _blogService.GetAllBlogPostsAsync(showHidden: true);
blogPosts.TotalCount.Should().Be(2);
}
[Test]
public async Task CanGetAllBlogPostsByTag()
{
var blogPosts = await _blogService.GetAllBlogPostsByTagAsync(showHidden: true);
blogPosts.TotalCount.Should().Be(0);
blogPosts = await _blogService.GetAllBlogPostsByTagAsync();
blogPosts.TotalCount.Should().Be(0);
blogPosts = await _blogService.GetAllBlogPostsByTagAsync(tag: "e-commerce");
blogPosts.TotalCount.Should().Be(2);
blogPosts = await _blogService.GetAllBlogPostsByTagAsync(tag: "nopCommerce");
blogPosts.TotalCount.Should().Be(1);
blogPosts = await _blogService.GetAllBlogPostsByTagAsync(tag: "blog");
blogPosts.TotalCount.Should().Be(1);
blogPosts = await _blogService.GetAllBlogPostsByTagAsync(tag: "not exists");
blogPosts.TotalCount.Should().Be(0);
}
[Test]
public async Task CanGetAllBlogPostTags()
{
var blogPostTags = await _blogService.GetAllBlogPostTagsAsync(1, 1);
blogPostTags.Count.Should().Be(6);
blogPostTags = await _blogService.GetAllBlogPostTagsAsync(2, 1);
blogPostTags.Count.Should().Be(6);
blogPostTags = await _blogService.GetAllBlogPostTagsAsync(1, 2);
blogPostTags.Count.Should().Be(0);
}
[Test]
public async Task CanGetPostsByDate()
{
var posts = (await _blogService.GetAllBlogPostsByTagAsync(tag: "e-commerce")).OrderBy(b => b.Id).ToList();
posts[1].CreatedOnUtc = posts[1].CreatedOnUtc.AddDays(1);
var filteredPosts = await _blogService.GetPostsByDateAsync(posts, posts[0].CreatedOnUtc, posts[0].CreatedOnUtc);
filteredPosts.Count.Should().Be(1);
filteredPosts = await _blogService.GetPostsByDateAsync(posts, posts[0].CreatedOnUtc, posts[1].CreatedOnUtc);
filteredPosts.Count.Should().Be(2);
}
[Test]
public async Task CanGetAllComments()
{
var comments = await _blogService.GetAllCommentsAsync();
comments.Count.Should().Be(2);
comments = await _blogService.GetAllCommentsAsync(blogPostId: 1);
comments.Count.Should().Be(1);
comments = await _blogService.GetAllCommentsAsync(blogPostId: 3);
comments.Count.Should().Be(0);
}
[Test]
public async Task CanGetBlogCommentsCount()
{
var post = await _blogService.GetBlogPostByIdAsync(1);
var count = await _blogService.GetBlogCommentsCountAsync(post);
count.Should().Be(1);
}
[Test]
public async Task TestCRUD()
{
var post = new BlogPost
{
Title = string.Empty,
Body = string.Empty,
LanguageId = 1
};
await _blogService.InsertBlogPostAsync(post);
var postId = post.Id;
postId.Should().BeGreaterThan(0);
post.Body.Should().BeNullOrEmpty();
post.Body = "test body";
await _blogService.UpdateBlogPostAsync(post);
var testPost = await _blogService.GetBlogPostByIdAsync(postId);
testPost.Body.Should().NotBeEmpty();
testPost.Body.Should().BeEquivalentTo(post.Body);
var comment = new BlogComment { BlogPostId = postId, StoreId = 1, CustomerId = 1 };
await _blogService.InsertBlogCommentAsync(comment);
var commentId = comment.Id;
commentId.Should().BeGreaterThan(0);
comment.CommentText.Should().BeNullOrEmpty();
comment.CommentText = "test comment";
await _blogService.UpdateBlogCommentAsync(comment);
var testComment = await _blogService.GetBlogCommentByIdAsync(commentId);
testComment.CommentText.Should().NotBeEmpty();
testComment.CommentText.Should().BeEquivalentTo(comment.CommentText);
await _blogService.DeleteBlogCommentAsync(comment);
testComment = await _blogService.GetBlogCommentByIdAsync(commentId);
testComment.Should().BeNull();
var comments = new List<BlogComment>
{
new() {BlogPostId = postId, StoreId = 1, CustomerId = 1},
new() {BlogPostId = postId, StoreId = 1, CustomerId = 1},
new() {BlogPostId = postId, StoreId = 1, CustomerId = 1}
} as IList<BlogComment>;
foreach (var blogComment in comments)
await _blogService.InsertBlogCommentAsync(blogComment);
comments = await _blogService.GetBlogCommentsByIdsAsync(comments.Select(p => p.Id).ToArray());
comments.Count.Should().Be(3);
await _blogService.DeleteBlogCommentsAsync(comments);
comments = await _blogService.GetBlogCommentsByIdsAsync(comments.Select(p => p.Id).ToArray());
comments.Count.Should().Be(0);
await _blogService.DeleteBlogPostAsync(post);
testPost = await _blogService.GetBlogPostByIdAsync(postId);
testPost.Should().BeNull();
}
}