diff --git a/modules/blogging/Volo.Blogging.sln b/modules/blogging/Volo.Blogging.sln index 05982d4524..1c4ac401bb 100644 --- a/modules/blogging/Volo.Blogging.sln +++ b/modules/blogging/Volo.Blogging.sln @@ -1,7 +1,7 @@  Microsoft Visual Studio Solution File, Format Version 12.00 -# Visual Studio 15 -VisualStudioVersion = 15.0.27703.2026 +# Visual Studio Version 16 +VisualStudioVersion = 16.0.28729.10 MinimumVisualStudioVersion = 10.0.40219.1 Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Blogging.Domain.Shared", "src\Volo.Blogging.Domain.Shared\Volo.Blogging.Domain.Shared.csproj", "{F1D954AD-001A-4533-A8CC-94DDCF70B552}" EndProject @@ -35,9 +35,13 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Blogging.EntityFramewo EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Blogging.Application.Tests", "test\Volo.Blogging.Application.Tests\Volo.Blogging.Application.Tests.csproj", "{C949B953-80B3-4B36-B535-1AD74A34FEAC}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Blogging.MongoDB", "src\Volo.Blogging.MongoDB\Volo.Blogging.MongoDB.csproj", "{98C2D36A-F874-405D-8565-9CE59438E879}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Blogging.MongoDB", "src\Volo.Blogging.MongoDB\Volo.Blogging.MongoDB.csproj", "{98C2D36A-F874-405D-8565-9CE59438E879}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.BloggingTestApp.MongoDb", "app\Volo.BloggingTestApp.MongoDb\Volo.BloggingTestApp.MongoDb.csproj", "{4C818374-2DE8-422F-8585-975E8366DB26}" +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.BloggingTestApp.MongoDb", "app\Volo.BloggingTestApp.MongoDb\Volo.BloggingTestApp.MongoDb.csproj", "{4C818374-2DE8-422F-8585-975E8366DB26}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Volo.Blogging.MongoDB.Tests", "test\Volo.Blogging.MongoDB.Tests\Volo.Blogging.MongoDB.Tests.csproj", "{0A29F64C-11F1-40B6-8E6D-91E86823775E}" +EndProject +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Blogging.Domain.Tests", "test\Volo.Blogging.Domain.Tests\Volo.Blogging.Domain.Tests.csproj", "{B6D7EF20-9921-490A-AA95-47E3E174DC9B}" EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution @@ -105,6 +109,14 @@ Global {4C818374-2DE8-422F-8585-975E8366DB26}.Debug|Any CPU.Build.0 = Debug|Any CPU {4C818374-2DE8-422F-8585-975E8366DB26}.Release|Any CPU.ActiveCfg = Release|Any CPU {4C818374-2DE8-422F-8585-975E8366DB26}.Release|Any CPU.Build.0 = Release|Any CPU + {0A29F64C-11F1-40B6-8E6D-91E86823775E}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {0A29F64C-11F1-40B6-8E6D-91E86823775E}.Debug|Any CPU.Build.0 = Debug|Any CPU + {0A29F64C-11F1-40B6-8E6D-91E86823775E}.Release|Any CPU.ActiveCfg = Release|Any CPU + {0A29F64C-11F1-40B6-8E6D-91E86823775E}.Release|Any CPU.Build.0 = Release|Any CPU + {B6D7EF20-9921-490A-AA95-47E3E174DC9B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {B6D7EF20-9921-490A-AA95-47E3E174DC9B}.Debug|Any CPU.Build.0 = Debug|Any CPU + {B6D7EF20-9921-490A-AA95-47E3E174DC9B}.Release|Any CPU.ActiveCfg = Release|Any CPU + {B6D7EF20-9921-490A-AA95-47E3E174DC9B}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -125,6 +137,8 @@ Global {C949B953-80B3-4B36-B535-1AD74A34FEAC} = {25B3A516-5C0D-42E3-9294-E8A9346CEE4B} {98C2D36A-F874-405D-8565-9CE59438E879} = {42BF26EF-B8C7-42DC-9FFB-3653109B7776} {4C818374-2DE8-422F-8585-975E8366DB26} = {EB4FB44A-FE39-4245-9DAD-D6437BCE3870} + {0A29F64C-11F1-40B6-8E6D-91E86823775E} = {25B3A516-5C0D-42E3-9294-E8A9346CEE4B} + {B6D7EF20-9921-490A-AA95-47E3E174DC9B} = {25B3A516-5C0D-42E3-9294-E8A9346CEE4B} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {F2BAE819-78D4-407A-9201-22473B2850B0} diff --git a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Tagging/Tag.cs b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Tagging/Tag.cs index f89d5f981f..28d14d885d 100644 --- a/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Tagging/Tag.cs +++ b/modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Tagging/Tag.cs @@ -44,6 +44,13 @@ namespace Volo.Blogging.Tagging { return; } + + if (UsageCount - number <= 0) + { + UsageCount = 0; + return; + } + UsageCount -= number; } diff --git a/modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/Tagging/MongoTagRepository.cs b/modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/Tagging/MongoTagRepository.cs index 1dedad184b..e2fcdca96c 100644 --- a/modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/Tagging/MongoTagRepository.cs +++ b/modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/Tagging/MongoTagRepository.cs @@ -44,6 +44,7 @@ namespace Volo.Blogging.Tagging foreach (var tag in tags) { tag.DecreaseUsageCount(); + Update(tag); } } } diff --git a/modules/blogging/test/Volo.Blogging.Application.Tests/Volo.Blogging.Application.Tests.csproj b/modules/blogging/test/Volo.Blogging.Application.Tests/Volo.Blogging.Application.Tests.csproj index aa2837f443..a36f95ac50 100644 --- a/modules/blogging/test/Volo.Blogging.Application.Tests/Volo.Blogging.Application.Tests.csproj +++ b/modules/blogging/test/Volo.Blogging.Application.Tests/Volo.Blogging.Application.Tests.csproj @@ -13,7 +13,7 @@ - + diff --git a/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo.Blogging.Domain.Tests.csproj b/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo.Blogging.Domain.Tests.csproj new file mode 100644 index 0000000000..b2911bddee --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo.Blogging.Domain.Tests.csproj @@ -0,0 +1,18 @@ + + + + netcoreapp2.2 + + false + + + + + + + + + + + + diff --git a/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/BloggingDomainTestBase.cs b/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/BloggingDomainTestBase.cs new file mode 100644 index 0000000000..7d758ee699 --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/BloggingDomainTestBase.cs @@ -0,0 +1,11 @@ +using System; +using System.Collections.Generic; +using System.Text; + +namespace Volo.Blogging +{ + public abstract class BloggingDomainTestBase : BloggingTestBase + { + + } +} diff --git a/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/BloggingDomainTestModule.cs b/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/BloggingDomainTestModule.cs new file mode 100644 index 0000000000..01ab4b07c7 --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/BloggingDomainTestModule.cs @@ -0,0 +1,12 @@ +using Volo.Abp.Modularity; + +namespace Volo.Blogging +{ + [DependsOn( + typeof(BloggingEntityFrameworkCoreTestModule), + typeof(BloggingTestBaseModule) + )] + public class BloggingDomainTestModule : AbpModule + { + } +} \ No newline at end of file diff --git a/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Blogs/Blog_Tests.cs b/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Blogs/Blog_Tests.cs new file mode 100644 index 0000000000..6c44885dde --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Blogs/Blog_Tests.cs @@ -0,0 +1,32 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Shouldly; +using Volo.Blogging.Blogs; +using Xunit; + +namespace Volo.Blogging +{ + public class Blog_Tests + { + [Theory] + [InlineData("aaa")] + [InlineData("bbb")] + public void SetName(string name) + { + var blog = new Blog(Guid.NewGuid(), "test blog", "test"); + blog.SetName(name); + blog.Name.ShouldBe(name); + } + + [Theory] + [InlineData("aaa")] + [InlineData("bbb")] + public void SetShortName(string name) + { + var blog = new Blog(Guid.NewGuid(), "test blog", "test"); + blog.SetShortName(name); + blog.ShortName.ShouldBe(name); + } + } +} diff --git a/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Comments/Comment_Tests.cs b/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Comments/Comment_Tests.cs new file mode 100644 index 0000000000..34195d5f81 --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Comments/Comment_Tests.cs @@ -0,0 +1,22 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Shouldly; +using Volo.Blogging.Comments; +using Xunit; + +namespace Volo.Blogging +{ + public class Comment_Tests + { + [Theory] + [InlineData("aaa")] + [InlineData("bbb")] + public void SetText(string text) + { + var comment = new Comment(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), "good"); + comment.SetText(text); + comment.Text.ShouldBe(text); + } + } +} diff --git a/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Posts/Post_Tests.cs b/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Posts/Post_Tests.cs new file mode 100644 index 0000000000..91aede46a7 --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Posts/Post_Tests.cs @@ -0,0 +1,65 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Shouldly; +using Volo.Blogging.Comments; +using Volo.Blogging.Posts; +using Xunit; + +namespace Volo.Blogging +{ + public class Post_Tests + { + [Fact] + public void IncreaseReadCount() + { + var post = new Post(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), "abp", "⊙o⊙", "abp.io"); + post.IncreaseReadCount(); + post.ReadCount.ShouldBe(1); + } + + [Theory] + [InlineData("aaa")] + [InlineData("bbb")] + public void SetTitle(string title) + { + var post = new Post(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), "abp", "⊙o⊙", "abp.io"); + post.SetTitle(title); + post.Title.ShouldBe(title); + } + + [Theory] + [InlineData("aaa")] + [InlineData("bbb")] + public void SetUrl(string url) + { + var post = new Post(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), "abp", "⊙o⊙", "abp.io"); + post.SetUrl(url); + post.Url.ShouldBe(url); + } + + [Fact] + public void AddTag() + { + var post = new Post(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), "abp", "⊙o⊙", "abp.io"); + var tagId = Guid.NewGuid(); + post.AddTag(tagId); + post.Tags.ShouldContain(x => x.TagId == tagId); + } + + + [Fact] + public void RemoveTag() + { + var post = new Post(Guid.NewGuid(), Guid.NewGuid(), Guid.NewGuid(), "abp", "⊙o⊙", "abp.io"); + var tagId = Guid.NewGuid(); + post.AddTag(tagId); + + post.Tags.ShouldContain(x => x.TagId == tagId); + + post.RemoveTag(tagId); + post.Tags.ShouldNotContain(x => x.TagId == tagId); + } + + } +} diff --git a/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Tagging/Tag_Tests.cs b/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Tagging/Tag_Tests.cs new file mode 100644 index 0000000000..a4368a6341 --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Tagging/Tag_Tests.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Shouldly; +using Volo.Blogging.Tagging; +using Xunit; + +namespace Volo.Blogging +{ + public class Tag_Tests + { + [Theory] + [InlineData("aaa")] + [InlineData("bbb")] + public void SetName(string name) + { + var tag = new Tag(Guid.NewGuid(), "abp", 0, "abp tag"); + tag.SetName(name); + tag.Name.ShouldBe(name); + } + + [Theory] + [InlineData(1)] + [InlineData(2)] + [InlineData(3)] + public void IncreaseUsageCount(int number) + { + var tag = new Tag(Guid.NewGuid(), "abp", 0, "abp tag"); + tag.IncreaseUsageCount(number); + tag.UsageCount.ShouldBe(number); + } + + [Theory] + [InlineData(1)] + [InlineData(2)] + [InlineData(3)] + public void DecreaseUsageCount(int number) + { + var tag = new Tag(Guid.NewGuid(), "abp", 10, "abp tag"); + tag.DecreaseUsageCount(number); + tag.UsageCount.ShouldBe(10 - number); + } + + [Fact] + public void DecreaseUsageCount_Should_Greater_ThanOrEqual_Zero() + { + var tag = new Tag(Guid.NewGuid(), "abp", 10, "abp tag"); + tag.DecreaseUsageCount(100); + tag.UsageCount.ShouldBe(0); + } + + [Theory] + [InlineData("aaa")] + [InlineData("bbb")] + public void SetDescription(string description) + { + var tag = new Tag(Guid.NewGuid(), "abp", 0, "abp tag"); + tag.SetDescription(description); + tag.Description.ShouldBe(description); + } + + + } +} diff --git a/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Users/BlogUser_Test.cs b/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Users/BlogUser_Test.cs new file mode 100644 index 0000000000..e407d6f3f0 --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Users/BlogUser_Test.cs @@ -0,0 +1,71 @@ +using System; +using System.Collections.Generic; +using System.Linq.Expressions; +using System.Text; +using Shouldly; +using Volo.Abp.Users; +using Volo.Blogging.Users; +using Xunit; + +namespace Volo.Blogging +{ + public class BlogUser_Test + { + [Fact] + public void Update() + { + var userId = Guid.NewGuid(); + var tenantId = Guid.NewGuid(); + var blogUser = new BlogUser(new UserData(userId, "bob lee", "boblee@volosoft.com", "lee", "bob", true, + "123456", true, tenantId)); + var userData = new UserData(userId, "lee bob", "leebob@volosoft.com", "bob", "lee", false, + "654321", false, tenantId); + + blogUser.Update(userData); + + blogUser.Equals(new BlogUser(userData)).ShouldBeTrue(); + } + + [Fact] + public void Update_User_Id_Must_Equals() + { + var userId = Guid.NewGuid(); + var tenantId = Guid.NewGuid(); + var blogUser = new BlogUser(new UserData(userId, "bob lee", "boblee@volosoft.com", "lee", "bob", true, + "123456", true, tenantId)); + + var userData = new UserData(Guid.NewGuid(), "lee bob", "leebob@volosoft.com", "bob", "lee", false, + "654321", false, tenantId); + + Assert.Throws(() => blogUser.Update(userData)); + } + + [Fact] + public void Update_Tenant_Id_Must_Equals() + { + var userId = Guid.NewGuid(); + var tenantId = Guid.NewGuid(); + var blogUser = new BlogUser(new UserData(userId, "bob lee", "boblee@volosoft.com", "lee", "bob", true, + "123456", true, tenantId)); + + var userData = new UserData(userId, "lee bob", "leebob@volosoft.com", "bob", "lee", false, + "654321", false, Guid.NewGuid()); + + Assert.Throws(() => blogUser.Update(userData)); + } + + [Fact] + public void BlogUserEquals() + { + var userId = Guid.NewGuid(); + var tenantId = Guid.NewGuid(); + var blogUser = new BlogUser(new UserData(userId, "bob lee", "john@volosoft.com", "lee", "bob", true, + "123456", true, tenantId)); + + var blogUser2= new BlogUser(new UserData(userId, "bob lee", "john@volosoft.com", "lee", "bob", true, + "123456", true, tenantId)); + + blogUser.Equals(blogUser2).ShouldBeTrue(); + } + } +} diff --git a/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Blogs/BlogRepository_Tests.cs b/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Blogs/BlogRepository_Tests.cs index b86945418c..4735926cc2 100644 --- a/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Blogs/BlogRepository_Tests.cs +++ b/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Blogs/BlogRepository_Tests.cs @@ -1,9 +1,8 @@ -using Volo.Blogging.EntityFrameworkCore; +using Volo.Blogging.Blogs; -namespace Volo.Blogging.Blogs +namespace Volo.Blogging { public class BlogRepository_Tests : BlogRepository_Tests { - } -} +} \ No newline at end of file diff --git a/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Comments/CommentRepository_Tests.cs b/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Comments/CommentRepository_Tests.cs new file mode 100644 index 0000000000..5013e633fb --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Comments/CommentRepository_Tests.cs @@ -0,0 +1,8 @@ +using Volo.Blogging.Comments; + +namespace Volo.Blogging +{ + public class CommentRepository_Tests : CommentRepository_Tests + { + } +} \ No newline at end of file diff --git a/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/EntityFrameworkCore/BloggingEntityFrameworkCoreTestModule.cs b/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/EntityFrameworkCore/BloggingEntityFrameworkCoreTestModule.cs index 67c5f7ce8b..59f0be4a24 100644 --- a/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/EntityFrameworkCore/BloggingEntityFrameworkCoreTestModule.cs +++ b/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/EntityFrameworkCore/BloggingEntityFrameworkCoreTestModule.cs @@ -2,12 +2,12 @@ using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Storage; -using Microsoft.Extensions.DependencyInjection; using Volo.Abp; using Volo.Abp.EntityFrameworkCore; using Volo.Abp.Modularity; +using Volo.Blogging.EntityFrameworkCore; -namespace Volo.Blogging.EntityFrameworkCore +namespace Volo.Blogging { [DependsOn( typeof(BloggingEntityFrameworkCoreModule), @@ -49,4 +49,4 @@ namespace Volo.Blogging.EntityFrameworkCore _sqliteConnection.Dispose(); } } -} +} \ No newline at end of file diff --git a/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Posts/PostRepository_Tests.cs b/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Posts/PostRepository_Tests.cs new file mode 100644 index 0000000000..e23247de86 --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Posts/PostRepository_Tests.cs @@ -0,0 +1,8 @@ +using Volo.Blogging.Posts; + +namespace Volo.Blogging +{ + public class PostRepository_Tests : PostRepository_Tests + { + } +} \ No newline at end of file diff --git a/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Tagging/TagRepository_Tests.cs b/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Tagging/TagRepository_Tests.cs new file mode 100644 index 0000000000..5de23c7665 --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Tagging/TagRepository_Tests.cs @@ -0,0 +1,8 @@ +using Volo.Blogging.Tagging; + +namespace Volo.Blogging +{ + public class TagRepository_Tests : TagRepository_Tests + { + } +} \ No newline at end of file diff --git a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo.Blogging.MongoDB.Tests.csproj b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo.Blogging.MongoDB.Tests.csproj new file mode 100644 index 0000000000..093113db66 --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo.Blogging.MongoDB.Tests.csproj @@ -0,0 +1,19 @@ + + + + netcoreapp2.2 + + false + + + + + + + + + + + + + diff --git a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Blogs/BlogRepository_Tests.cs b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Blogs/BlogRepository_Tests.cs new file mode 100644 index 0000000000..333746f0f0 --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Blogs/BlogRepository_Tests.cs @@ -0,0 +1,8 @@ +using Volo.Blogging.Blogs; + +namespace Volo.Blogging +{ + public class BlogRepository_Tests : BlogRepository_Tests + { + } +} \ No newline at end of file diff --git a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Comments/CommentRepository_Tests.cs b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Comments/CommentRepository_Tests.cs new file mode 100644 index 0000000000..353d22d3ee --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Comments/CommentRepository_Tests.cs @@ -0,0 +1,8 @@ +using Volo.Blogging.Comments; + +namespace Volo.Blogging +{ + public class CommentRepository_Tests : CommentRepository_Tests + { + } +} \ No newline at end of file diff --git a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs new file mode 100644 index 0000000000..dc2c1cd47d --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs @@ -0,0 +1,32 @@ +using Mongo2Go; +using Volo.Abp; +using Volo.Abp.Data; +using Volo.Abp.Modularity; +using Volo.Blogging.MongoDB; + +namespace Volo.Blogging +{ + [DependsOn( + typeof(BloggingTestBaseModule), + typeof(BloggingMongoDbModule) + )] + public class BloggingMongoDBTestModule : AbpModule + { + private MongoDbRunner _mongoDbRunner; + + public override void ConfigureServices(ServiceConfigurationContext context) + { + _mongoDbRunner = MongoDbRunner.Start(); + + Configure(options => + { + options.ConnectionStrings.Default = _mongoDbRunner.ConnectionString; + }); + } + + public override void OnApplicationShutdown(ApplicationShutdownContext context) + { + _mongoDbRunner.Dispose(); + } + } +} \ No newline at end of file diff --git a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Posts/PostRepository_Tests.cs b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Posts/PostRepository_Tests.cs new file mode 100644 index 0000000000..6fbaed0768 --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Posts/PostRepository_Tests.cs @@ -0,0 +1,8 @@ +using Volo.Blogging.Posts; + +namespace Volo.Blogging +{ + public class PostRepository_Tests : PostRepository_Tests + { + } +} \ No newline at end of file diff --git a/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Tagging/TagRepository_Tests.cs b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Tagging/TagRepository_Tests.cs new file mode 100644 index 0000000000..c727ef00b3 --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Tagging/TagRepository_Tests.cs @@ -0,0 +1,8 @@ +using Volo.Blogging.Tagging; + +namespace Volo.Blogging +{ + public class TagRepository_Tests : TagRepository_Tests + { + } +} \ No newline at end of file diff --git a/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/BloggingTestData.cs b/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/BloggingTestData.cs index 72910fb6ca..9666201719 100644 --- a/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/BloggingTestData.cs +++ b/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/BloggingTestData.cs @@ -9,6 +9,8 @@ namespace Volo.Blogging public Guid Blog1Post1Id { get; } = Guid.NewGuid(); public Guid Blog1Post2Id { get; } = Guid.NewGuid(); public Guid Blog1Post1Comment1Id { get; } = Guid.NewGuid(); + public Guid Blog1Post1Comment2Id { get; } = Guid.NewGuid(); public string Tag1Name { get; } = "Tag1Name"; + public string Tag2Name { get; } = "Tag2Name"; } } \ No newline at end of file diff --git a/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/BloggingTestDataBuilder.cs b/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/BloggingTestDataBuilder.cs index 9e216ca4c4..67d8049a06 100644 --- a/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/BloggingTestDataBuilder.cs +++ b/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/BloggingTestDataBuilder.cs @@ -40,9 +40,12 @@ namespace Volo.Blogging { await _blogRepository.InsertAsync(new Blog(_testData.Blog1Id, "The First Blog", "blog-1")); await _postRepository.InsertAsync(new Post(_testData.Blog1Post1Id, _testData.Blog1Id, "title", "coverImage", "url")); - await _postRepository.InsertAsync(new Post(_testData.Blog1Post2Id, _testData.Blog1Id, "title", "coverImage", "url")); + await _postRepository.InsertAsync(new Post(_testData.Blog1Post2Id, _testData.Blog1Id, "title2", "coverImage2", "url2")); await _commentRepository.InsertAsync(new Comment(_testData.Blog1Post1Comment1Id,_testData.Blog1Post1Id,null,"text")); - await _tagRepository.InsertAsync(new Tag(_testData.Blog1Id, _testData.Tag1Name)); + await _commentRepository.InsertAsync(new Comment(_testData.Blog1Post1Comment2Id, _testData.Blog1Post1Id, _testData.Blog1Post1Comment1Id, "text")); + await _tagRepository.InsertAsync(new Tag(_testData.Blog1Id, _testData.Tag1Name, 10)); + await _tagRepository.InsertAsync(new Tag(_testData.Blog1Id, _testData.Tag2Name)); + } } } diff --git a/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Comments/CommentRepository_Tests.cs b/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Comments/CommentRepository_Tests.cs new file mode 100644 index 0000000000..04db9d9f0b --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Comments/CommentRepository_Tests.cs @@ -0,0 +1,54 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using Shouldly; +using Volo.Abp.Modularity; +using Xunit; + +namespace Volo.Blogging.Comments +{ + public abstract class CommentRepository_Tests : BloggingTestBase + where TStartupModule : IAbpModule + { + protected ICommentRepository CommentRepository { get; } + protected BloggingTestData BloggingTestData { get; } + + protected CommentRepository_Tests() + { + CommentRepository = GetRequiredService(); + BloggingTestData = GetRequiredService(); + } + + [Fact] + public async Task GetListOfPostAsync() + { + var comments = await CommentRepository.GetListOfPostAsync(BloggingTestData.Blog1Post1Id); + comments.ShouldNotBeNull(); + comments.Count.ShouldBe(2); + comments.ShouldAllBe(x => x.PostId == BloggingTestData.Blog1Post1Id); + } + + [Fact] + public async Task GetCommentCountOfPostAsync() + { + var count = await CommentRepository.GetCommentCountOfPostAsync(BloggingTestData.Blog1Post1Id); + count.ShouldBe(2); + } + + [Fact] + public async Task GetRepliesOfComment() + { + var comment = await CommentRepository.GetRepliesOfComment(BloggingTestData.Blog1Post1Comment1Id); + comment.ShouldNotBeNull(); + comment.ShouldContain(x => x.Id == BloggingTestData.Blog1Post1Comment2Id); + } + + [Fact] + public async Task DeleteOfPost() + { + await CommentRepository.DeleteOfPost(BloggingTestData.Blog1Post1Id); + (await CommentRepository.GetListAsync()).ShouldBeEmpty(); + } + } +} diff --git a/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Posts/PostRepository_Tests.cs b/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Posts/PostRepository_Tests.cs new file mode 100644 index 0000000000..ee21e200d9 --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Posts/PostRepository_Tests.cs @@ -0,0 +1,41 @@ +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; +using Shouldly; +using Volo.Abp.Modularity; +using Xunit; + +namespace Volo.Blogging.Posts +{ + public abstract class PostRepository_Tests : BloggingTestBase + where TStartupModule : IAbpModule + { + protected IPostRepository PostRepository { get; } + protected BloggingTestData BloggingTestData { get; } + + protected PostRepository_Tests() + { + PostRepository = GetRequiredService(); + BloggingTestData = GetRequiredService(); + } + + [Fact] + public async Task GetListOfPostAsync() + { + var posts = await PostRepository.GetPostsByBlogId(BloggingTestData.Blog1Id); + posts.ShouldNotBeNull(); + posts.Count.ShouldBe(2); + posts.ShouldContain(x => x.Id == BloggingTestData.Blog1Post1Id); + posts.ShouldContain(x => x.Id == BloggingTestData.Blog1Post2Id); + } + + [Fact] + public async Task GetPostByUrl() + { + var post = await PostRepository.GetPostByUrl(BloggingTestData.Blog1Id, "url"); + post.ShouldNotBeNull(); + post.Url.ShouldBe("url"); + } + } +} diff --git a/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Tagging/TagRepository_Tests.cs b/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Tagging/TagRepository_Tests.cs new file mode 100644 index 0000000000..a81c7dde1e --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Tagging/TagRepository_Tests.cs @@ -0,0 +1,73 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; +using Shouldly; +using Volo.Abp.Modularity; +using Xunit; + +namespace Volo.Blogging.Tagging +{ + public abstract class TagRepository_Tests : BloggingTestBase + where TStartupModule : IAbpModule + { + protected ITagRepository TagRepository { get; } + protected BloggingTestData BloggingTestData { get; } + + protected TagRepository_Tests() + { + TagRepository = GetRequiredService(); + BloggingTestData = GetRequiredService(); + } + + [Fact] + public async Task GetListAsync() + { + var tags = await TagRepository.GetListAsync(BloggingTestData.Blog1Id); + tags.ShouldNotBeNull(); + tags.Count.ShouldBe(2); + } + + [Fact] + public async Task GetByNameAsync() + { + var tag = await TagRepository.GetByNameAsync(BloggingTestData.Blog1Id, BloggingTestData.Tag1Name); + tag.ShouldNotBeNull(); + tag.Name.ShouldBe(BloggingTestData.Tag1Name); + } + + [Fact] + public async Task FindByNameAsync() + { + var tag = await TagRepository.FindByNameAsync(BloggingTestData.Blog1Id, BloggingTestData.Tag1Name); + tag.ShouldNotBeNull(); + tag.Name.ShouldBe(BloggingTestData.Tag1Name); + } + + [Fact] + public async Task GetListAsync2() + { + var tagIds = (await TagRepository.GetListAsync()).Select(x => x.Id).ToList(); + var tags = await TagRepository.GetListAsync(tagIds); + tags.ShouldNotBeNull(); + tags.Count.ShouldBe(tagIds.Count); + } + + [Fact] + public async Task DecreaseUsageCountOfTags() + { + var tag = await TagRepository.FindByNameAsync(BloggingTestData.Blog1Id, BloggingTestData.Tag1Name); + var usageCount = tag.UsageCount; + + TagRepository.DecreaseUsageCountOfTags(new List() + { + tag.Id + }); + + await TagRepository.FindByNameAsync(BloggingTestData.Blog1Id, BloggingTestData.Tag1Name); + (await TagRepository.FindByNameAsync(BloggingTestData.Blog1Id, BloggingTestData.Tag1Name)).UsageCount + .ShouldBe(usageCount - 1); + } + } +} diff --git a/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Users/BlogUserRepository_Tests.cs b/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Users/BlogUserRepository_Tests.cs new file mode 100644 index 0000000000..3f0e3b7bf7 --- /dev/null +++ b/modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Users/BlogUserRepository_Tests.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Text; +using Volo.Abp.Modularity; + +namespace Volo.Blogging.Users +{ + public abstract class BlogUserRepository_Tests : BloggingTestBase + where TStartupModule : IAbpModule + { + + } +}