public void CanSubscribeToIndexChanges() { using (var store = GetDocumentStore()) { store.Changes().Task.Result .ForAllIndexes().Task.Result .Subscribe(change => { if (change.Type == IndexChangeTypes.IndexAdded) { output = "passed_forallindexesadded"; } }); new Companies_CompanyByType().Execute(store); WaitForIndexing(store); WaitUntilOutput("passed_forallindexesadded"); var usersByName = new Users_ByName(); usersByName.Execute(store); WaitForIndexing(store); store.Changes().Task.Result .ForIndex(usersByName.IndexName).Task.Result .Subscribe(change => { if (change.Type == IndexChangeTypes.MapCompleted) { output = "passed_forindexmapcompleted"; } }); var companiesSompanyByType = new Companies_CompanyByType(); companiesSompanyByType.Execute(store); WaitForIndexing(store); store.Changes().Task.Result .ForIndex(companiesSompanyByType.IndexName).Task.Result .Subscribe(change => { if (change.Type == IndexChangeTypes.RemoveFromIndex) { output2 = "passed_forindexremovecompleted"; } if (change.Type == IndexChangeTypes.ReduceCompleted) { output = "passed_forindexreducecompleted"; } }); using (var session = store.OpenSession()) { session.Store(new User { Name = "user", LastName = "user" }); session.SaveChanges(); WaitForIndexing(store); WaitUntilOutput("passed_forindexmapcompleted"); session.Store(new Company { Id = "companies/1", Name = "company", Type = Company.CompanyType.Public }); session.SaveChanges(); WaitForIndexing(store); WaitUntilOutput("passed_forindexreducecompleted"); session.Delete("companies/1"); session.SaveChanges(); WaitForIndexing(store); WaitUntilOutput2("passed_forindexremovecompleted"); } store.Changes().Task.Result .ForAllIndexes().Task.Result .Subscribe(change => { if (change.Type == IndexChangeTypes.IndexRemoved) { output = "passed_forallindexesremoved"; } }); store.DatabaseCommands.DeleteIndex("Companies/CompanyByType"); WaitForIndexing(store); Assert.Equal("passed_forallindexesremoved", output); } }
public void CanSubscribeToIndexChanges() { using (var store = GetDocumentStore()) { store.Changes().Task.Result .ForAllIndexes().Task.Result .Subscribe(change => { Console.WriteLine(JsonConvert.SerializeObject(change)); if (change.Type == IndexChangeTypes.IndexAdded) { output.Add("passed_forallindexesadded"); } }); new Companies_CompanyByType().Execute(store); WaitForIndexing(store); WaitUntilOutput("passed_forallindexesadded"); var usersByName = new Users_ByName(); usersByName.Execute(store); WaitForIndexing(store); store.Changes().Task.Result .ForIndex(usersByName.IndexName).Task.Result .Subscribe(change => { Console.WriteLine(JsonConvert.SerializeObject(change)); if (change.Type == IndexChangeTypes.MapCompleted) { output.Add("passed_forindexmapcompleted"); } }); var companiesSompanyByType = new Companies_CompanyByType(); companiesSompanyByType.Execute(store); WaitForIndexing(store); store.Changes().Task.Result .ForIndex(companiesSompanyByType.IndexName).Task.Result .Subscribe(change => { Console.WriteLine(JsonConvert.SerializeObject(change)); if (change.Type == IndexChangeTypes.RemoveFromIndex) { output2.Add("passed_forindexremovecompleted"); } if (change.Type == IndexChangeTypes.ReduceCompleted) { output.Add("passed_forindexreducecompleted"); } }); using (var session = store.OpenSession()) { session.Store(new User { Name = "user", LastName = "user" }); session.SaveChanges(); WaitForIndexing(store); WaitUntilOutput("passed_forindexmapcompleted"); session.Store(new Company { Id = "companies/1", Name = "company", Type = Company.CompanyType.Public }); session.SaveChanges(); WaitForIndexing(store); WaitUntilOutput("passed_forindexreducecompleted"); session.Delete("companies/1"); session.SaveChanges(); WaitForIndexing(store); WaitUntilOutput2("passed_forindexremovecompleted"); } store.Changes().Task.Result .ForAllIndexes().Task.Result .Subscribe(change => { if (change.Type == IndexChangeTypes.IndexRemoved) { output.Add("passed_forallindexesremoved"); } }); store.DatabaseCommands.DeleteIndex("Companies/CompanyByType"); WaitForIndexing(store); Assert.Contains("passed_forallindexesremoved", output); } }