From 2b3536011751b7e2641e40530cc0a5815005931f Mon Sep 17 00:00:00 2001 From: Ari Lazier Date: Thu, 28 Apr 2016 15:50:43 -0700 Subject: [PATCH] add readOnly property --- lib/browser/index.js | 2 ++ src/js_realm.hpp | 7 +++++++ tests/js/realm-tests.js | 3 +++ 3 files changed, 12 insertions(+) diff --git a/lib/browser/index.js b/lib/browser/index.js index 64ca70b7..583d897c 100644 --- a/lib/browser/index.js +++ b/lib/browser/index.js @@ -71,6 +71,8 @@ export default class Realm { [ 'path', + 'readOnly', + 'schema', 'schemaVersion', ].forEach((name) => { Object.defineProperty(this, name, {get: util.getterForProperty(name)}); diff --git a/src/js_realm.hpp b/src/js_realm.hpp index e3c33e04..ce046a11 100644 --- a/src/js_realm.hpp +++ b/src/js_realm.hpp @@ -148,6 +148,7 @@ class Realm { static void get_path(ContextType, ObjectType, ReturnValue &); static void get_schema_version(ContextType, ObjectType, ReturnValue &); static void get_schema(ContextType, ObjectType, ReturnValue &); + static void get_read_only(ContextType, ObjectType, ReturnValue &); // static methods static void constructor(ContextType, ObjectType, size_t, const ValueType[]); @@ -224,6 +225,7 @@ struct RealmClass : ClassDefinition { {"path", {wrap, nullptr}}, {"schemaVersion", {wrap, nullptr}}, {"schema", {wrap, nullptr}}, + {"readOnly", {wrap, nullptr}}, }; }; @@ -387,6 +389,11 @@ void Realm::get_schema(ContextType ctx, ObjectType object, ReturnValue &retur return_value.set(Schema::object_for_schema(ctx, *schema)); } +template +void Realm::get_read_only(ContextType ctx, ObjectType object, ReturnValue &return_value) { + return_value.set(get_internal>(object)->get()->config().read_only); +} + template void Realm::objects(ContextType ctx, ObjectType this_object, size_t argc, const ValueType arguments[], ReturnValue &return_value) { validate_argument_count(argc, 1); diff --git a/tests/js/realm-tests.js b/tests/js/realm-tests.js index c8df1596..35294bd4 100644 --- a/tests/js/realm-tests.js +++ b/tests/js/realm-tests.js @@ -124,12 +124,14 @@ module.exports = BaseTest.extend({ realm.write(function() { realm.create('TestObject', [1]) }); + TestCase.assertEqual(realm.readOnly, false); realm.close(); realm = new Realm({readOnly: true, schema: [schemas.TestObject]}); var objects = realm.objects('TestObject'); TestCase.assertEqual(objects.length, 1); TestCase.assertEqual(objects[0].doubleCol, 1.0); + TestCase.assertEqual(realm.readOnly, true); TestCase.assertThrows(function() { realm.write(function() {}); @@ -138,6 +140,7 @@ module.exports = BaseTest.extend({ realm = new Realm({readOnly: true}); TestCase.assertEqual(realm.schema.length, 1); + TestCase.assertEqual(realm.readOnly, true); }, testDefaultPath: function() {