public async Task Emits_events_to_all_active_consumers_even_failed_ones() { var behaving = AsyncInterceptingConsumer.Behaving(); var behavingDelegating = new Interceptions(); var misbehaving = AsyncInterceptingConsumer.Misbehaving(ev => ev.Sequence > Sequence.First); var misbehavingDelegating = new Interceptions(); var sut = NewSut(); sut.Subscribe(behaving); sut.Subscribe( behavingDelegating.InOnNewAsync, behavingDelegating.InOnAllSucceededAsync, behavingDelegating.InOnAnyFailedAsync); sut.Subscribe(misbehaving); sut.Subscribe( ev => { misbehavingDelegating.InOnNew(ev); if (ev.Sequence > Sequence.First) { throw new Exception(ev.ToString()); } return(ValueTask.CompletedTask); }, misbehavingDelegating.InOnAllSucceededAsync, misbehavingDelegating.InOnAnyFailedAsync); var ev1 = await sut.EmitAsync(Fake.Strings.Random()); var ev2 = await sut.EmitAsync(Fake.Strings.Random()); behaving.Ensure().OnNewOnlyHas(ev1, ev2); behaving.Ensure().OnAllSucceededOnlyHasId(ev1.Id); behaving.Ensure().OnAnyFailedOnlyHasId(ev2.Id); behavingDelegating.Ensure().OnNewOnlyHas(ev1, ev2); behavingDelegating.Ensure().OnAllSucceededOnlyHasId(ev1.Id); behavingDelegating.Ensure().OnAnyFailedOnlyHasId(ev2.Id); misbehaving.Ensure().OnNewOnlyHas(ev1, ev2); misbehaving.Ensure().OnAllSucceededOnlyHasId(ev1.Id); misbehaving.Ensure().OnAnyFailedOnlyHasId(ev2.Id); misbehavingDelegating.Ensure().OnNewOnlyHas(ev1, ev2); misbehavingDelegating.Ensure().OnAllSucceededOnlyHasId(ev1.Id); misbehavingDelegating.Ensure().OnAnyFailedOnlyHasId(ev2.Id); }
public void Emits_events_to_all_active_consumers_even_failed_ones() { var behaving = InterceptingConsumer.Behaving(); var behavingDelegating = new Interceptions(); var misbehaving = InterceptingConsumer.Misbehaving(ev => ev.Sequence > Sequence.First); var misbehavingDelegating = new Interceptions(); var sut = NewSut(); sut.Subscribe(behaving); sut.Subscribe( behavingDelegating.InOnNew, behavingDelegating.InOnAllSucceeded, behavingDelegating.InOnAnyFailed); sut.Subscribe(misbehaving); sut.Subscribe( ev => { misbehavingDelegating.InOnNew(ev); if (ev.Sequence > Sequence.First) { throw new Exception(ev.ToString()); } }, misbehavingDelegating.InOnAllSucceeded, misbehavingDelegating.InOnAnyFailed); var ev1 = sut.Emit(Fake.Strings.Random()); var ev2 = sut.Emit(Fake.Strings.Random()); behaving.Ensure().OnNewOnlyHas(ev1, ev2); behaving.Ensure().OnAllSucceededOnlyHasId(ev1.Id); behaving.Ensure().OnAnyFailedOnlyHasId(ev2.Id); behavingDelegating.Ensure().OnNewOnlyHas(ev1, ev2); behavingDelegating.Ensure().OnAllSucceededOnlyHasId(ev1.Id); behavingDelegating.Ensure().OnAnyFailedOnlyHasId(ev2.Id); misbehaving.Ensure().OnNewOnlyHas(ev1, ev2); misbehaving.Ensure().OnAllSucceededOnlyHasId(ev1.Id); misbehaving.Ensure().OnAnyFailedOnlyHasId(ev2.Id); misbehavingDelegating.Ensure().OnNewOnlyHas(ev1, ev2); misbehavingDelegating.Ensure().OnAllSucceededOnlyHasId(ev1.Id); misbehavingDelegating.Ensure().OnAnyFailedOnlyHasId(ev2.Id); }
public void Unsubscribed_consumer_is_not_invoked_at_all() { var unsubscribing = InterceptingConsumer.Behaving(); var unsubscribingDelegating = new Interceptions(); var sut = NewSut(); sut.Subscribe(_ => throw new Exception("FAIL")); var sub1 = sut.Subscribe(unsubscribing); var sub2 = sut.Subscribe( unsubscribingDelegating.InOnNew, unsubscribingDelegating.InOnAllSucceeded, unsubscribingDelegating.InOnAnyFailed); sub1.Dispose(); sub2.Dispose(); sut.Emit(Fake.Strings.Random()); unsubscribing.Ensure().ToBeUnTouched(); unsubscribingDelegating.Ensure().ToBeUnTouched(); }
internal static InterceptionsHas Ensure(this Interceptions interceptions) => new(interceptions);