more extensive upsert tests
This commit is contained in:
parent
e9aa46a8f7
commit
dcc159365e
|
@ -275,6 +275,7 @@ bool ObjectStore::create_tables(Group *group, Schema &target_schema, bool update
|
||||||
case PropertyTypeObject:
|
case PropertyTypeObject:
|
||||||
case PropertyTypeArray: {
|
case PropertyTypeArray: {
|
||||||
TableRef link_table = ObjectStore::table_for_object_type(group, target_prop.object_type);
|
TableRef link_table = ObjectStore::table_for_object_type(group, target_prop.object_type);
|
||||||
|
REALM_ASSERT(link_table);
|
||||||
target_prop.table_column = table->add_column_link(DataType(target_prop.type), target_prop.name, *link_table);
|
target_prop.table_column = table->add_column_link(DataType(target_prop.type), target_prop.name, *link_table);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -72,7 +72,7 @@ var RealmTests = {
|
||||||
},
|
},
|
||||||
|
|
||||||
testRealmCreate: function() {
|
testRealmCreate: function() {
|
||||||
var realm = new Realm({schema: [TestObjectSchema]});
|
var realm = new Realm({schema: [IntPrimaryObjectSchema, AllTypesObjectSchema, TestObjectSchema]});
|
||||||
realm.write(function() {
|
realm.write(function() {
|
||||||
realm.create('TestObject', [1]);
|
realm.create('TestObject', [1]);
|
||||||
realm.create('TestObject', {'doubleCol': 2});
|
realm.create('TestObject', {'doubleCol': 2});
|
||||||
|
@ -83,8 +83,7 @@ var RealmTests = {
|
||||||
TestCase.assertEqual(objects[0].doubleCol, 1, 'wrong object property value');
|
TestCase.assertEqual(objects[0].doubleCol, 1, 'wrong object property value');
|
||||||
TestCase.assertEqual(objects[1].doubleCol, 2, 'wrong object property value');
|
TestCase.assertEqual(objects[1].doubleCol, 2, 'wrong object property value');
|
||||||
|
|
||||||
// test primary object
|
// test int primary object
|
||||||
realm = new Realm({path: TestUtil.realmPathForFile('intPrimary.realm'), schema: [IntPrimaryObjectSchema, StringPrimaryObjectSchema]});
|
|
||||||
realm.write(function() {
|
realm.write(function() {
|
||||||
var obj0 = realm.create('IntPrimaryObject', [0, 'val0']);
|
var obj0 = realm.create('IntPrimaryObject', [0, 'val0']);
|
||||||
|
|
||||||
|
@ -103,17 +102,19 @@ var RealmTests = {
|
||||||
TestCase.assertEqual(obj0.valueCol, 'newVal0');
|
TestCase.assertEqual(obj0.valueCol, 'newVal0');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// test upsert with all type and string primary object
|
||||||
realm.write(function() {
|
realm.write(function() {
|
||||||
var obj0 = realm.create('StringPrimaryObject', ['0', true, 1, 1.1, 1.11, '1', new Date(1), '1']);
|
var values = ['0', true, 1, 1.1, 1.11, '1', new Date(1), '1', [1], []];
|
||||||
|
var obj0 = realm.create('AllTypesObject', values);
|
||||||
|
|
||||||
TestCase.assertThrows(function() {
|
TestCase.assertThrows(function() {
|
||||||
realm.create('StringPrimaryObject', ['0', true, 1, 1.1, 1.11, '1', new Date(1), '1']);
|
realm.create('AllTypesObject', values);
|
||||||
});
|
});
|
||||||
realm.create('StringPrimaryObject', ['1', true, 2, 2.2, 2.11, '2', new Date(2), '2'], true);
|
realm.create('AllTypesObject', ['1', false, 2, 2.2, 2.11, '2', new Date(2), '2', null, [[2]]], true);
|
||||||
var objects = realm.objects('StringPrimaryObject');
|
var objects = realm.objects('AllTypesObject');
|
||||||
TestCase.assertEqual(objects.length, 2);
|
TestCase.assertEqual(objects.length, 2);
|
||||||
|
|
||||||
realm.create('StringPrimaryObject', ['0', false, 2, 2.2, 2.22, '2', new Date(2), '2'], true);
|
realm.create('AllTypesObject', ['0', false, 2, 2.2, 2.22, '2', new Date(2), '2', null, [[2]]], true);
|
||||||
TestCase.assertEqual(objects.length, 2);
|
TestCase.assertEqual(objects.length, 2);
|
||||||
TestCase.assertEqual(obj0.stringCol, '2');
|
TestCase.assertEqual(obj0.stringCol, '2');
|
||||||
TestCase.assertEqual(obj0.boolCol, false);
|
TestCase.assertEqual(obj0.boolCol, false);
|
||||||
|
@ -122,11 +123,13 @@ var RealmTests = {
|
||||||
TestCase.assertEqual(obj0.doubleCol, 2.22);
|
TestCase.assertEqual(obj0.doubleCol, 2.22);
|
||||||
TestCase.assertEqual(obj0.dateCol.getTime(), 2);
|
TestCase.assertEqual(obj0.dateCol.getTime(), 2);
|
||||||
TestCase.assertEqual(obj0.dataCol, '2');
|
TestCase.assertEqual(obj0.dataCol, '2');
|
||||||
|
TestCase.assertEqual(obj0.objectCol, null);
|
||||||
|
TestCase.assertEqual(obj0.arrayCol.length, 1);
|
||||||
|
|
||||||
realm.create('StringPrimaryObject', { primaryCol: '0' }, true);
|
realm.create('AllTypesObject', { primaryCol: '0' }, true);
|
||||||
TestCase.assertEqual(obj0.stringCol, '2');
|
TestCase.assertEqual(obj0.stringCol, '2');
|
||||||
|
|
||||||
realm.create('StringPrimaryObject', { primaryCol: '0', stringCol: '3' }, true);
|
realm.create('AllTypesObject', { primaryCol: '0', stringCol: '3', objectCol: [0] }, true);
|
||||||
TestCase.assertEqual(obj0.stringCol, '3');
|
TestCase.assertEqual(obj0.stringCol, '3');
|
||||||
TestCase.assertEqual(obj0.boolCol, false);
|
TestCase.assertEqual(obj0.boolCol, false);
|
||||||
TestCase.assertEqual(obj0.intCol, 2);
|
TestCase.assertEqual(obj0.intCol, 2);
|
||||||
|
@ -134,6 +137,8 @@ var RealmTests = {
|
||||||
TestCase.assertEqual(obj0.doubleCol, 2.22);
|
TestCase.assertEqual(obj0.doubleCol, 2.22);
|
||||||
TestCase.assertEqual(obj0.dateCol.getTime(), 2);
|
TestCase.assertEqual(obj0.dateCol.getTime(), 2);
|
||||||
TestCase.assertEqual(obj0.dataCol, '2');
|
TestCase.assertEqual(obj0.dataCol, '2');
|
||||||
|
TestCase.assertEqual(obj0.objectCol.doubleCol, 0);
|
||||||
|
TestCase.assertEqual(obj0.arrayCol.length, 1);
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
|
|
@ -68,17 +68,20 @@ var IntPrimaryObjectSchema = {
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
var StringPrimaryObjectSchema = {
|
var AllTypesObjectSchema = {
|
||||||
name: 'StringPrimaryObject',
|
name: 'AllTypesObject',
|
||||||
primaryKey: 'primaryCol',
|
primaryKey: 'primaryCol',
|
||||||
properties: [
|
properties: [
|
||||||
{name: 'primaryCol', type: RealmType.String},
|
{name: 'primaryCol',type: RealmType.String},
|
||||||
{name: 'boolCol', type: RealmType.Bool},
|
{name: 'boolCol', type: RealmType.Bool},
|
||||||
{name: 'intCol', type: RealmType.Int},
|
{name: 'intCol', type: RealmType.Int},
|
||||||
{name: 'floatCol', type: RealmType.Float},
|
{name: 'floatCol', type: RealmType.Float},
|
||||||
{name: 'doubleCol', type: RealmType.Double},
|
{name: 'doubleCol', type: RealmType.Double},
|
||||||
{name: 'stringCol', type: RealmType.String},
|
{name: 'stringCol', type: RealmType.String},
|
||||||
{name: 'dateCol', type: RealmType.Date},
|
{name: 'dateCol', type: RealmType.Date},
|
||||||
{name: 'dataCol', type: RealmType.Data},
|
{name: 'dataCol', type: RealmType.Data},
|
||||||
|
{name: 'objectCol', type: 'TestObject'},
|
||||||
|
{name: 'arrayCol', type: RealmType.Array, objectType: 'TestObject'},
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue