Example #1
0
    testListSnapshot: function() {
        var realm = new Realm({schema: [schemas.LinkTypes, schemas.TestObject]});
        var objects = realm.objects('TestObject');
        var array;

        realm.write(function() {
            var obj = realm.create('LinkTypesObject', [[1], [2], [[3], [4]]]);
            array = obj.arrayCol;
        });

        var objectsCopy = objects.snapshot();
        var arrayCopy = array.snapshot();

        TestCase.assertEqual(objectsCopy.length, 4);
        TestCase.assertEqual(arrayCopy.length, 2);

        realm.write(function() {
            array.push([5]);
            TestCase.assertEqual(objectsCopy.length, 4);
            TestCase.assertEqual(arrayCopy.length, 2);

            TestCase.assertEqual(objectsCopy.snapshot().length, 4);
            TestCase.assertEqual(arrayCopy.snapshot().length, 2);

            TestCase.assertEqual(objects.snapshot().length, 5);
            TestCase.assertEqual(array.snapshot().length, 3);

            realm.delete(array[0]);
            TestCase.assertEqual(objectsCopy.length, 4);
            TestCase.assertEqual(arrayCopy.length, 2);
            TestCase.assertEqual(arrayCopy[0], null);
        });
    },
Example #2
0
    testListEnumerate: function() {
        var realm = new Realm({schema: [schemas.LinkTypes, schemas.TestObject]});
        var obj;

        realm.write(function() {
            obj = realm.create('LinkTypesObject', {
                objectCol: {doubleCol: 1},
                objectCol1: {doubleCol: 2},
                arrayCol: [],
            });
        });

        var index;
        for (index in obj.arrayCol) {
            TestCase.assertTrue(false, "No objects should have been enumerated: " + index);
        }

        realm.write(function() {
            obj.arrayCol = [{doubleCol: 0}, {doubleCol: 1}];
            TestCase.assertEqual(obj.arrayCol.length, 2);
        });

        var count = 0;
        var keys = Object.keys(obj.arrayCol);
        for (index in obj.arrayCol) {
            TestCase.assertEqual(count++, +index);
            TestCase.assertEqual(keys[index], index);
        }

        TestCase.assertEqual(count, 2);
        TestCase.assertEqual(keys.length, 2);
    },
Example #3
0
    testLinkTypesPropertySetters: function() {
        var realm = new Realm({schema: [schemas.LinkTypes, schemas.TestObject]});
        var objects = realm.objects('TestObject');
        var obj;

        realm.write(function() {
            obj = realm.create('LinkTypesObject', {
                objectCol: {doubleCol: 1},
                objectCol1: null,
                arrayCol: [{doubleCol: 3}],
            });
        });

        TestCase.assertEqual(objects.length, 2);

        TestCase.assertThrows(function() {
            obj.objectCol1 = obj.objectCol;
        }, 'can only set property values in a write transaction');

        // set/reuse object property
        realm.write(function() {
            obj.objectCol1 = obj.objectCol;
        });
        TestCase.assertEqual(obj.objectCol1.doubleCol, 1);
        //TestCase.assertEqual(obj.objectCol, obj.objectCol1);
        TestCase.assertEqual(objects.length, 2);

        realm.write(function() {
            obj.objectCol = null;
            obj.objectCol1 = null;
        });
        TestCase.assertEqual(obj.objectCol, null);
        TestCase.assertEqual(obj.objectCol1, null);

        // set object as JSON
        realm.write(function() {
            obj.objectCol = {doubleCol: 1};
        });
        TestCase.assertEqual(obj.objectCol.doubleCol, 1);
        TestCase.assertEqual(objects.length, 3);

        // set array property
        realm.write(function() {
            obj.arrayCol = [
                obj.arrayCol[0],
                obj.objectCol,
                realm.create('TestObject', {doubleCol: 2}),
            ];
        });

        TestCase.assertEqual(objects.length, 4);
        TestCase.assertEqual(obj.arrayCol.length, 3);
        TestCase.assertEqual(obj.arrayCol[0].doubleCol, 3);
        TestCase.assertEqual(obj.arrayCol[1].doubleCol, 1);
        TestCase.assertEqual(obj.arrayCol[2].doubleCol, 2);
    },
