public void SyncLocalDelete() { var serverUri = "http://localhost:8081"; SimpleServerMethods.ResetData(); using (var server = new SimpleServer(serverUri, getMethod: SimpleServerMethods.GetMultiplePeople, deleteMethod: SimpleServerMethods.DeletePerson)) { server.Start(); DfdsJsonSerializer serializer = new DfdsJsonSerializer(); var settings = new DfdsServiceSettings(); settings.DefaultSyncPeriodSeconds = 5; settings.LocalStore = new MemoryStore(); settings.RemoteStore = new RestBasedStore(serverUri, serializer); bool syncComplete = false; var svc = new DeviceFirstDataService(settings); svc.SyncCompleted += delegate { syncComplete = true; }; svc.Register <Person>("PersonID"); // local store will be empty Assert.AreEqual(0, settings.LocalStore.Count <Person>()); // when sync happens, we'll have 3 while (!syncComplete) { Thread.Sleep(500); } syncComplete = false; svc.Remove <Person>(1); Assert.AreEqual(2, settings.LocalStore.Count <Person>()); // wait for the change to sync while (!syncComplete) { Thread.Sleep(500); } syncComplete = false; Assert.AreEqual(2, SimpleServerMethods.People.Count()); Assert.AreEqual(2, settings.LocalStore.Count <Person>()); while (!syncComplete) { Thread.Sleep(500); } Assert.AreEqual(2, settings.LocalStore.Count <Person>()); } }
public async Task BasicAsyncOperationsTest() { var settings = new DfdsServiceSettings() { LocalStore = new MemoryStore(), RemoteStore = new NopRemoteStore() }; var svc = new DeviceFirstDataService(settings); svc.Register <Person>("PersonID"); var person1 = new Person("John Doe"); var person2 = new Person("Jane Doe"); var person3 = new Person("Marie Smith"); // Store var p1 = await svc.StoreAsync(person1); Assert.IsNotNull(p1); Assert.AreEqual(1, p1.PersonID); var p2 = await svc.StoreAsync(person2); Assert.IsNotNull(p2); Assert.AreEqual(2, p2.PersonID); var p3 = await svc.StoreAsync(person3); Assert.IsNotNull(p3); Assert.AreEqual(3, p3.PersonID); // retrieve all var all = await svc.GetMultipleAsync <Person>(); Assert.AreEqual(3, all.Length); // retrieve by ID var pg1 = await svc.GetSingleAsync <Person>(1); Assert.AreEqual(p1, pg1); var pg2 = await svc.GetSingleAsync <Person>(2); Assert.AreEqual(p2, pg2); var pg3 = await svc.GetSingleAsync <Person>(3); Assert.AreEqual(p3, pg3); // update var newName = "Johnathan Doe"; person1.Name = newName; await svc.StoreAsync(person1); var up1 = await svc.GetSingleAsync <Person>(person1.PersonID); Assert.AreEqual(up1.Name, newName); // delete by id Assert.AreEqual(3, svc.Count <Person>()); await svc.RemoveAsync(person2); var np2 = await svc.GetSingleAsync <Person>(2); Assert.AreEqual(2, svc.Count <Person>()); Assert.IsNull(np2); svc.Remove <Person>(3); var np3 = await svc.GetSingleAsync <Person>(3); Assert.AreEqual(1, svc.Count <Person>()); Assert.IsNull(np3); // delete all await svc.StoreAsync(person1); await svc.StoreAsync(person2); await svc.StoreAsync(person3); Assert.AreEqual(3, svc.Count <Person>()); await svc.RemoveAllAsync <Person>(); Assert.AreEqual(0, svc.Count <Person>()); }