private async Task <Realm> GetQueryBasedRealm(bool openAsync, [CallerMemberName] string realmPath = null) { var user = await SyncTestHelpers.GetUserAsync(); var config = new QueryBasedSyncConfiguration(SyncTestHelpers.RealmUri($"~/{realmPath}_{openAsync}"), user, Guid.NewGuid().ToString()) { ObjectClasses = new[] { typeof(ObjectA), typeof(ObjectB), typeof(ObjectC) } }; using (var original = GetRealm(config)) { original.Write(() => { for (var i = 0; i < 10; i++) { var a = original.Add(new ObjectA { StringValue = "A #" + i, IntValue = i, B = new ObjectB { StringValue = "B #" + i, BoolValue = i % 2 == 0, } }); original.Add(new ObjectC { IntValue = i, B = a.B }); } }); await SyncTestHelpers.WaitForUploadAsync(original); } try { Realm.DeleteRealm(config); } catch { } config = new QueryBasedSyncConfiguration(config.ServerUri, config.User, config.DatabasePath + "_partial") { ObjectClasses = config.ObjectClasses }; // We test both `GetInstance` and `GetInstanceAsync` to guard against regressions: // https://github.com/realm/realm-dotnet/issues/1814 var result = await GetRealmAsync(config, openAsync).Timeout(5000); Assert.That(result.All <ObjectB>().Count(), Is.EqualTo(0)); Assert.That(result.All <ObjectA>().Count(), Is.EqualTo(0)); return(result); }
private async Task <Realm> GetQueryBasedRealm(Action <QueryBasedSyncConfiguration> setupConfig = null, [CallerMemberName] string realmPath = null) { SyncTestHelpers.RequiresRos(); var user = await SyncTestHelpers.GetUserAsync(); var config = new QueryBasedSyncConfiguration(SyncTestHelpers.RealmUri($"~/{realmPath}"), user, Guid.NewGuid().ToString()) { ObjectClasses = new[] { typeof(ObjectA), typeof(ObjectB) } }; setupConfig?.Invoke(config); using (var original = GetRealm(config)) { original.Write(() => { for (var i = 0; i < 10; i++) { original.Add(new ObjectA { StringValue = "A #" + i, IntValue = i, B = new ObjectB { StringValue = "B #" + i, BoolValue = i % 2 == 0, } }); } }); await GetSession(original).WaitForUploadAsync(); } try { Realm.DeleteRealm(config); } catch { } config = new QueryBasedSyncConfiguration(config.ServerUri, config.User, config.DatabasePath + "_partial") { ObjectClasses = config.ObjectClasses }; var result = GetRealm(config); await GetSession(result).WaitForDownloadAsync(); Assert.That(result.All <ObjectB>().Count(), Is.EqualTo(0)); Assert.That(result.All <ObjectA>().Count(), Is.EqualTo(0)); return(result); }
private Realm GetRealm(User user, Uri uri) { var config = new QueryBasedSyncConfiguration(uri, user, Guid.NewGuid().ToString()) { ObjectClasses = new[] { typeof(ObjectWithPermissions) } }; return(GetRealm(config)); }
public void DefaultConfiguration_WhenOneUserLoggedIn_ShouldWork(string userScheme, string realmScheme) { TestHelpers.RunAsyncTest(async() => { await SyncTestHelpers.GetFakeUserAsync(scheme: userScheme); var config = new QueryBasedSyncConfiguration(); Assert.That(!config.IsFullSync); Assert.That(config.ServerUri.Scheme, Is.EqualTo(realmScheme)); Assert.That(config.ServerUri.Segments, Is.EqualTo(new[] { "/", "default" })); }); }
private async Task <Uri> CreateRealm(Action <Realm> assignRoles = null, bool addObjects = true) { var uri = SyncTestHelpers.RealmUri(Guid.NewGuid().ToString()); var admin = await SyncTestHelpers.GetAdminUserAsync(); var config = new QueryBasedSyncConfiguration(uri, admin) { ObjectClasses = new[] { typeof(ObjectWithPermissions) } }; using (var realm = GetRealm(config)) { var objects = realm.All <ObjectWithPermissions>(); var subscription = await SubscribeToObjectsAsync(realm); if (addObjects) { Assert.That(subscription.Results.Count(), Is.EqualTo(0)); AddObjectsToRealm(realm, new[] { 1, 2, 3 }); await SyncTestHelpers.WaitForSyncAsync(realm); Assert.That(subscription.Results.Count(), Is.EqualTo(3)); } if (assignRoles != null) { realm.Write(() => { assignRoles(realm); }); } await SyncTestHelpers.WaitForSyncAsync(realm); } return(uri); }