Example #4
0
    testNotifications: function() {
        var realm = new Realm({schema: []});
        var notificationCount = 0;
        var notificationName;

        realm.addListener('change', function(realm, name) {
            notificationCount++;
            notificationName = name;
        });

        TestCase.assertEqual(notificationCount, 0);
        realm.write(function() {});
        TestCase.assertEqual(notificationCount, 1);
        TestCase.assertEqual(notificationName, 'change');

        var secondNotificationCount = 0;
        function secondNotification(realm, name) {
            secondNotificationCount++;
        }

        // The listener should only be added once.
        realm.addListener('change', secondNotification);
        realm.addListener('change', secondNotification);

        realm.write(function() {});
        TestCase.assertEqual(notificationCount, 2);
        TestCase.assertEqual(secondNotificationCount, 1);

        realm.removeListener('change', secondNotification);
        realm.write(function() {});
        TestCase.assertEqual(notificationCount, 3);
        TestCase.assertEqual(secondNotificationCount, 1);

        realm.removeAllListeners();
        realm.write(function() {});
        TestCase.assertEqual(notificationCount, 3);
        TestCase.assertEqual(secondNotificationCount, 1);

        TestCase.assertThrows(function() {
            realm.addListener('invalid', function() {});
        });

        realm.addListener('change', function() {
            throw new Error('error');
        });

        TestCase.assertThrows(function() {
            realm.write(function() {});
        });
    },
Example #5
0
    testLinkTypesPropertyGetters: function() {
        var realm = new Realm({schema: [schemas.LinkTypes, schemas.TestObject]});
        var obj = null;

        realm.write(function() {
            obj = realm.create('LinkTypesObject', {
                objectCol: {doubleCol: 1},
                objectCol1: null,
                arrayCol: [{doubleCol: 3}],
            });
        });

        var objVal = obj.objectCol;
        TestCase.assertEqual(typeof objVal, 'object');
        TestCase.assertNotEqual(objVal, null);
        TestCase.assertEqual(objVal.doubleCol, 1);

        TestCase.assertEqual(obj.objectCol1, null);

        var arrayVal = obj.arrayCol;
        TestCase.assertEqual(typeof arrayVal, 'object');
        TestCase.assertNotEqual(arrayVal, null);
        TestCase.assertEqual(arrayVal.length, 1);
        TestCase.assertEqual(arrayVal[0].doubleCol, 3);
    },
Example #6
0
    testListSorted: function() {
        var realm = new Realm({schema: [schemas.PersonObject, schemas.PersonList]});
        var list;

        realm.write(function() {
            var object = realm.create('PersonList', {list: [
                {name: 'Ari', age: 10},
                {name: 'Tim', age: 11},
                {name: 'Bjarne', age: 12},
                {name: 'Alex', age: 12, married: true}
            ]});
            realm.create('PersonObject', {name: 'NotInList', age: 10});

            list = object.list;
        });

        var names = function(results) {
            return results.map(function(object) {
                return object.name;
            });
        };

        var objects = list.sorted('name', true);
        TestCase.assertArraysEqual(names(objects), ['Tim', 'Bjarne', 'Ari', 'Alex']);

        objects = list.sorted(['age', 'name']);
        TestCase.assertArraysEqual(names(objects), ['Ari', 'Tim', 'Alex', 'Bjarne']);
    },
