diff --git a/packages/realm_dart/lib/src/handles/native/init.dart b/packages/realm_dart/lib/src/handles/native/init.dart index dcad10696..ec8c2117b 100644 --- a/packages/realm_dart/lib/src/handles/native/init.dart +++ b/packages/realm_dart/lib/src/handles/native/init.dart @@ -153,7 +153,13 @@ EJsonValue encodeRealmValue(RealmValue value) { return toEJson(v); } -RealmValue decodeRealmValue(EJsonValue ejson) => RealmValue.from(fromEJson(ejson, allowCustom: false)); +RealmValue decodeRealmValue(EJsonValue ejson) { + Object? decoded = fromEJson(ejson, allowCustom: false); + if (decoded is DBRef) { +// return RealmValue.from(null); + } + return RealmValue.from(decoded); +} /// @nodoc // Initializes Realm library diff --git a/packages/realm_dart/test/serialization_test.dart b/packages/realm_dart/test/serialization_test.dart index 1bf93f9c5..69fb6e00b 100644 --- a/packages/realm_dart/test/serialization_test.dart +++ b/packages/realm_dart/test/serialization_test.dart @@ -49,17 +49,19 @@ void main() { expect(fromEJson(r.toEJson()), r); } }); + } - test('RealmValue with RealmObject', () { - // load custom codecs for Player and Game. This is done to test that it - // doesn't interfere with the RealmValue codecs. - Realm(Configuration.inMemory([Player.schema, Game.schema])); + test('RealmObject', () { + // load custom codecs for Player and Game. This is done to test that it + // doesn't interfere with the RealmValue codecs. + Realm(Configuration.inMemory([Player.schema, Game.schema])); - final rv = RealmValue.from(Player('Christian Eriksen')); - expect(rv.toEJson(), {'\$id': 'Christian Eriksen', '\$ref': 'Player'}); - expect(fromEJson(rv.toEJson()), isA().having((r) => r.id, '\$id', 'Christian Eriksen')); - }); - } + final p = Player('Christian Eriksen'); + final rv = RealmValue.from(p); + expect(rv.toEJson(), {'\$id': 'Christian Eriksen', '\$ref': 'Player'}); + expect(fromEJson(rv.toEJson()), isA().having((r) => r.id, '\$id', 'Christian Eriksen')); + expect((fromEJson(rv.toEJson()).value as Player).name, p.name); + }); }); test('Decimal128', () {