Code coverage report for spec/generic/unique.spec.js

Statements: 100% (37 / 37)      Branches: 50% (1 / 2)      Functions: 100% (6 / 6)      Lines: 100% (37 / 37)      Ignored: none     

All files » spec/generic/ » unique.spec.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 831 1   1   1 1 1     1       1       1   1 1   1 1 1 1   1 1 1     1 1 1 1     1     1     1 1 1     1       1         1     1 1 1     1       1       1       1      
Eif (typeof (window) === 'undefined') {
  var loki = require('../../src/lokijs.js');
}
describe('Constraints', function () {
 
  it('should retrieve records with by()', function () {
    var db = new loki();
    var coll = db.addCollection('users', {
      unique: ['username']
    });
    coll.insert({
      username: 'joe',
      name: 'Joe'
    });
    coll.insert({
      username: 'jack',
      name: 'Jack'
    });
    expect(coll.by('username', 'joe').name).toEqual('Joe');
 
    var byUsername = coll.by('username');
    expect(byUsername('jack').name).toEqual('Jack');
 
    var joe = coll.by('username', 'joe');
    joe.username = 'jack';
    expect(function () {
      coll.update(joe)
    }).toThrow(new Error('Duplicate key for property username: ' + joe.username));
    joe.username = 'jim';
    coll.update(joe);
    expect(byUsername('jim')).toEqual(joe);
  });
 
  it('should create a unique index', function () {
    var db = new loki();
    var coll2 = db.addCollection('moreusers');
    coll2.insert({
      name: 'jack'
    });
    coll2.insert({
      name: 'tim'
    });
    coll2.ensureUniqueIndex('name');
  });
 
  it('should not add record with null index', function() {
    var db = new loki();
    var coll3 = db.addCollection('nullusers', {
      unique: ['username']
    });
    coll3.insert({
      username: 'joe',
      name: 'Joe'
    });
    coll3.insert({
      username: null,
      name: 'Jack'
    });
 
    expect(Object.keys(coll3.constraints.unique.username.keyMap).length).toEqual(1);
  });
 
  it('should not throw an error id multiple nulls are added', function() {
    var db = new loki();
    var coll4 = db.addCollection('morenullusers', {
      unique: ['username']
    });
    coll4.insert({
      username: 'joe',
      name: 'Joe'
    });
    coll4.insert({
      username: null,
      name: 'Jack'
    });
    coll4.insert({
      username: null,
      name: 'Jake'
    });
    expect(Object.keys(coll4.constraints.unique.username.keyMap).length).toEqual(1);
  });
});