mirror of https://github.com/abpframework/abp.git
28 changed files with 284 additions and 10 deletions
@ -0,0 +1,7 @@ |
|||
namespace Volo.CmsKit.Admin.Menus |
|||
{ |
|||
public class UpdateMainMenuInput |
|||
{ |
|||
public bool IsMainMenu { get; set; } |
|||
} |
|||
} |
|||
@ -1,10 +1,12 @@ |
|||
using System; |
|||
using System.Threading; |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Domain.Repositories; |
|||
|
|||
namespace Volo.CmsKit.Menus |
|||
{ |
|||
public interface IMenuRepository : IBasicRepository<Menu, Guid> |
|||
{ |
|||
|
|||
Task<Menu> FindMainMenuAsync(bool includeDetails = true, CancellationToken cancellationToken = default); |
|||
} |
|||
} |
|||
|
|||
@ -0,0 +1,11 @@ |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.Application.Services; |
|||
using Volo.CmsKit.Menus; |
|||
|
|||
namespace Volo.CmsKit.Public.Menus |
|||
{ |
|||
public interface IMenuPublicAppService : IApplicationService |
|||
{ |
|||
Task<MenuWithDetailsDto> GetMainMenuAsync(); |
|||
} |
|||
} |
|||
@ -0,0 +1,30 @@ |
|||
using System.Threading.Tasks; |
|||
using Volo.Abp.GlobalFeatures; |
|||
using Volo.CmsKit.GlobalFeatures; |
|||
using Volo.CmsKit.Menus; |
|||
|
|||
namespace Volo.CmsKit.Public.Menus |
|||
{ |
|||
[RequiresGlobalFeature(typeof(MenuFeature))] |
|||
public class MenuPublicAppService : CmsKitPublicAppServiceBase, IMenuPublicAppService |
|||
{ |
|||
protected IMenuRepository MenuRepository { get; } |
|||
|
|||
public MenuPublicAppService(IMenuRepository menuRepository) |
|||
{ |
|||
MenuRepository = menuRepository; |
|||
} |
|||
|
|||
public async Task<MenuWithDetailsDto> GetMainMenuAsync() |
|||
{ |
|||
var menu = await MenuRepository.FindMainMenuAsync(includeDetails: true); |
|||
|
|||
if (menu == null) |
|||
{ |
|||
return null; |
|||
} |
|||
|
|||
return ObjectMapper.Map<Menu, MenuWithDetailsDto>(menu); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,30 @@ |
|||
using System.Threading.Tasks; |
|||
using Microsoft.AspNetCore.Mvc; |
|||
using Volo.Abp; |
|||
using Volo.Abp.GlobalFeatures; |
|||
using Volo.CmsKit.GlobalFeatures; |
|||
using Volo.CmsKit.Menus; |
|||
|
|||
namespace Volo.CmsKit.Public.Menus |
|||
{ |
|||
[RequiresGlobalFeature(typeof(BlogsFeature))] |
|||
[RemoteService(Name = CmsKitPublicRemoteServiceConsts.RemoteServiceName)] |
|||
[Area("cms-kit")] |
|||
[Route("api/cms-kit-public/menus")] |
|||
public class MenuPublicController : CmsKitPublicControllerBase, IMenuPublicAppService |
|||
{ |
|||
protected IMenuPublicAppService MenuPublicAppService { get; } |
|||
|
|||
public MenuPublicController(IMenuPublicAppService menuPublicAppService) |
|||
{ |
|||
MenuPublicAppService = menuPublicAppService; |
|||
} |
|||
|
|||
[Route("main-menu")] |
|||
[HttpGet] |
|||
public Task<MenuWithDetailsDto> GetMainMenuAsync() |
|||
{ |
|||
return MenuPublicAppService.GetMainMenuAsync(); |
|||
} |
|||
} |
|||
} |
|||
@ -0,0 +1,9 @@ |
|||
using Volo.CmsKit.Menus; |
|||
|
|||
namespace Volo.CmsKit.EntityFrameworkCore.Menus |
|||
{ |
|||
public class MenuRepository_Test : MenuRepository_Test<CmsKitEntityFrameworkCoreTestModule> |
|||
{ |
|||
|
|||
} |
|||
} |
|||
@ -0,0 +1,11 @@ |
|||
using Xunit; |
|||
using Volo.CmsKit.Menus; |
|||
|
|||
namespace Volo.CmsKit.MongoDB.Menus |
|||
{ |
|||
[Collection(MongoTestCollection.Name)] |
|||
public class MenuRepository_Test : MenuRepository_Test<CmsKitMongoDbTestModule> |
|||
{ |
|||
|
|||
} |
|||
} |
|||
@ -0,0 +1,41 @@ |
|||
using System.Threading.Tasks; |
|||
using Shouldly; |
|||
using Volo.Abp.Modularity; |
|||
using Xunit; |
|||
|
|||
namespace Volo.CmsKit.Menus |
|||
{ |
|||
public abstract class MenuRepository_Test<TStartupModule> : CmsKitTestBase<TStartupModule> |
|||
where TStartupModule : IAbpModule |
|||
{ |
|||
|
|||
private readonly CmsKitTestData testData; |
|||
private readonly IMenuRepository menuRepository; |
|||
|
|||
public MenuRepository_Test() |
|||
{ |
|||
testData = GetRequiredService<CmsKitTestData>(); |
|||
menuRepository = GetRequiredService<IMenuRepository>(); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task GetMainMenuAsync_ShouldWorkProperly() |
|||
{ |
|||
var mainMenu = await menuRepository.FindMainMenuAsync(); |
|||
|
|||
mainMenu.ShouldNotBeNull(); |
|||
mainMenu.Id.ShouldBe(testData.Menu_1_Id); |
|||
} |
|||
|
|||
[Fact] |
|||
public async Task GetMainMenuAsync_ShouldWorkProperly_WithIncludeDetails() |
|||
{ |
|||
var mainMenu = await menuRepository.FindMainMenuAsync(includeDetails: true); |
|||
|
|||
mainMenu.ShouldNotBeNull(); |
|||
mainMenu.Id.ShouldBe(testData.Menu_1_Id); |
|||
mainMenu.Items.ShouldNotBeEmpty(); |
|||
mainMenu.Items.Count.ShouldBe(2); |
|||
} |
|||
} |
|||
} |
|||
Loading…
Reference in new issue