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 @@
-
+