mirror of https://github.com/Squidex/squidex.git
6 changed files with 85 additions and 0 deletions
@ -0,0 +1,36 @@ |
|||||
|
// ==========================================================================
|
||||
|
// EventConsumerCleaner.cs
|
||||
|
// Squidex Headless CMS
|
||||
|
// ==========================================================================
|
||||
|
// Copyright (c) Squidex Group
|
||||
|
// All rights reserved.
|
||||
|
// ==========================================================================
|
||||
|
|
||||
|
using System.Collections.Generic; |
||||
|
using System.Linq; |
||||
|
using System.Threading.Tasks; |
||||
|
|
||||
|
namespace Squidex.Infrastructure.CQRS.Events |
||||
|
{ |
||||
|
public sealed class EventConsumerCleaner |
||||
|
{ |
||||
|
private readonly IEnumerable<IEventConsumer> eventConsumers; |
||||
|
private readonly IEventConsumerInfoRepository eventConsumerInfoRepository; |
||||
|
|
||||
|
public EventConsumerCleaner(IEnumerable<IEventConsumer> eventConsumers, IEventConsumerInfoRepository eventConsumerInfoRepository) |
||||
|
{ |
||||
|
Guard.NotNull(eventConsumers, nameof(eventConsumers)); |
||||
|
Guard.NotNull(eventConsumerInfoRepository, nameof(eventConsumerInfoRepository)); |
||||
|
|
||||
|
this.eventConsumers = eventConsumers; |
||||
|
this.eventConsumerInfoRepository = eventConsumerInfoRepository; |
||||
|
} |
||||
|
|
||||
|
public Task CleanAsync() |
||||
|
{ |
||||
|
var names = eventConsumers.Select(x => x.Name).ToArray(); |
||||
|
|
||||
|
return eventConsumerInfoRepository.ClearAsync(names); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
@ -0,0 +1,36 @@ |
|||||
|
// ==========================================================================
|
||||
|
// EventConsumerCleanerTests.cs
|
||||
|
// Squidex Headless CMS
|
||||
|
// ==========================================================================
|
||||
|
// Copyright (c) Squidex Group
|
||||
|
// All rights reserved.
|
||||
|
// ==========================================================================
|
||||
|
|
||||
|
using System.Collections.Generic; |
||||
|
using System.Threading.Tasks; |
||||
|
using FakeItEasy; |
||||
|
using Xunit; |
||||
|
|
||||
|
namespace Squidex.Infrastructure.CQRS.Events |
||||
|
{ |
||||
|
public class EventConsumerCleanerTests |
||||
|
{ |
||||
|
[Fact] |
||||
|
public async Task Should_call_repository_with_all_names() |
||||
|
{ |
||||
|
var eventConsumer1 = A.Fake<IEventConsumer>(); |
||||
|
var eventConsumer2 = A.Fake<IEventConsumer>(); |
||||
|
|
||||
|
A.CallTo(() => eventConsumer1.Name).Returns("consumer1"); |
||||
|
A.CallTo(() => eventConsumer2.Name).Returns("consumer2"); |
||||
|
|
||||
|
var repository = A.Fake<IEventConsumerInfoRepository>(); |
||||
|
|
||||
|
var sut = new EventConsumerCleaner(new[] { eventConsumer1, eventConsumer2 }, repository); |
||||
|
|
||||
|
await sut.CleanAsync(); |
||||
|
|
||||
|
A.CallTo(() => repository.ClearAsync(A<IEnumerable<string>>.That.IsSameSequenceAs(new string[] { "consumer1", "consumer2" }))).MustHaveHappened(); |
||||
|
} |
||||
|
} |
||||
|
} |
||||
Loading…
Reference in new issue