public async Task ShouldAutoFlushAsync() { using (var session = OpenSession()) using (session.BeginTransaction()) { var e1 = new NeverItem { Name = "Abatay" }; e1.Childrens.Add(new NeverChildItem() { Name = "Child", Parent = e1 }); await(session.SaveAsync(e1)); var result = await((from e in session.Query <NeverItem>() where e.Name == "Abatay" select e).ToListAsync()); Assert.That(result.Count, Is.EqualTo(1)); } }
public async Task NeverInvalidateEntitiesAsync() { var debugSessionFactory = (DebugSessionFactory)Sfi; var cache = Substitute.For <UpdateTimestampsCache>(Sfi.Settings, new Dictionary <string, string>()); var updateTimestampsCacheField = typeof(SessionFactoryImpl).GetField( "updateTimestampsCache", BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public); updateTimestampsCacheField.SetValue(debugSessionFactory.ActualFactory, cache); //"Received" assertions can not be used since the collection is reused and cleared between calls. //The received args are cloned and stored var preInvalidations = new List <IReadOnlyCollection <string> >(); var invalidations = new List <IReadOnlyCollection <string> >(); await(cache.PreInvalidateAsync(Arg.Do <IReadOnlyCollection <string> >(x => preInvalidations.Add(x.ToList())), CancellationToken.None)); await(cache.InvalidateAsync(Arg.Do <IReadOnlyCollection <string> >(x => invalidations.Add(x.ToList())), CancellationToken.None)); using (var session = OpenSession()) { List <int> ids = new List <int>(); //Add NeverItem using (var tx = session.BeginTransaction()) { foreach (var i in Enumerable.Range(1, 10)) { var item = new NeverItem { Name = "Abatay" }; item.Childrens.Add(new NeverChildItem() { Name = "Child", Parent = item }); await(session.SaveAsync(item)); ids.Add(item.Id); } await(tx.CommitAsync()); } //Update NeverItem using (var tx = session.BeginTransaction()) { foreach (var i in ids) { var item = await(session.GetAsync <NeverItem>(i)); item.Name = item.Id.ToString(); } await(tx.CommitAsync()); } //Delete NeverItem using (var tx = session.BeginTransaction()) { foreach (var i in ids) { var item = await(session.GetAsync <NeverItem>(i)); await(session.DeleteAsync(item)); } await(tx.CommitAsync()); } //Update NeverItem using HQL using (var tx = session.BeginTransaction()) { await(session.CreateQuery("UPDATE NeverItem SET Name='Test'").ExecuteUpdateAsync()); await(tx.CommitAsync()); } //Update NeverItem using LINQ using (var tx = session.BeginTransaction()) { await(session.Query <NeverItem>() .UpdateBuilder() .Set(x => x.Name, "Test") .UpdateAsync()); await(tx.CommitAsync()); } } //Should receive none preinvalidation when Cache is configured as never Assert.That(preInvalidations, Has.Count.EqualTo(0)); //Should receive none invalidation when Cache is configured as never Assert.That(invalidations, Has.Count.EqualTo(0)); }