Try your search with a different keyword or use * as a wildcard.
using FluentAssertions;
using Nop.Core.Domain.Blogs;
using Nop.Core.Domain.Customers;
using Nop.Core.Domain.Media;
using Nop.Core.Domain.Security;
using Nop.Services.Blogs;
using Nop.Services.Configuration;
using Nop.Services.Customers;
using Nop.Services.Helpers;
using Nop.Web.Factories;
using Nop.Web.Models.Blogs;
using NUnit.Framework;
namespace Nop.Tests.Nop.Web.Tests.Public.Factories;
[TestFixture]
public class BlogModelFactoryTests : BaseNopTest
{
private IBlogModelFactory _blogModelFactory;
private IBlogService _blogService;
private ICustomerService _customerService;
private IDateTimeHelper _dateTimeHelper;
private CustomerSettings _customerSettings;
private CaptchaSettings _captchaSettings;
private BlogSettings _blogSettings;
private ISettingService _settingsService;
[OneTimeSetUp]
public void SetUp()
{
_blogModelFactory = GetService();
_blogService = GetService();
_customerService = GetService();
_dateTimeHelper = GetService();
_customerSettings = GetService();
_captchaSettings = GetService();
_blogSettings = GetService();
_settingsService = GetService();
}
[OneTimeTearDown]
public async Task TearDown()
{
_customerSettings.AllowCustomersToUploadAvatars = false;
_customerSettings.AllowViewingProfiles = false;
await _settingsService.SaveSettingAsync(_customerSettings);
_captchaSettings.Enabled = false;
_captchaSettings.ShowOnBlogCommentPage = false;
await _settingsService.SaveSettingAsync(_captchaSettings);
_blogSettings.NumberOfTags = 15;
await _settingsService.SaveSettingAsync(_blogSettings);
}
[Test]
public void PrepareBlogPostModelShouldRaiseExceptionIfBlogPostModelOrBlogPostIsNull()
{
Assert.Throws(() =>
_blogModelFactory.PrepareBlogPostModelAsync(null, new BlogPost(), false).Wait());
Assert.Throws(() =>
_blogModelFactory.PrepareBlogPostModelAsync(null, new BlogPost(), true).Wait());
Assert.Throws(() =>
_blogModelFactory.PrepareBlogPostModelAsync(new BlogPostModel(), null, false).Wait());
Assert.Throws(() =>
_blogModelFactory.PrepareBlogPostModelAsync(new BlogPostModel(), null, true).Wait());
}
[Test]
public async Task CanPrepareBlogPostModelWithComets()
{
var model = new BlogPostModel();
var blogPost = await _blogService.GetBlogPostByIdAsync(1);
await _blogModelFactory.PrepareBlogPostModelAsync(model, blogPost, true);
model.Id.Should().Be(blogPost.Id);
model.MetaTitle.Should().Be(blogPost.MetaTitle);
model.MetaDescription.Should().Be(blogPost.MetaDescription);
model.MetaKeywords.Should().Be(blogPost.MetaKeywords);
model.SeName = model.Title.Replace(" ", "-").ToLowerInvariant();
model.Title.Should().Be(blogPost.Title);
model.Body.Should().Be(blogPost.Body);
model.BodyOverview.Should().Be(blogPost.BodyOverview);
model.AllowComments.Should().Be(blogPost.AllowComments);
model.CreatedOn.ToUniversalTime().Should().Be(blogPost.CreatedOnUtc);
model.Tags.Should().BeEquivalentTo(await _blogService.ParseTagsAsync(blogPost));
model.NumberOfComments.Should().Be(await _blogService.GetBlogCommentsCountAsync(blogPost, 0, true));
model.Comments.Count.Should().Be(model.NumberOfComments);
}
[Test]
public async Task CanPrepareBlogPostModelWithOutComets()
{
var model = new BlogPostModel();
var blogPost = await _blogService.GetBlogPostByIdAsync(1);
await _blogModelFactory.PrepareBlogPostModelAsync(model, blogPost, false);
model.Id.Should().Be(blogPost.Id);
model.MetaTitle.Should().Be(blogPost.MetaTitle);
model.MetaDescription.Should().Be(blogPost.MetaDescription);
model.MetaKeywords.Should().Be(blogPost.MetaKeywords);
model.SeName = model.Title.Replace(" ", "-").ToLowerInvariant();
model.Title.Should().Be(blogPost.Title);
model.Body.Should().Be(blogPost.Body);
model.BodyOverview.Should().Be(blogPost.BodyOverview);
model.AllowComments.Should().Be(blogPost.AllowComments);
model.CreatedOn.ToUniversalTime().Should().Be(blogPost.CreatedOnUtc);
model.Tags.Should().BeEquivalentTo(await _blogService.ParseTagsAsync(blogPost));
model.NumberOfComments.Should().Be(await _blogService.GetBlogCommentsCountAsync(blogPost, 0, true));
model.Comments.Count.Should().Be(0);
}
[Test]
public async Task PrepareBlogPostModelDisplayCaptchaShouldBeDependOnSettings()
{
var model = new BlogPostModel();
var blogPost = await _blogService.GetBlogPostByIdAsync(1);
await _blogModelFactory.PrepareBlogPostModelAsync(model, blogPost, false);
model.AddNewComment.DisplayCaptcha.Should().BeFalse();
_captchaSettings.Enabled = _captchaSettings.ShowOnBlogCommentPage = true;
await _settingsService.SaveSettingAsync(_captchaSettings);
await GetService().PrepareBlogPostModelAsync(model, blogPost, false);
_captchaSettings.Enabled = _captchaSettings.ShowOnBlogCommentPage = false;
await _settingsService.SaveSettingAsync(_captchaSettings);
model.AddNewComment.DisplayCaptcha.Should().BeTrue();
}
[Test]
public async Task CanPrepareBlogPostListModel()
{
var model = await _blogModelFactory.PrepareBlogPostListModelAsync(new BlogPagingFilteringModel());
model.PagingFilteringContext.FirstItem.Should().Be(1);
model.PagingFilteringContext.HasNextPage.Should().BeFalse();
model.PagingFilteringContext.HasPreviousPage.Should().BeFalse();
model.PagingFilteringContext.LastItem.Should().Be(2);
model.PagingFilteringContext.PageNumber.Should().Be(1);
model.PagingFilteringContext.PageSize.Should().Be(10);
model.PagingFilteringContext.TotalItems.Should().Be(2);
model.PagingFilteringContext.TotalPages.Should().Be(1);
model.PagingFilteringContext.Tag.Should().BeNull();
model.PagingFilteringContext.Month.Should().BeNull();
model.BlogPosts.Should().NotBeNull();
model.BlogPosts.Count.Should().Be(2);
var date = DateTime.Now.ToUniversalTime();
model = await _blogModelFactory.PrepareBlogPostListModelAsync(new BlogPagingFilteringModel
{
Month = $"{date.Year}-{date.Month}"
});
model.PagingFilteringContext.Month.Should().NotBeNullOrEmpty();
model.PagingFilteringContext.Tag.Should().BeNull();
model.BlogPosts.Should().NotBeNull();
model.BlogPosts.Count.Should().Be(2);
model = await _blogModelFactory.PrepareBlogPostListModelAsync(new BlogPagingFilteringModel
{
Month = $"{date.Year}-{date.Month}",
Tag = "nopCommerce"
});
model.PagingFilteringContext.Month.Should().NotBeNullOrEmpty();
model.PagingFilteringContext.Tag.Should().NotBeNullOrEmpty();
model.BlogPosts.Should().NotBeNull();
model.BlogPosts.Count.Should().Be(1);
}
[Test]
public void PrepareBlogPostListModelShouldRaiseExceptionIfCommandIsNull()
{
Assert.Throws(() =>
_blogModelFactory.PrepareBlogPostListModelAsync(null).Wait());
}
[Test]
public async Task CanPrepareBlogPostTagListModel()
{
var model = await _blogModelFactory.PrepareBlogPostTagListModelAsync();
model.Tags.Count.Should().Be(6);
}
[Test]
public async Task PrepareBlogPostTagListModelCountShouldDependOnSettings()
{
var model = await _blogModelFactory.PrepareBlogPostTagListModelAsync();
model.Tags.Count.Should().Be(6);
_blogSettings.NumberOfTags = 1;
await _settingsService.SaveSettingAsync(_blogSettings);
model = await GetService().PrepareBlogPostTagListModelAsync();
_blogSettings.NumberOfTags = 15;
await _settingsService.SaveSettingAsync(_blogSettings);
model.Tags.Count.Should().Be(1);
}
[Test]
public async Task CanPrepareBlogPostYearModel()
{
var model = await _blogModelFactory.PrepareBlogPostYearModelAsync();
var date = DateTime.Now.ToUniversalTime();
model.Count.Should().Be(1);
model[0].Year.Should().Be(date.Year);
var months = model[0].Months;
months.Count.Should().Be(1);
var month = months.First();
month.BlogPostCount.Should().Be(2);
month.Month.Should().Be(date.Month);
}
[Test]
public void PrepareBlogPostCommentModelShouldRaiseExceptionIfBlogCommentIsNull()
{
Assert.Throws(() =>
_blogModelFactory.PrepareBlogPostCommentModelAsync(null).Wait());
}
[Test]
public async Task PrepareBlogPostCommentCustomerAvatarUrlShouldNotBeNullIfAllowCustomersToUploadAvatarsIsTrue()
{
var blogComment = await _blogService.GetBlogCommentByIdAsync(1);
_customerSettings.AllowCustomersToUploadAvatars = true;
await _settingsService.SaveSettingAsync(_customerSettings);
var blogModelFactory = GetService();
var model = await blogModelFactory.PrepareBlogPostCommentModelAsync(blogComment);
_customerSettings.AllowCustomersToUploadAvatars = false;
await _settingsService.SaveSettingAsync(_customerSettings);
model.CustomerAvatarUrl.Should().NotBeNullOrEmpty();
model.CustomerAvatarUrl.Should()
.Be($"http://{NopTestsDefaults.HostIpAddress}/images/thumbs/default-avatar_{GetService().AvatarPictureSize}.jpg");
}
[Test]
public async Task PrepareBlogPostCommentCustomerAllowViewingProfilesShouldBeDependOnSettings()
{
var blogComment = await _blogService.GetBlogCommentByIdAsync(1);
var model = await _blogModelFactory.PrepareBlogPostCommentModelAsync(blogComment);
model.AllowViewingProfiles.Should().BeFalse();
_customerSettings.AllowViewingProfiles = true;
await _settingsService.SaveSettingAsync(_customerSettings);
var blogModelFactory = GetService();
model = await blogModelFactory.PrepareBlogPostCommentModelAsync(blogComment);
_customerSettings.AllowViewingProfiles = false;
await _settingsService.SaveSettingAsync(_customerSettings);
model.AllowViewingProfiles.Should().BeTrue();
}
[Test]
public async Task CanPrepareBlogPostComment()
{
var blogComment = await _blogService.GetBlogCommentByIdAsync(1);
var model = await _blogModelFactory.PrepareBlogPostCommentModelAsync(blogComment);
var customer = await _customerService.GetCustomerByIdAsync(1);
model.Id.Should().Be(blogComment.Id);
model.CustomerId.Should().Be(blogComment.CustomerId);
model.CustomerName.Should().Be(await _customerService.FormatUsernameAsync(customer));
model.CommentText.Should().Be(blogComment.CommentText);
model.CreatedOn.Should().Be(await _dateTimeHelper.ConvertToUserTimeAsync(blogComment.CreatedOnUtc, DateTimeKind.Utc));
model.AllowViewingProfiles.Should().BeFalse();
model.CustomerAvatarUrl.Should().BeNull();
}
}