diff --git a/test/results_test.dart b/test/results_test.dart index 2008247b1d..259138fcc1 100644 --- a/test/results_test.dart +++ b/test/results_test.dart @@ -662,4 +662,34 @@ Future main([List? args]) async { if (count > 1) fail('Should only receive one event'); } }); + + test('RealmResults.isValid', () { + final config = Configuration.local([Team.schema, Person.schema]); + final realm = getRealm(config); + + final alice = Person('Alice'); + final bob = Person('Bob'); + final carol = Person('Carol'); + final dan = Person('Dan'); + + final team = realm.write(() { + return realm.add(Team('Class of 92', players: [alice, bob, carol, dan])); + }); + + final players = team.players; + final playersAsResults = team.players.asResults(); + + expect(players.isValid, isTrue); + expect(playersAsResults.isValid, isTrue); + expect(playersAsResults, [alice, bob, carol, dan]); + + realm.write(() => realm.delete(team)); + + expect(team.isValid, isFalse); // dead object + expect(players.isValid, isFalse); // parent is dead + expect(() => players.isEmpty, throwsException); + expect(playersAsResults.isValid, isFalse); + expect(() => playersAsResults, throwsException); + expect(() => playersAsResults.freeze(), throwsException); + }); }