Browse Source

Add blog unit tests.

pull/967/head
maliming 7 years ago
parent
commit
74d2100dad
  1. 15
      modules/blogging/Volo.Blogging.sln
  2. 1
      modules/blogging/src/Volo.Blogging.MongoDB/Volo/Blogging/Tagging/MongoTagRepository.cs
  3. 12
      modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Comments/CommentRepository_Tests.cs
  4. 12
      modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Posts/PostRepository_Tests.cs
  5. 12
      modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Tagging/TagRepository_Tests.cs
  6. 19
      modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo.Blogging.MongoDB.Tests.csproj
  7. 12
      modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Blogs/BlogRepository_Tests.cs
  8. 12
      modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Comments/CommentRepository_Tests.cs
  9. 34
      modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs
  10. 12
      modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Posts/PostRepository_Tests.cs
  11. 12
      modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Tagging/TagRepository_Tests.cs
  12. 2
      modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/BloggingTestData.cs
  13. 7
      modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/BloggingTestDataBuilder.cs
  14. 54
      modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Comments/CommentRepository_Tests.cs
  15. 41
      modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Posts/PostRepository_Tests.cs
  16. 73
      modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Tagging/TagRepository_Tests.cs
  17. 13
      modules/blogging/test/Volo.Blogging.TestBase/Volo/Blogging/Users/BlogUserRepository_Tests.cs

15
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,11 @@ 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("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Volo.Blogging.MongoDB.Tests", "test\Volo.Blogging.MongoDB.Tests\Volo.Blogging.MongoDB.Tests.csproj", "{0A29F64C-11F1-40B6-8E6D-91E86823775E}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution
@ -105,6 +107,10 @@ 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
EndGlobalSection
GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE
@ -125,6 +131,7 @@ 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}
EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {F2BAE819-78D4-407A-9201-22473B2850B0}

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

12
modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Comments/CommentRepository_Tests.cs

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Text;
using Volo.Blogging.EntityFrameworkCore;
namespace Volo.Blogging.Comments
{
public class CommentRepository_Tests : CommentRepository_Tests<BloggingEntityFrameworkCoreTestModule>
{
}
}

12
modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Posts/PostRepository_Tests.cs

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Text;
using Volo.Blogging.EntityFrameworkCore;
namespace Volo.Blogging.Posts
{
public class PostRepository_Tests : PostRepository_Tests<BloggingEntityFrameworkCoreTestModule>
{
}
}

12
modules/blogging/test/Volo.Blogging.EntityFrameworkCore.Tests/Volo/Blogging/Tagging/TagRepository_Tests.cs

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Text;
using Volo.Blogging.EntityFrameworkCore;
namespace Volo.Blogging.Tagging
{
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="16.0.1" />
<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>

12
modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Blogs/BlogRepository_Tests.cs

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Text;
using Volo.Blogging.Blogs;
namespace Volo.Blogging.MongoDB
{
public class BlogRepository_Tests : BlogRepository_Tests<BloggingMongoDBTestModule>
{
}
}

12
modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Comments/CommentRepository_Tests.cs

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Text;
using Volo.Blogging.Comments;
namespace Volo.Blogging.MongoDB
{
public class CommentRepository_Tests : CommentRepository_Tests<BloggingMongoDBTestModule>
{
}
}

34
modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/MongoDB/BloggingMongoDBTestModule.cs

@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Text;
using Mongo2Go;
using Volo.Abp;
using Volo.Abp.Data;
using Volo.Abp.Modularity;
namespace Volo.Blogging.MongoDB
{
[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();
}
}
}

12
modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Posts/PostRepository_Tests.cs

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Text;
using Volo.Blogging.Posts;
namespace Volo.Blogging.MongoDB.Tests.Volo.Blogging.Posts
{
public class PostRepository_Tests : PostRepository_Tests<BloggingMongoDBTestModule>
{
}
}

12
modules/blogging/test/Volo.Blogging.MongoDB.Tests/Volo/Blogging/Tagging/TagRepository_Tests.cs

@ -0,0 +1,12 @@
using System;
using System.Collections.Generic;
using System.Text;
using Volo.Blogging.Tagging;
namespace Volo.Blogging.MongoDB
{
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, Guid.Empty, "title", "coverImage", "url"));
await _postRepository.InsertAsync(new Post(_testData.Blog1Post2Id, _testData.Blog1Id, Guid.Empty, "title", "coverImage", "url"));
await _postRepository.InsertAsync(new Post(_testData.Blog1Post2Id, _testData.Blog1Id, Guid.Empty, "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
});
var qq = 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