Example #7
0
    testListLength: function() {
        var realm = new Realm({schema: [schemas.LinkTypes, schemas.TestObject]});
        var array;

        realm.write(function() {
            var obj = realm.create('LinkTypesObject', {
                objectCol: {doubleCol: 1},
                objectCol1: {doubleCol: 2},
                arrayCol: [{doubleCol: 3}],
            });

            array = obj.arrayCol;
            TestCase.assertEqual(array.length, 1);

            obj.arrayCol = [];
            TestCase.assertEqual(array.length, 0);

            obj.arrayCol = [{doubleCol: 1}, {doubleCol: 2}];
            TestCase.assertEqual(array.length, 2);

            TestCase.assertThrows(function() {
                array.length = 0;
            }, 'cannot set length property on lists');
        });

        TestCase.assertEqual(array.length, 2);
    },
Example #8
0
    testListShift: function() {
        var realm = new Realm({schema: [schemas.LinkTypes, schemas.TestObject]});
        var array;

        realm.write(function() {
            var obj = realm.create('LinkTypesObject', {
                objectCol: {doubleCol: 1},
                objectCol1: {doubleCol: 2},
                arrayCol: [{doubleCol: 3}, {doubleCol: 4}],
            });

            array = obj.arrayCol;
            TestCase.assertEqual(array.shift().doubleCol, 3);
            TestCase.assertEqual(array.shift().doubleCol, 4);
            TestCase.assertEqual(array.length, 0);

            TestCase.assertEqual(array.shift(), undefined);

            TestCase.assertThrows(function() {
                array.shift(1);
            });
        });

        TestCase.assertThrows(function() {
            array.shift();
        }, 'can only shift in a write transaction');
    },
Example #9
0
    testListUnshift: function() {
        var realm = new Realm({schema: [schemas.LinkTypes, schemas.TestObject]});
        var array;

        realm.write(function() {
            var obj = realm.create('LinkTypesObject', {
                objectCol: {doubleCol: 1},
                objectCol1: {doubleCol: 2},
                arrayCol: [{doubleCol: 3}],
            });

            array = obj.arrayCol;
            TestCase.assertEqual(array.length, 1);

            TestCase.assertEqual(array.unshift({doubleCol: 5}), 2);
            TestCase.assertEqual(array.length, 2);
            TestCase.assertEqual(array[0].doubleCol, 5);

            TestCase.assertEqual(array.unshift(obj.objectCol, obj.objectCol1), 4);
            TestCase.assertEqual(array.length, 4);
            TestCase.assertEqual(array[0].doubleCol, 1);
            TestCase.assertEqual(array[1].doubleCol, 2);
        });

        TestCase.assertEqual(array.length, 4);
        TestCase.assertThrows(function() {
            array.unshift({doubleCol: 1});
        }, 'can only unshift in a write transaction');
    },
Example #10
0
  testPropertiesOfData: () => {

    const TestingSchema = {
      name: 'Testing',
      properties: {
        n: 'int',
        someData: 'data'
      }
    };

    // Create a new realm
    const realm = new Realm({schema: [TestingSchema]});
    // Add a bunch of objects, with "data" to it
    realm.write(() => {
      for(let i = 0; i < NUMBER_OF_OBJECTS; i++) {
        realm.create('Testing', {
          n: i,
          someData: new ArrayBuffer(BUFFER_LENGTH),
        });
      }
    });

    for (let readCycle = 0; readCycle < READ_CYCLES; readCycle++) {
      let allObjects = realm.objects('Testing');
      let totalBytes = 0;
      for (let object of allObjects) {
        let toBeFreed = object.someData;
        // Accessing the byteLength of the objects someData property
        totalBytes += toBeFreed.byteLength;
      }
      // console.log(`Read a total of ${totalBytes} bytes.`);
    }
  }
