mirror of https://github.com/abpframework/abp.git
1 changed files with 96 additions and 104 deletions
@ -1,113 +1,105 @@ |
|||||
using System.Threading.Tasks; |
using System.Threading.Tasks; |
||||
using Shouldly; |
using Shouldly; |
||||
using Volo.CmsKit.Tags; |
using Volo.Abp; |
||||
using Xunit; |
using Xunit; |
||||
|
|
||||
namespace Volo.CmsKit.Pages; |
namespace Volo.CmsKit.Pages; |
||||
|
|
||||
public class PageManager_Test : CmsKitDomainTestBase |
public class PageManager_Test : CmsKitDomainTestBase |
||||
{ |
{ |
||||
private readonly PageManager pageManager; |
private readonly PageManager pageManager; |
||||
private readonly CmsKitTestData testData; |
private readonly CmsKitTestData testData; |
||||
private readonly IPageRepository pageRepository; |
private readonly IPageRepository pageRepository; |
||||
|
|
||||
public PageManager_Test() |
public PageManager_Test() |
||||
{ |
{ |
||||
pageManager = GetRequiredService<PageManager>(); |
pageManager = GetRequiredService<PageManager>(); |
||||
testData = GetRequiredService<CmsKitTestData>(); |
testData = GetRequiredService<CmsKitTestData>(); |
||||
pageRepository = GetRequiredService<IPageRepository>(); |
pageRepository = GetRequiredService<IPageRepository>(); |
||||
} |
} |
||||
|
|
||||
[Fact] |
[Fact] |
||||
public async Task CreateAsync_ShouldWorkProperly_WithNonExistingSlug() |
public async Task CreateAsync_ShouldWorkProperly_WithNonExistingSlug() |
||||
{ |
{ |
||||
var title = "My awesome page"; |
var title = "My awesome page"; |
||||
var slug = "my-awesome-page"; |
var slug = "my-awesome-page"; |
||||
var content = "<h1>My Awesome Page</h1><p>This is my awesome page content!</p>"; |
var content = "<h1>My Awesome Page</h1><p>This is my awesome page content!</p>"; |
||||
|
|
||||
var page = await pageManager.CreateAsync(title, slug, content); |
var page = await pageManager.CreateAsync(title, slug, content); |
||||
|
|
||||
page.ShouldNotBeNull(); |
page.ShouldNotBeNull(); |
||||
page.Title.ShouldBe(title); |
page.Title.ShouldBe(title); |
||||
page.Slug.ShouldBe(slug); |
page.Slug.ShouldBe(slug); |
||||
page.Content.ShouldBe(content); |
page.Content.ShouldBe(content); |
||||
} |
} |
||||
|
|
||||
[Fact] |
[Fact] |
||||
public async Task CreateAsync_ShouldThrowException_WithExistingSlug() |
public async Task CreateAsync_ShouldThrowException_WithExistingSlug() |
||||
{ |
{ |
||||
var title = "My awesome page"; |
var title = "My awesome page"; |
||||
var slug = testData.Page_1_Slug; |
var slug = testData.Page_1_Slug; |
||||
var content = "<h1>My Awesome Page</h1><p>This is my awesome page content!</p>"; |
var content = "<h1>My Awesome Page</h1><p>This is my awesome page content!</p>"; |
||||
|
|
||||
var exception = await Should.ThrowAsync<PageSlugAlreadyExistsException>(async () => |
var exception = await Should.ThrowAsync<PageSlugAlreadyExistsException>(async () => |
||||
await pageManager.CreateAsync(title, slug, content)); |
await pageManager.CreateAsync(title, slug, content)); |
||||
|
|
||||
exception.ShouldNotBeNull(); |
exception.ShouldNotBeNull(); |
||||
} |
} |
||||
|
|
||||
[Fact] |
[Fact] |
||||
public async Task SetSlugAsync_ShouldWorkProperly_WithNonExistingSlug() |
public async Task SetSlugAsync_ShouldWorkProperly_WithNonExistingSlug() |
||||
{ |
{ |
||||
var newSlug = "freshly-generated-new-slug"; |
var newSlug = "freshly-generated-new-slug"; |
||||
var page = await pageRepository.GetAsync(testData.Page_1_Id); |
var page = await pageRepository.GetAsync(testData.Page_1_Id); |
||||
|
|
||||
await pageManager.SetSlugAsync(page, newSlug); |
await pageManager.SetSlugAsync(page, newSlug); |
||||
|
|
||||
page.Slug.ShouldBe(newSlug); |
page.Slug.ShouldBe(newSlug); |
||||
} |
} |
||||
|
|
||||
[Fact] |
[Fact] |
||||
public async Task SetSlugAsync_ShouldThrowException_WithExistingSlug() |
public async Task SetSlugAsync_ShouldThrowException_WithExistingSlug() |
||||
{ |
{ |
||||
var newSlug = testData.Page_2_Slug; |
var newSlug = testData.Page_2_Slug; |
||||
var page = await pageRepository.GetAsync(testData.Page_1_Id); |
var page = await pageRepository.GetAsync(testData.Page_1_Id); |
||||
|
|
||||
var exception = await Should.ThrowAsync<PageSlugAlreadyExistsException>(async () => |
var exception = await Should.ThrowAsync<PageSlugAlreadyExistsException>(async () => |
||||
await pageManager.SetSlugAsync(page, newSlug)); |
await pageManager.SetSlugAsync(page, newSlug)); |
||||
|
|
||||
exception.ShouldNotBeNull(); |
exception.ShouldNotBeNull(); |
||||
} |
} |
||||
|
|
||||
[Fact] |
[Fact] |
||||
public async Task SetHomePageAsync_ShouldWorkProperly_IfExistHomePage() |
public async Task SetHomePageAsync_ShouldWorkProperly_IfExistHomePage() |
||||
{ |
{ |
||||
await WithUnitOfWorkAsync(async ()=> |
await WithUnitOfWorkAsync(async () => |
||||
{ |
{ |
||||
var page = await pageRepository.GetAsync(testData.Page_1_Id); |
var page = await pageRepository.GetAsync(testData.Page_1_Id); |
||||
|
|
||||
await pageManager.SetHomePageAsync(page); |
await pageManager.SetHomePageAsync(page); |
||||
}); |
}); |
||||
|
|
||||
var page = await pageRepository.GetAsync(testData.Page_1_Id); |
var page = await pageRepository.GetAsync(testData.Page_1_Id); |
||||
page.IsHomePage.ShouldBeTrue(); |
page.IsHomePage.ShouldBeTrue(); |
||||
|
|
||||
var pageSetAsHomePageAsFalse = await pageRepository.GetAsync(testData.Page_2_Id); |
var pageSetAsHomePageAsFalse = await pageRepository.GetAsync(testData.Page_2_Id); |
||||
pageSetAsHomePageAsFalse.IsHomePage.ShouldBeFalse(); |
pageSetAsHomePageAsFalse.IsHomePage.ShouldBeFalse(); |
||||
} |
} |
||||
|
|
||||
[Fact] |
[Fact] |
||||
public async Task SetHomePageAsync_ShouldFix_WhenMultipleHomePageExist() |
public async Task SetHomePageAsync_ShouldThrowException_WhenMultipleHomePageExist() |
||||
{ |
{ |
||||
await WithUnitOfWorkAsync(async () => |
await WithUnitOfWorkAsync(async () => |
||||
{ |
{ |
||||
var page1 = await pageRepository.GetAsync(testData.Page_1_Id); |
var page1 = await pageRepository.GetAsync(testData.Page_1_Id); |
||||
var page2 = await pageRepository.GetAsync(testData.Page_2_Id); |
var page2 = await pageRepository.GetAsync(testData.Page_2_Id); |
||||
|
|
||||
page1.SetIsHomePage(true); |
page1.SetIsHomePage(true); |
||||
page2.SetIsHomePage(true); |
page2.SetIsHomePage(true); |
||||
|
|
||||
await pageRepository.UpdateManyAsync(new[] { page1, page2 }, autoSave: true); |
await pageRepository.UpdateManyAsync(new[] { page1, page2 }, autoSave: true); |
||||
|
|
||||
await pageManager.SetHomePageAsync(page1); |
await Assert.ThrowsAsync<BusinessException>(async () => await pageManager.SetHomePageAsync(page1)); |
||||
}); |
}); |
||||
|
} |
||||
var page1 = await pageRepository.GetAsync(testData.Page_1_Id); |
|
||||
var page2 = await pageRepository.GetAsync(testData.Page_2_Id); |
|
||||
|
|
||||
page2 = await pageRepository.GetAsync(testData.Page_2_Id); |
|
||||
|
|
||||
page1.IsHomePage.ShouldBeTrue(); |
|
||||
page2.IsHomePage.ShouldBeFalse(); |
|
||||
} |
|
||||
} |
} |
||||
|
|||||
Loading…
Reference in new issue