Browse Source

Add unit tests of Volo.Docs module.

pull/976/head
maliming 7 years ago
parent
commit
f33e20e2fa
  1. 2
      modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Projects/EfCoreProjectRepository.cs
  2. 1
      modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo.Docs.Admin.Application.Tests.csproj
  3. 50
      modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/ApplicationService_Tests.cs
  4. 14
      modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/DocsAdminApplicationTestModule.cs
  5. 16
      modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/DocsApplicationTestBase.cs
  6. 26
      modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/DocsApplicationTestModule.cs
  7. 124
      modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/ProjectAdminAppService_Tests.cs
  8. 3
      modules/docs/test/Volo.Docs.Domain.Tests/Volo/Docs/DocsDomainTestModule.cs
  9. 28
      modules/docs/test/Volo.Docs.Domain.Tests/Volo/Docs/DocumentStoreFactory_Tests.cs
  10. 56
      modules/docs/test/Volo.Docs.Domain.Tests/Volo/Docs/Project_Tests.cs
  11. 4
      modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo/Docs/EntityFrameworkCore/DocsEntityFrameworkCoreTestModule.cs
  12. 11
      modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo/Docs/EntityFrameworkCore/ProjectRepository_Tests.cs
  13. 4
      modules/docs/test/Volo.Docs.TestBase/Volo/Docs/DocsTestData.cs
  14. 14
      modules/docs/test/Volo.Docs.TestBase/Volo/Docs/DocsTestDataBuilder.cs
  15. 50
      modules/docs/test/Volo.Docs.TestBase/Volo/Docs/ProjectRepository_Tests.cs

2
modules/docs/src/Volo.Docs.EntityFrameworkCore/Volo/Docs/Projects/EfCoreProjectRepository.cs