Example #11
0
function writeCharacterToRealm(character: Character) {
  realm.write(() => {
    let realmobject = realm.create('Character', {
      id: character.id,
      name: character.name,
      description: character.description,
      wiki: character.wiki,
      thumbnail: character.thumbnail,
      portraitImg: character.portraitImg,
    });
    character.comics.map((item, index) => {
      realmobject.comics.push(item);
    });

    character.series.map((item, index) => {
      realmobject.series.push(item);
    });

    character.stories.map((item, index) => {
      realmobject.stories.push(item);
    });

    character.events.map((item, index) => {
      realmobject.events.push(item);
    });

    character.urls.map((item, index) => {
      realmobject.urls.push(item);
    });
  });
}
Example #12
0
function removePopularCharacter(char: Character) {
  realm.write(() => {
    var query = `id = "${char.id}"`;
    let character = realm.objects('Character').filtered(query);
    realm.delete(character);
  });
}
Example #13
0
export function clearRealmCache(objectName, idExclusions) {
  try {
    const objects = realmInstance.objects(objectName);
    const expiredItems = [];
    const excludedIds = [];
    for (let i = 0; i < idExclusions.length; i++) {
      excludedIds.push(idExclusions[i].id);
    }

    // Standard JS array.filter doesn't work with these Realm objects, so we have to take care of this filtering manually.
    // Current version of Realm.io does not support exclusion queries for strings.
    for (let i = objects.length - 1; i >= 0; i--) {
      let expired = true;
      for (let j = excludedIds.length - 1; j >= 0; j--) {
        if (objects[i].id === excludedIds[j]) {
          expired = false;
        }
      }
      if (expired) {
        expiredItems.push(objects[i]);
      }
    }

    realmInstance.write(() => {
      realmInstance.delete(expiredItems);
    });
  } catch (e) {
    console.error(e);
  }
}
Example #14
0
    testEnumerablePropertyNames: function() {
        var realm = new Realm({schema: [schemas.BasicTypes]});
        var object;

        realm.write(function() {
            object = realm.create('BasicTypesObject', {
                boolCol:   true,
                intCol:    1,
                floatCol:  1.1,
                doubleCol: 1.11,
                stringCol: 'string',
                dateCol:   new Date(1),
                dataCol:   RANDOM_DATA,
            });
        });

        var propNames = Object.keys(schemas.BasicTypes.properties);
        TestCase.assertArraysEqual(Object.keys(object), propNames, 'Object.keys');

        for (var key in object) {
            TestCase.assertEqual(key, propNames.shift());
        }

        TestCase.assertEqual(propNames.length, 0);
    },
 onPress={()=>{
     realm.write(()=>{
       let cars=realm.objects('Car');
       let car=cars.filtered('id==3');
       realm.delete(car); 
     })
 }}
 onPress={()=>{
     realm.write(()=>{
       //进行更新id=1的数据,drive修改成赵云
       realm.create('Car',{id:1,drive:'赵云'},true);
       ToastAndroid.show('表修改完成...',ToastAndroid.SHORT);
     })
 }}
Example #17
0
    testResultsInvalidation: function() {
        var realm = new Realm({schema: [schemas.TestObject]});
        realm.write(function() {
            for (var i = 10; i > 0; i--) {
                realm.create('TestObject', [i]);
            }
        });

        var resultsVariants = [
            realm.objects('TestObject'),
            realm.objects('TestObject').filtered('doubleCol > 1'),
            realm.objects('TestObject').filtered('doubleCol > 1').sorted('doubleCol'),
            realm.objects('TestObject').filtered('doubleCol > 1').snapshot()
        ];

        // test isValid
        resultsVariants.forEach(function(objects) {
            TestCase.assertEqual(objects.isValid(), true);
        });

        // close and test invalidated accessors
        realm.close();
        realm = new Realm({
            schemaVersion: 1,
            schema: [schemas.TestObject, schemas.BasicTypes]
        });

        resultsVariants.forEach(function(objects) {
            TestCase.assertEqual(objects.isValid(), false);
            TestCase.assertThrows(function() { objects[0]; });
            TestCase.assertThrows(function() { objects.filtered('doubleCol < 42'); });
            TestCase.assertThrows(function() { objects.sorted('doubleCol', true); });
            TestCase.assertThrows(function() { objects.snapshot(); });
        });
    },
 update: function(todo, callback) {
   if (!callback) return;
   repository.write(() => {
     callback();
     todo.updatedAt = new Date();
   });
 }
