diff --git a/src/Umbraco.Core/Services/IMacroService.cs b/src/Umbraco.Core/Services/IMacroService.cs index 0c59b8a614..809f87dccf 100644 --- a/src/Umbraco.Core/Services/IMacroService.cs +++ b/src/Umbraco.Core/Services/IMacroService.cs @@ -22,6 +22,10 @@ namespace Umbraco.Core.Services /// An enumerable list of objects IEnumerable GetAll(params string[] aliases); + IEnumerable GetAll(params int[] ids); + + IMacro GetById(int id); + /// /// Deletes an /// diff --git a/src/Umbraco.Core/Services/MacroService.cs b/src/Umbraco.Core/Services/MacroService.cs index a620bbc0ab..837e0d31de 100644 --- a/src/Umbraco.Core/Services/MacroService.cs +++ b/src/Umbraco.Core/Services/MacroService.cs @@ -6,6 +6,7 @@ using Umbraco.Core.Events; using Umbraco.Core.Models; using Umbraco.Core.Persistence; using Umbraco.Core.Persistence.Querying; +using Umbraco.Core.Persistence.Repositories; using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Core.Services @@ -61,19 +62,39 @@ namespace Umbraco.Core.Services { if (aliases.Any()) { - var q = new Query(); - foreach (var alias in aliases) - { - q.Where(macro => macro.Alias == alias); - } - - return repository.GetByQuery(q); + return GetAllByAliases(repository, aliases); } return repository.GetAll(); } } + public IEnumerable GetAll(params int[] ids) + { + using (var repository = _repositoryFactory.CreateMacroRepository(_uowProvider.GetUnitOfWork())) + { + return repository.GetAll(ids); + } + } + + public IMacro GetById(int id) + { + using (var repository = _repositoryFactory.CreateMacroRepository(_uowProvider.GetUnitOfWork())) + { + return repository.Get(id); + } + } + + private IEnumerable GetAllByAliases(IMacroRepository repo, IEnumerable aliases) + { + foreach (var alias in aliases) + { + var q = new Query(); + q.Where(macro => macro.Alias == alias); + yield return repo.GetByQuery(q).FirstOrDefault(); + } + } + /// /// Deletes an /// diff --git a/src/Umbraco.Tests/Services/RepositoryServiceTests.cs b/src/Umbraco.Tests/Services/MacroServiceTests.cs similarity index 96% rename from src/Umbraco.Tests/Services/RepositoryServiceTests.cs rename to src/Umbraco.Tests/Services/MacroServiceTests.cs index 851dcd2d8d..44bf9a7583 100644 --- a/src/Umbraco.Tests/Services/RepositoryServiceTests.cs +++ b/src/Umbraco.Tests/Services/MacroServiceTests.cs @@ -7,14 +7,12 @@ using Umbraco.Core.Persistence.UnitOfWork; namespace Umbraco.Tests.Services { [TestFixture, RequiresSTA] - public class RepositoryServiceTests : BaseServiceTest + public class MacroServiceTests : BaseServiceTest { [SetUp] public override void Initialize() { base.Initialize(); - - CreateTestData(); } public override void CreateTestData() diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 96eedad79d..1fc37d4dc2 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -264,7 +264,7 @@ - +