@ -21,7 +21,7 @@ namespace Volo.Docs.Projects
public async Task<List<Project>> GetListAsync(string sorting, int maxResultCount, int skipCount)
{
var projects = await DbSet.OrderBy(sorting ?? "creationTime desc")
var projects = await DbSet.OrderBy(sorting ?? "Id desc")
.PageBy(skipCount, maxResultCount)
.ToListAsync();

1
modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo.Docs.Admin.Application.Tests.csproj

@ -11,6 +11,7 @@
<ItemGroup>
<ProjectReference Include="..\..\src\Volo.Docs.Admin.Application\Volo.Docs.Admin.Application.csproj" />
<ProjectReference Include="..\..\src\Volo.Docs.Application\Volo.Docs.Application.csproj" />
<ProjectReference Include="..\Volo.Docs.Domain.Tests\Volo.Docs.Domain.Tests.csproj" />
</ItemGroup>

50
modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/ApplicationService_Tests.cs

@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Shouldly;
using Volo.Docs.Admin.Projects;
using Volo.Docs.Projects;
using Xunit;
namespace Volo.Docs
{
public class ApplicationService_Tests : DocsApplicationTestBase
{
private readonly IProjectAppService _projectAppService;
private readonly IProjectRepository _projectRepository;
private readonly DocsTestData _testData;
public ApplicationService_Tests()
{
_projectRepository = GetRequiredService<IProjectRepository>();
_projectAppService = GetRequiredService<IProjectAppService>();
_testData = GetRequiredService<DocsTestData>();
}
[Fact]
public async Task GetListAsync()
{
var projects = await _projectAppService.GetListAsync();
projects.ShouldNotBeNull();
projects.Items.Count.ShouldBe(1);
projects.Items.ShouldContain(x => x.Id == _testData.PorjectId);
}
[Fact]
public async Task GetAsync()
{
var project = await _projectAppService.GetAsync("ABP");
project.ShouldNotBeNull();
project.ShortName.ShouldBe("ABP");
}
[Fact]
public async Task GetVersionsAsync()
{
// TODO: Need to mock WebClient and Octokit components
}
}
}

14
modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/DocsAdminApplicationTestModule.cs

@ -1,14 +0,0 @@
using Volo.Abp.Modularity;
using Volo.Docs.Admin;
namespace Volo.Docs
{
[DependsOn(
typeof(DocsAdminApplicationModule),
typeof(DocsDomainTestModule)
)]
public class DocsApplicationTestModule : AbpModule
{
}
}

16
modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/DocsApplicationTestBase.cs

@ -0,0 +1,16 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Volo.Docs
{
public class DocsAdminApplicationTestBase : DocsTestBase<DocsAdminApplicationTestModule>
{
}
public class DocsApplicationTestBase : DocsTestBase<DocsApplicationTestModule>
{
}
}

26
modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/DocsApplicationTestModule.cs

@ -0,0 +1,26 @@
using System;
using System.Collections.Generic;
using System.Text;
using Volo.Abp.Modularity;
using Volo.Docs.Admin;
namespace Volo.Docs
{
[DependsOn(
typeof(DocsApplicationModule),
typeof(DocsDomainTestModule)
)]
public class DocsApplicationTestModule : AbpModule
{
}
[DependsOn(
typeof(DocsAdminApplicationModule),
typeof(DocsDomainTestModule)
)]
public class DocsAdminApplicationTestModule : AbpModule
{
}
}

124
modules/docs/test/Volo.Docs.Admin.Application.Tests/Volo/Docs/ProjectAdminAppService_Tests.cs

@ -0,0 +1,124 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Shouldly;
using Volo.Abp.Application.Dtos;
using Volo.Docs.Admin.Projects;
using Volo.Docs.Projects;
using Xunit;
namespace Volo.Docs
{
public class ProjectAdminAppService_Tests : DocsAdminApplicationTestBase
{
private readonly IProjectAdminAppService _projectAdminAppService;
private readonly IProjectRepository _projectRepository;
private readonly DocsTestData _testData;
public ProjectAdminAppService_Tests()
{
_projectRepository = GetRequiredService<IProjectRepository>();
_projectAdminAppService = GetRequiredService<IProjectAdminAppService>();
_testData = GetRequiredService<DocsTestData>();
}
[Fact]
public async Task GetListAsync()
{
var projects = await _projectAdminAppService.GetListAsync(new PagedAndSortedResultRequestDto());
projects.ShouldNotBeNull();
projects.TotalCount.ShouldBe(1);
projects.Items.ShouldContain(x => x.Name == "ABP vNext");
}
[Fact]
public async Task GetAsync()
{
var project = await _projectAdminAppService.GetAsync(_testData.PorjectId);
project.ShouldNotBeNull();
project.Id.ShouldBe(_testData.PorjectId);
}
[Fact]
public async Task CreateAsync()
{
var createProjectDto = new CreateProjectDto
{
Name = "ABP vNext",
ShortName = "ABP",
Format = "md",
DefaultDocumentName = "index",
NavigationDocumentName = "docs-nav.json",
MinimumVersion = "1",
MainWebsiteUrl = "abp.io",
LatestVersionBranchName = "",
DocumentStoreType = "GitHub",
ExtraProperties = new Dictionary<string, object>()
};
createProjectDto.ExtraProperties.Add("GitHubRootUrl",
"https://github.com/abpframework/abp/tree/{version}/docs/en/");
createProjectDto.ExtraProperties.Add("GitHubAccessToken", "123456");
createProjectDto.ExtraProperties.Add("GitHubUserAgent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)");
//Act
var projectDto = await _projectAdminAppService.CreateAsync(createProjectDto);
projectDto.ShouldNotBeNull();
projectDto.Name.ShouldBe(createProjectDto.Name);
projectDto.ShortName.ShouldBe(createProjectDto.ShortName);
projectDto.Format.ShouldBe(createProjectDto.Format);
projectDto.DefaultDocumentName.ShouldBe(createProjectDto.DefaultDocumentName);
projectDto.NavigationDocumentName.ShouldBe(createProjectDto.NavigationDocumentName);
projectDto.MinimumVersion.ShouldBe(createProjectDto.MinimumVersion);
projectDto.MainWebsiteUrl.ShouldBe(createProjectDto.MainWebsiteUrl);
projectDto.LatestVersionBranchName.ShouldBe(createProjectDto.LatestVersionBranchName);
projectDto.DocumentStoreType.ShouldBe(createProjectDto.DocumentStoreType);
projectDto.ExtraProperties.Except(createProjectDto.ExtraProperties).Any().ShouldBe(false);
}
[Fact]
public async Task UpdateAsync()
{
var updateProjectDto = new UpdateProjectDto
{
Name = "ABP vNext",
Format = "md",
DefaultDocumentName = "index",
NavigationDocumentName = "docs-nav.json",
MinimumVersion = "1",
MainWebsiteUrl = "abp.io",
LatestVersionBranchName = "",
ExtraProperties = new Dictionary<string, object>()
};
updateProjectDto.ExtraProperties.Add("test", "test");
var projectDto = await _projectAdminAppService.UpdateAsync(_testData.PorjectId, updateProjectDto);
projectDto.ShouldNotBeNull();
projectDto.Name.ShouldBe(updateProjectDto.Name);
projectDto.Format.ShouldBe(updateProjectDto.Format);
projectDto.DefaultDocumentName.ShouldBe(updateProjectDto.DefaultDocumentName);
projectDto.NavigationDocumentName.ShouldBe(updateProjectDto.NavigationDocumentName);
projectDto.MinimumVersion.ShouldBe(updateProjectDto.MinimumVersion);
projectDto.MainWebsiteUrl.ShouldBe(updateProjectDto.MainWebsiteUrl);
projectDto.LatestVersionBranchName.ShouldBe(updateProjectDto.LatestVersionBranchName);
projectDto.ExtraProperties.ShouldContainKey("test");
}
[Fact]
public async Task DeleteAsync()
{
(await _projectRepository.GetAsync(_testData.PorjectId)).ShouldNotBeNull();
await _projectAdminAppService.DeleteAsync(_testData.PorjectId);
(await _projectRepository.GetListAsync()).ShouldBeEmpty();
}
}
}

3
modules/docs/test/Volo.Docs.Domain.Tests/Volo/Docs/DocsDomainTestModule.cs

@ -4,7 +4,8 @@ using Volo.Abp.Modularity;
namespace Volo.Docs
{
[DependsOn(
typeof(DocsEntityFrameworkCoreTestModule)
typeof(DocsEntityFrameworkCoreTestModule),
typeof(DocsTestBaseModule)
)]
public class DocsDomainTestModule : AbpModule
{

28
modules/docs/test/Volo.Docs.Domain.Tests/Volo/Docs/DocumentStoreFactory_Tests.cs

@ -0,0 +1,28 @@
using System;
using System.Collections.Generic;
using System.Text;
using Shouldly;
using Volo.Docs.Documents;
using Volo.Docs.FileSystem.Documents;
using Volo.Docs.GitHub.Documents;
using Xunit;
namespace Volo.Docs
{
public class DocumentStoreFactory_Tests : DocsDomainTestBase
{
private readonly IDocumentStoreFactory _documentStoreFactory;
public DocumentStoreFactory_Tests()
{
_documentStoreFactory = GetRequiredService<IDocumentStoreFactory>();
}
[Fact]
public void Create()
{
_documentStoreFactory.Create(GithubDocumentStore.Type).GetType().ShouldBe(typeof(GithubDocumentStore));
_documentStoreFactory.Create(FileSystemDocumentStore.Type).GetType().ShouldBe(typeof(FileSystemDocumentStore));
}
}
}

56
modules/docs/test/Volo.Docs.Domain.Tests/Volo/Docs/Project_Tests.cs

@ -0,0 +1,56 @@
using System;
using System.Collections.Generic;
using System.Text;
using Shouldly;
using Volo.Docs.Projects;
using Xunit;
namespace Volo.Docs
{
public class Project_Tests : DocsDomainTestBase
{
[Theory]
[InlineData("aaa")]
[InlineData("bbb")]
public void SetName(string name)
{
var project = new Project(Guid.NewGuid(), "ABP vNext", "ABP", "Github", "md", "index",
"docs-nav.json");
project.SetName(name);
project.Name.ShouldBe(name);
}
[Theory]
[InlineData("aaa")]
[InlineData("bbb")]
public void SetFormat(string format)
{
var project = new Project(Guid.NewGuid(), "ABP vNext", "ABP", "Github", "md", "index",
"docs-nav.json");
project.SetFormat(format);
project.Format.ShouldBe(format);
}
[Theory]
[InlineData("aaa")]
[InlineData("bbb")]
public void SetNavigationDocumentName(string navigationDocumentName)
{
var project = new Project(Guid.NewGuid(), "ABP vNext", "ABP", "Github", "md", "index",
"docs-nav.json");
project.SetNavigationDocumentName(navigationDocumentName);
project.NavigationDocumentName.ShouldBe(navigationDocumentName);
}
[Theory]
[InlineData("aaa")]
[InlineData("bbb")]
public void SetDefaultDocumentName(string defaultDocumentName)
{
var project = new Project(Guid.NewGuid(), "ABP vNext", "ABP", "Github", "md", "index",
"docs-nav.json");
project.SetDefaultDocumentName(defaultDocumentName);
project.DefaultDocumentName.ShouldBe(defaultDocumentName);
}
}
}

4
modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo/Docs/EntityFrameworkCore/DocsEntityFrameworkCoreTestModule.cs

@ -2,11 +2,11 @@
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Infrastructure;
using Microsoft.EntityFrameworkCore.Storage;
using Microsoft.Extensions.DependencyInjection;
using Volo.Abp.EntityFrameworkCore;
using Volo.Abp.Modularity;
using Volo.Docs.EntityFrameworkCore;
namespace Volo.Docs.EntityFrameworkCore
namespace Volo.Docs
{
[DependsOn(
typeof(DocsTestBaseModule),

11
modules/docs/test/Volo.Docs.EntityFrameworkCore.Tests/Volo/Docs/EntityFrameworkCore/ProjectRepository_Tests.cs

@ -0,0 +1,11 @@
using System;
using System.Collections.Generic;
using System.Text;
namespace Volo.Docs.EntityFrameworkCore
{
public class ProjectRepository_Tests : ProjectRepository_Tests<DocsEntityFrameworkCoreTestModule>
{
}
}

4
modules/docs/test/Volo.Docs.TestBase/Volo/Docs/DocsTestData.cs

@ -1,8 +1,10 @@
using Volo.Abp.DependencyInjection;
using System;
using Volo.Abp.DependencyInjection;
namespace Volo.Docs
{
public class DocsTestData : ISingletonDependency
{
public Guid PorjectId { get; } = Guid.NewGuid();
}
}

14
modules/docs/test/Volo.Docs.TestBase/Volo/Docs/DocsTestDataBuilder.cs

@ -1,5 +1,7 @@
using Volo.Abp.DependencyInjection;
using Volo.Abp.Guids;
using Volo.Docs.GitHub.Documents;
using Volo.Docs.Projects;
namespace Volo.Docs
{
@ -7,18 +9,26 @@ namespace Volo.Docs
{
private readonly IGuidGenerator _guidGenerator;
private DocsTestData _testData;
private IProjectRepository _projectRepository;
public DocsTestDataBuilder(
IGuidGenerator guidGenerator,
DocsTestData testData)
DocsTestData testData, IProjectRepository projectRepository)
{
_guidGenerator = guidGenerator;
_testData = testData;
_projectRepository = projectRepository;
}
public void Build()
{
var project = new Project(_testData.PorjectId, "ABP vNext", "ABP", GithubDocumentStore.Type, "md", "index",
"docs-nav.json");
project.ExtraProperties.Add("GitHubRootUrl", "https://github.com/abpframework/abp/tree/{version}/docs/en/");
project.ExtraProperties.Add("GitHubAccessToken", "123456");
project.ExtraProperties.Add("GitHubUserAgent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64)");
_projectRepository.Insert(project);
}
}
}

50
modules/docs/test/Volo.Docs.TestBase/Volo/Docs/ProjectRepository_Tests.cs

@ -0,0 +1,50 @@
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Shouldly;
using Volo.Abp.Modularity;
using Volo.Docs.Projects;
using Xunit;
namespace Volo.Docs
{
public abstract class ProjectRepository_Tests<TStartupModule> : DocsTestBase<TStartupModule>
where TStartupModule : IAbpModule
{
protected readonly IProjectRepository _projectRepository;
protected ProjectRepository_Tests()
{
_projectRepository = GetRequiredService<IProjectRepository>(); ;
}
[Fact]
public async Task GetListAsync()
{
var projects = await _projectRepository.GetListAsync();
projects.ShouldNotBeNull();
projects.Count.ShouldBe(1);
}
[Fact]
public async Task GetTotalProjectCount()
{
var count = await _projectRepository.GetTotalProjectCount();
count.ShouldBe(1);
}
[Fact]
public async Task GetByShortNameAsync()
{
var project = await _projectRepository.GetByShortNameAsync("ABP");
project.ShouldNotBeNull();
project.ShortName.ShouldBe("ABP");
}
}
}
Loading…
Cancel
Save