support relative paths when opening realms
This commit is contained in:
parent
c062d88cce
commit
5f61fd970c
|
@ -200,6 +200,11 @@ JSObjectRef RealmConstructor(JSContextRef ctx, JSObjectRef constructor, size_t a
|
||||||
*jsException = RJSMakeError(ctx, "Invalid arguments when constructing 'Realm'");
|
*jsException = RJSMakeError(ctx, "Invalid arguments when constructing 'Realm'");
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (config.path.size() && config.path[0] != '/') {
|
||||||
|
config.path = default_realm_file_directory() + "/" + config.path;
|
||||||
|
}
|
||||||
|
|
||||||
ensure_directory_exists_for_file(config.path);
|
ensure_directory_exists_for_file(config.path);
|
||||||
SharedRealm realm = Realm::get_shared_realm(config);
|
SharedRealm realm = Realm::get_shared_realm(config);
|
||||||
if (!realm->m_binding_context) {
|
if (!realm->m_binding_context) {
|
||||||
|
|
|
@ -22,7 +22,6 @@ var Realm = require('realm');
|
||||||
var BaseTest = require('./base-test');
|
var BaseTest = require('./base-test');
|
||||||
var TestCase = require('./asserts');
|
var TestCase = require('./asserts');
|
||||||
var schemas = require('./schemas');
|
var schemas = require('./schemas');
|
||||||
var util = require('./util');
|
|
||||||
|
|
||||||
module.exports = BaseTest.extend({
|
module.exports = BaseTest.extend({
|
||||||
testRealmConstructor: function() {
|
testRealmConstructor: function() {
|
||||||
|
@ -35,7 +34,7 @@ module.exports = BaseTest.extend({
|
||||||
new Realm('/invalidpath');
|
new Realm('/invalidpath');
|
||||||
}, 'Realm cannot be created with an invalid path');
|
}, 'Realm cannot be created with an invalid path');
|
||||||
TestCase.assertThrows(function() {
|
TestCase.assertThrows(function() {
|
||||||
new Realm(util.realmPathForFile('test1.realm'), 'invalidArgument');
|
new Realm('test1.realm', 'invalidArgument');
|
||||||
}, 'Realm constructor can only have 0 or 1 argument(s)');
|
}, 'Realm constructor can only have 0 or 1 argument(s)');
|
||||||
|
|
||||||
var defaultRealm = new Realm({schema: []});
|
var defaultRealm = new Realm({schema: []});
|
||||||
|
@ -44,15 +43,16 @@ module.exports = BaseTest.extend({
|
||||||
var defaultRealm2 = new Realm();
|
var defaultRealm2 = new Realm();
|
||||||
TestCase.assertEqual(defaultRealm2.path, Realm.defaultPath);
|
TestCase.assertEqual(defaultRealm2.path, Realm.defaultPath);
|
||||||
|
|
||||||
var testPath = util.realmPathForFile('test1.realm');
|
var defaultDir = Realm.defaultPath.substring(0, Realm.defaultPath.lastIndexOf("/") + 1)
|
||||||
|
var testPath = 'test1.realm';
|
||||||
var realm = new Realm({schema: [], path: testPath});
|
var realm = new Realm({schema: [], path: testPath});
|
||||||
//TestCase.assertTrue(realm instanceof Realm);
|
//TestCase.assertTrue(realm instanceof Realm);
|
||||||
TestCase.assertEqual(realm.path, testPath);
|
TestCase.assertEqual(realm.path, defaultDir + testPath);
|
||||||
|
|
||||||
var testPath2 = util.realmPathForFile('test2.realm');
|
var testPath2 = 'test2.realm';
|
||||||
var realm2 = new Realm({schema: [], path: testPath2});
|
var realm2 = new Realm({schema: [], path: testPath2});
|
||||||
//TestCase.assertTrue(realm2 instanceof Realm);
|
//TestCase.assertTrue(realm2 instanceof Realm);
|
||||||
TestCase.assertEqual(realm2.path, testPath2);
|
TestCase.assertEqual(realm2.path, defaultDir + testPath2);
|
||||||
},
|
},
|
||||||
|
|
||||||
testRealmConstructorSchemaVersion: function() {
|
testRealmConstructorSchemaVersion: function() {
|
||||||
|
@ -66,8 +66,7 @@ module.exports = BaseTest.extend({
|
||||||
TestCase.assertEqual(new Realm().schemaVersion, 0);
|
TestCase.assertEqual(new Realm().schemaVersion, 0);
|
||||||
TestCase.assertEqual(new Realm({schemaVersion: 0}).schemaVersion, 0);
|
TestCase.assertEqual(new Realm({schemaVersion: 0}).schemaVersion, 0);
|
||||||
|
|
||||||
var testPath = util.realmPathForFile('test1.realm');
|
var realm = new Realm({path: 'test1.realm', schema: [], schemaVersion: 1});
|
||||||
var realm = new Realm({path: testPath, schema: [], schemaVersion: 1});
|
|
||||||
TestCase.assertEqual(realm.schemaVersion, 1);
|
TestCase.assertEqual(realm.schemaVersion, 1);
|
||||||
// FIXME - enable once Realm exposes a schema object
|
// FIXME - enable once Realm exposes a schema object
|
||||||
//TestCase.assertEqual(realm.schema.length, 0);
|
//TestCase.assertEqual(realm.schema.length, 0);
|
||||||
|
@ -78,7 +77,7 @@ module.exports = BaseTest.extend({
|
||||||
// realm = new Realm({path: testPath, schema: [schemas.TestObject], schemaVersion: 1});
|
// realm = new Realm({path: testPath, schema: [schemas.TestObject], schemaVersion: 1});
|
||||||
// }, "schema changes require updating the schema version");
|
// }, "schema changes require updating the schema version");
|
||||||
|
|
||||||
realm = new Realm({path: testPath, schema: [schemas.TestObject], schemaVersion: 2});
|
realm = new Realm({path: 'test1.realm', schema: [schemas.TestObject], schemaVersion: 2});
|
||||||
realm.write(function() {
|
realm.write(function() {
|
||||||
realm.create('TestObject', {doubleCol: 1});
|
realm.create('TestObject', {doubleCol: 1});
|
||||||
});
|
});
|
||||||
|
@ -111,7 +110,7 @@ module.exports = BaseTest.extend({
|
||||||
var defaultRealm = new Realm({schema: []});
|
var defaultRealm = new Realm({schema: []});
|
||||||
TestCase.assertEqual(defaultRealm.path, Realm.defaultPath);
|
TestCase.assertEqual(defaultRealm.path, Realm.defaultPath);
|
||||||
|
|
||||||
var newPath = util.realmPathForFile('default2.realm');
|
var newPath = Realm.defaultPath.substring(0, Realm.defaultPath.lastIndexOf("/") + 1) + 'default2.realm';
|
||||||
Realm.defaultPath = newPath;
|
Realm.defaultPath = newPath;
|
||||||
defaultRealm = new Realm({schema: []});
|
defaultRealm = new Realm({schema: []});
|
||||||
TestCase.assertEqual(defaultRealm.path, newPath, "should use updated default realm path");
|
TestCase.assertEqual(defaultRealm.path, newPath, "should use updated default realm path");
|
||||||
|
|
|
@ -1,26 +0,0 @@
|
||||||
////////////////////////////////////////////////////////////////////////////
|
|
||||||
//
|
|
||||||
// Copyright 2016 Realm Inc.
|
|
||||||
//
|
|
||||||
// Licensed under the Apache License, Version 2.0 (the "License");
|
|
||||||
// you may not use this file except in compliance with the License.
|
|
||||||
// You may obtain a copy of the License at
|
|
||||||
//
|
|
||||||
// http://www.apache.org/licenses/LICENSE-2.0
|
|
||||||
//
|
|
||||||
// Unless required by applicable law or agreed to in writing, software
|
|
||||||
// distributed under the License is distributed on an "AS IS" BASIS,
|
|
||||||
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
||||||
// See the License for the specific language governing permissions and
|
|
||||||
// limitations under the License.
|
|
||||||
//
|
|
||||||
////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
'use strict';
|
|
||||||
|
|
||||||
var Realm = require('realm');
|
|
||||||
|
|
||||||
exports.realmPathForFile = function(str) {
|
|
||||||
var path = Realm.defaultPath;
|
|
||||||
return path.substring(0, path.lastIndexOf("/") + 1) + str;
|
|
||||||
};
|
|
Loading…
Reference in New Issue