public void ManuallyRegisteredListenersAreCalled() { var called = false; #pragma warning disable 612,618 using (DomainEvent.RegisterShortTermSynchronousListener <IDomainEvent>(i => { called = true; })) #pragma warning restore 612,618 { DomainEvent.Raise(new SomethingHappend()); } Assert.That(called, Is.True); }
public static TEvent AssertEventRaised <TEvent>(Action action) where TEvent : IDomainEvent { TEvent caughtEvent = default(TEvent); #pragma warning disable 612,618 using (DomainEvent.RegisterShortTermSynchronousListener <TEvent>(raisedEvent => caughtEvent = raisedEvent)) #pragma warning restore 612,618 { action(); Assert.That(caughtEvent, Is.Not.Null, "Event of type {0} should have been raised".FormatWith(typeof(TEvent))); return(caughtEvent); } }
public void ManuallyRegisteredListenersAreNotCalledWhenEventRaisedOnOtherThread() { var called = false; #pragma warning disable 612,618 using (DomainEvent.RegisterShortTermSynchronousListener <IDomainEvent>(i => { called = true; })) #pragma warning restore 612,618 { var done = new ManualResetEventSlim(); using (var timer = new Timer((o) => { DomainEvent.Raise(new SomethingHappend()); done.Set(); }, null, 1, -1)) { done.Wait(2.Seconds()); } } Assert.That(called, Is.False); }
public virtual CommandResult Execute <TCommand>(TCommand command) { var result = new CommandResult(); #pragma warning disable 612,618 using (DomainEvent.RegisterShortTermSynchronousListener <IDomainEvent>(result.RegisterEvent)) #pragma warning restore 612,618 { using (var transaction = _container.BeginTransactionalUnitOfWorkScope()) { if (command is CompositeCommand) { foreach (var subCommand in (command as CompositeCommand).GetContainedCommands()) { try { ExecuteSingle((dynamic)subCommand.Command); } catch (DomainCommandValidationException exception) { var failedException = new DomainCommandValidationException(exception.Message, exception.InvalidMembers .Select(invalidMember => subCommand.Name + "." + invalidMember) .ToList()); throw failedException; } } } else { ExecuteSingle(command); } transaction.Commit(); } return(result); } }