Example #19
0
    testRealmConstructorSchemaVersion: function() {
        var defaultRealm = new Realm({schema: []});
        TestCase.assertEqual(defaultRealm.schemaVersion, 0);

        TestCase.assertThrows(function() {
            new Realm({schemaVersion: 1});
        }, "Realm already opened at a different schema version");
        
        TestCase.assertEqual(new Realm().schemaVersion, 0);
        TestCase.assertEqual(new Realm({schemaVersion: 0}).schemaVersion, 0);

        var realm = new Realm({path: 'test1.realm', schema: [], schemaVersion: 1});
        TestCase.assertEqual(realm.schemaVersion, 1);
        // FIXME - enable once Realm exposes a schema object
        //TestCase.assertEqual(realm.schema.length, 0);
 
        realm.close();
        // FIXME - enable once realm initialization supports schema comparison
        // TestCase.assertThrows(function() {
        //     realm = new Realm({path: testPath, schema: [schemas.TestObject], schemaVersion: 1});
        // }, "schema changes require updating the schema version");

        realm = new Realm({path: 'test1.realm', schema: [schemas.TestObject], schemaVersion: 2});
        realm.write(function() {
            realm.create('TestObject', {doubleCol: 1});
        });
        TestCase.assertEqual(realm.objects('TestObject')[0].doubleCol, 1)
    },
Example #20
0
    testRealmObjects: function() {
        var realm = new Realm({schema: [schemas.PersonObject, schemas.DefaultValues, schemas.TestObject]});

        realm.write(function() {
            realm.create('PersonObject', {name: 'Ari', age: 10});
            realm.create('PersonObject', {name: 'Tim', age: 11});
            realm.create('PersonObject', {name: 'Bjarne', age: 12});
            realm.create('PersonObject', {name: 'Alex', age: 12, married: true});
        });

        // Should be able to pass constructor for getting objects.
        var objects = realm.objects(schemas.PersonObject);
        TestCase.assertTrue(objects[0] instanceof schemas.PersonObject);

        function InvalidPerson() {}
        InvalidPerson.schema = schemas.PersonObject.schema;

        TestCase.assertThrows(function() {
            realm.objects();
        });
        TestCase.assertThrows(function() {
            realm.objects([]);
        });
        TestCase.assertThrows(function() {
            realm.objects('InvalidClass');
        });
        TestCase.assertThrows(function() {
            realm.objects('PersonObject', 'truepredicate');
        });
        TestCase.assertThrows(function() {
            realm.objects(InvalidPerson);
        });
    },
Example #21
0
 _deleteItem (name) {
   let itemToDelete = favs.filtered('name = $0', name)
   realm.write(() => {
     realm.delete(itemToDelete)
   })
   this.forceUpdate()
 }
Example #22
0
 _addItem () {
   if (this.state.input === '') return
   realm.write(() => {
     realm.create('Categories', { name: this.state.input })
   })
   this.setState({ input: '' })
 }
