Browse Source

Merge pull request #967 from abpframework/maliming/blog

Add blog unit tests.
pull/997/head
Halil İbrahim Kalkan 8 years ago
committed by GitHub
parent
commit
9a2ad572d4
No known key found for this signature in database GPG Key ID: 4AEE18F83AFDEB23
  1. 22
      modules/blogging/Volo.Blogging.sln
  2. 7
      modules/blogging/src/Volo.Blogging.Domain/Volo/Blogging/Tagging/Tag.cs
  3. 1
      modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/Tagging/MongoTagRepository.cs
  4. 2
      modules/blogging/test/Volo.Blogging.Application.Tests/Volo.Blogging.Application.Tests.csproj
  5. 18
      modules/blogging/test/Volo.Blogging.Domain.Tests/Volo.Blogging.Domain.Tests.csproj
  6. 11
      modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/BloggingDomainTestBase.cs
  7. 12
      modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/BloggingDomainTestModule.cs
  8. 32
      modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Blogs/Blog_Tests.cs
  9. 22
      modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Comments/Comment_Tests.cs
  10. 65
      modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Posts/Post_Tests.cs
  11. 64
      modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Tagging/Tag_Tests.cs
  12. 71
      modules/blogging/test/Volo.Blogging.Domain.Tests/Volo/Abp/Blogging/Users/BlogUser_Test.cs
  13. 7
      modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Blogs/BlogRepository_Tests.cs
  14. 8
      modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Comments/CommentRepository_Tests.cs
  15. 6
      modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/EntityFrameworkCore/BloggingEntityFrameworkCoreTestModule.cs
  16. 8
      modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Posts/PostRepository_Tests.cs
  17. 8
      modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Tagging/TagRepository_Tests.cs
  18. 19
      modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo.Blogging.MongoDB.Tests.csproj
  19. 8
      modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Blogs/BlogRepository_Tests.cs
  20. 8
      modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Comments/CommentRepository_Tests.cs
  21. 32
      modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs
  22. 8
      modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Posts/PostRepository_Tests.cs
  23. 8
      modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Tagging/TagRepository_Tests.cs
  24. 2
      modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/BloggingTestData.cs
  25. 7
      modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/BloggingTestDataBuilder.cs
  26. 54
      modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Comments/CommentRepository_Tests.cs
  27. 41
      modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Posts/PostRepository_Tests.cs
  28. 73
      modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Tagging/TagRepository_Tests.cs
  29. 13
      modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Users/BlogUserRepository_Tests.cs

22
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}

7
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;
}

1
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);
}
}
}

2
modules/blogging/test/Volo.Blogging.Application.Tests/Volo.Blogging.Application.Tests.csproj

@ -13,7 +13,7 @@
<ItemGroup>
<ProjectReference Include="..\..\src\Volo.Blogging.Application\Volo.Blogging.Application.csproj" />
<ProjectReference Include="..\Volo.Blogging.EntityFrameworkCore.Tests\Volo.Blogging.EntityFrameworkCore.Tests.csproj" />
<ProjectReference Include="..\Volo.Blogging.Domain.Tests\Volo.Blogging.Domain.Tests.csproj" />
</ItemGroup>
</Project>

18
modules/blogging/test/Volo.Blogging.Domain.Tests/Volo.Blogging.Domain.Tests.csproj

@ -0,0 +1,18 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Volo.Blogging.EntityFrameworkCore.Tests\Volo.Blogging.EntityFrameworkCore.Tests.csproj" />
<ProjectReference Include="..\Volo.Blogging.TestBase\Volo.Blogging.TestBase.csproj" />
</ItemGroup>
</Project>

11
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<BloggingTestBaseModule>
{
}
}

12
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
{
}
}

32
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);
}
}
}

22
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);
}
}
}

65
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);
}
}
}

64
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);
}
}
}

71
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<ArgumentException>(() => 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<ArgumentException>(() => 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();
}
}
}

7
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<BloggingEntityFrameworkCoreTestModule>
{
}
}
}

8
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<BloggingEntityFrameworkCoreTestModule>
{
}
}

6
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();
}
}
}
}

8
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<BloggingEntityFrameworkCoreTestModule>
{
}
}

8
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<BloggingEntityFrameworkCoreTestModule>
{
}
}

19
modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo.Blogging.MongoDB.Tests.csproj

@ -0,0 +1,19 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>netcoreapp2.2</TargetFramework>
<IsPackable>false</IsPackable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="15.9.0" />
<PackageReference Include="Mongo2Go" Version="2.2.8" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\src\Volo.Blogging.MongoDB\Volo.Blogging.MongoDB.csproj" />
<ProjectReference Include="..\Volo.Blogging.TestBase\Volo.Blogging.TestBase.csproj" />
</ItemGroup>
</Project>

8
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<BloggingMongoDBTestModule>
{
}
}

8
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<BloggingMongoDBTestModule>
{
}
}

32
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<DbConnectionOptions>(options =>
{
options.ConnectionStrings.Default = _mongoDbRunner.ConnectionString;
});
}
public override void OnApplicationShutdown(ApplicationShutdownContext context)
{
_mongoDbRunner.Dispose();
}
}
}

8
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<BloggingMongoDBTestModule>
{
}
}

8
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<BloggingMongoDBTestModule>
{
}
}

2
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";
}
}

7
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));
}
}
}

54
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<TStartupModule> : BloggingTestBase<TStartupModule>
where TStartupModule : IAbpModule
{
protected ICommentRepository CommentRepository { get; }
protected BloggingTestData BloggingTestData { get; }
protected CommentRepository_Tests()
{
CommentRepository = GetRequiredService<ICommentRepository>();
BloggingTestData = GetRequiredService<BloggingTestData>();
}
[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();
}
}
}

41
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<TStartupModule> : BloggingTestBase<TStartupModule>
where TStartupModule : IAbpModule
{
protected IPostRepository PostRepository { get; }
protected BloggingTestData BloggingTestData { get; }
protected PostRepository_Tests()
{
PostRepository = GetRequiredService<IPostRepository>();
BloggingTestData = GetRequiredService<BloggingTestData>();
}
[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");
}
}
}

73
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<TStartupModule> : BloggingTestBase<TStartupModule>
where TStartupModule : IAbpModule
{
protected ITagRepository TagRepository { get; }
protected BloggingTestData BloggingTestData { get; }
protected TagRepository_Tests()
{
TagRepository = GetRequiredService<ITagRepository>();
BloggingTestData = GetRequiredService<BloggingTestData>();
}
[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<Guid>()
{
tag.Id
});
await TagRepository.FindByNameAsync(BloggingTestData.Blog1Id, BloggingTestData.Tag1Name);
(await TagRepository.FindByNameAsync(BloggingTestData.Blog1Id, BloggingTestData.Tag1Name)).UsageCount
.ShouldBe(usageCount - 1);
}
}
}

13
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<TStartupModule> : BloggingTestBase<TStartupModule>
where TStartupModule : IAbpModule
{
}
}
Loading…
Cancel
Save