public async Task DistributeToListenersAsync(List <object> added, EfContextInfo contextInfo, List <Tuple <object, object> > modified, List <object> removed, bool isChildRepository = false) { if (!isChildRepository) { List <Type> otherTypes = added.Where(a => !(a is T)).Select(a => a.GetType()).ToList(); otherTypes.AddRange(modified.Where(a => !(a.Item1 is T)).Select(a => a.Item1.GetType())); otherTypes.AddRange(removed.Where(a => !(a is T)).Select(a => a.GetType())); foreach (var otherType in otherTypes.Distinct()) { var repo = GetChildRepositoryFor(otherType); await repo.DistributeToListenersAsync(added, contextInfo, modified, removed, true); } } /* from the same type */ //added.Where(a=>(a) is T).Cast<T>().Select(async a => await Listen.CreatedAsync(a, contextInfo)); foreach (var addedEntry in added.Where(a => (a) is T).Cast <T>()) { await Listen.CreatedAsync(addedEntry, contextInfo); } //var t2 = modified.Where(a => a is Tuple<T,T>).Cast<Tuple<T,T>>().Select(async a =>await Listen.ModifiedAsync((a).Item1, (a).Item2, contextInfo)); foreach (var modifiedEntry in modified.Where(a => a.Item1 is T && a.Item2 is T).Cast <Tuple <object, object> >()) { await Listen.ModifiedAsync(modifiedEntry.Item1 as T, modifiedEntry.Item2 as T, contextInfo); } //var t3 = removed.Where(a => a is T).Cast<T>().Select(async a => await Listen.RemovedAsync((a), contextInfo)); foreach (var removedEntry in removed.Where(a => a is T).Cast <T>()) { await Listen.RemovedAsync(removedEntry, contextInfo); } }
public async Task Created() { MockListener.Reset(); await Listen.CreatedAsync(ent, ctx); Assert.IsTrue(MockListener.WasOnCreatedCalled); Assert.IsFalse(MockListener.WasOnCreationValidationFailedCalled); Assert.IsFalse(MockListener.WasOnModifiedCalled); Assert.IsFalse(MockListener.WasOnModificationFailedCalled); Assert.IsFalse(MockListener.WasOnDeletedCalled); Assert.IsFalse(MockListener.WasOnDeletionFailedCalled); }