Example #23
0
    testDates: function() {
        Realm.copyBundledRealmFiles();

        // test file format upgrade
        var realm_v3 = new Realm({path: 'dates-v3.realm', schema: [schemas.DateObject]});
        TestCase.assertEqual(realm_v3.objects('Date').length, 2);
        TestCase.assertEqual(realm_v3.objects('Date')[0].currentDate.getTime(), 1462500087955);
        TestCase.assertEqual(realm_v3.objects('Date')[0].nullDate.getTime(), 1462500087955);
        TestCase.assertEqual(realm_v3.objects('Date')[1].currentDate.getTime(), -10000);
        TestCase.assertEqual(realm_v3.objects('Date')[1].nullDate, null);

        // get new file format is not upgraded
        var realm_v5 = new Realm({path: 'dates-v5.realm', schema: [schemas.DateObject]});
        TestCase.assertEqual(realm_v5.objects('Date').length, 2);
        TestCase.assertEqual(realm_v3.objects('Date')[0].currentDate.getTime(), 1462500087955);
        TestCase.assertEqual(realm_v3.objects('Date')[0].nullDate.getTime(), 1462500087955);
        TestCase.assertEqual(realm_v3.objects('Date')[1].currentDate.getTime(), -10000);
        TestCase.assertEqual(realm_v3.objects('Date')[1].nullDate, null);
        
        // test different dates
        var realm = new Realm({schema: [schemas.DateObject]});
        realm.write(function() {
            realm.create('Date', { currentDate: new Date(10000) });
            realm.create('Date', { currentDate: new Date(-10000) });
            realm.create('Date', { currentDate: new Date(1000000000000) });
            realm.create('Date', { currentDate: new Date(-1000000000000) });
        });
        TestCase.assertEqual(realm.objects('Date')[0].currentDate.getTime(), 10000);
        TestCase.assertEqual(realm.objects('Date')[1].currentDate.getTime(), -10000);
        TestCase.assertEqual(realm.objects('Date')[2].currentDate.getTime(), 1000000000000);
        TestCase.assertEqual(realm.objects('Date')[3].currentDate.getTime(), -1000000000000);
    }
Example #24
0
 ].forEach(function(TypedArray) {
     var array = new TypedArray(RANDOM_DATA.buffer);
     realm.write(function() {
         object.dataCol = array;
     });
     TestCase.assertArraysEqual(new TypedArray(object.dataCol), array, TypedArray.name);
 });
Example #25
0
 ].forEach(function(range) {
     var array = RANDOM_DATA.subarray(range[0], range[1]);
     realm.write(function() {
         // Use a partial "view" of the underlying ArrayBuffer.
         object.dataCol = new Uint8Array(RANDOM_DATA.buffer, range[0], array.length);
     });
     TestCase.assertArraysEqual(new Uint8Array(object.dataCol), array, range.join('...'));
 });
Example #26
0
const writeTransactionCreateCarAndPerson = () => {
    let realm = new Realm({ schema: [Car, Person] });
    realm.write(() => {
        realm.create('Car', {
            id: 1,
            make: 'Honda',
            model: 'Civic',
            miles: 1000,
        }, true);
    });
    realm.write(() => {
        realm.create('Person', {
            id: 1,
            name: 'Charlie'
        }, true);
    });
}
  save: function(todo) {
    if (repository.objects('Todo').filtered("title = '" + todo.title + "'").length) return;

    repository.write(() => {
      todo.updatedAt = new Date();
      repository.create('Todo', todo);
    })
  },
Example #28
0
export const delContactLS = (obj) => {

  realm.write(() => {
    let rem = realm.objectForPrimaryKey(contactToAdd.schema.name, obj.numberValue)
    console.log(rem)
    realm.delete(rem)
  })
}
Example #29
0
 _completeItem(id){
   realm.write(() => {
     var item = tasks.filtered('id = $0',id)[0]
     item.completed = !item.completed
     let data = this.getData(this.props.visibility)
     this._updateData(data)
   })  
 }
 onPress={()=>
    realm.write(()=>{
       realm.create('Car',{id:1,name:'Benz',model:'C350',drive:'张三'});
       realm.create('Car',{id:2,name:'Benz',model:'E250',drive:'李四'});
       realm.create('Car',{id:3,name:'BMW',model:'740Li',drive:'王五'});
       realm.create('Car',{id:4,name:'Mazda',model:'CX-5',drive:'赵六'});
       realm.create('Car',{id:5,name:'大众',model:'辉腾',drive:'张飞'});
       ToastAndroid.show('添加数据完成...',ToastAndroid.SHORT);
     })