Blame view
node_modules/loopback-datasource-juggler/test/include_util.test.js
4.65 KB
f7563de62
|
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 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 |
// Copyright IBM Corp. 2015,2016. All Rights Reserved. // Node module: loopback-datasource-juggler // This file is licensed under the MIT License. // License text available at https://opensource.org/licenses/MIT 'use strict'; /* eslint-disable camelcase */ var assert = require('assert'); var should = require('should'); var includeUtils = require('../lib/include_utils'); describe('include_util', function() { describe('#buildOneToOneIdentityMapWithOrigKeys', function() { it('should return an object with keys', function() { var objs = [ {id: 11, letter: 'A'}, {id: 22, letter: 'B'}, ]; var result = includeUtils.buildOneToOneIdentityMapWithOrigKeys(objs, 'id'); result.get(11).should.be.ok; result.get(22).should.be.ok; }); it('should overwrite keys in case of collision', function() { var objs = [ {id: 11, letter: 'A'}, {id: 22, letter: 'B'}, {id: 33, letter: 'C'}, {id: 11, letter: 'HA!'}, ]; var result = includeUtils.buildOneToOneIdentityMapWithOrigKeys(objs, 'id'); result.getKeys().should.containEql(11); result.getKeys().should.containEql(22); result.getKeys().should.containEql(33); result.get(11)['letter'].should.equal('HA!'); result.get(33)['letter'].should.equal('C'); }); }); describe('#buildOneToOneIdentityMapWithOrigKeys', function() { it('should return an object with keys', function() { var objs = [ {id: 11, letter: 'A'}, {id: 22, letter: 'B'}, ]; var result = includeUtils.buildOneToOneIdentityMapWithOrigKeys(objs, 'id'); result.get(11).should.be.ok; result.get(22).should.be.ok; result.getKeys().should.have.lengthOf(2); // no additional properties }); }); describe('#buildOneToManyIdentityMap', function() { it('should return an object with keys', function() { var objs = [ {id: 11, letter: 'A'}, {id: 22, letter: 'B'}, ]; var result = includeUtils.buildOneToManyIdentityMapWithOrigKeys(objs, 'id'); result.exist(11).should.be.true; result.exist(22).should.be.true; }); it('should collect keys in case of collision', function() { var objs = [ {fk_id: 11, letter: 'A'}, {fk_id: 22, letter: 'B'}, {fk_id: 33, letter: 'C'}, {fk_id: 11, letter: 'HA!'}, ]; var result = includeUtils.buildOneToManyIdentityMapWithOrigKeys(objs, 'fk_id'); result.get(11)[0]['letter'].should.equal('A'); result.get(11)[1]['letter'].should.equal('HA!'); result.get(33)[0]['letter'].should.equal('C'); }); }); }); describe('KVMap', function() { it('should allow to set and get value with key string', function() { var map = new includeUtils.KVMap(); map.set('name', 'Alex'); map.set('gender', true); map.set('age', 25); map.get('name').should.be.equal('Alex'); map.get('gender').should.be.equal(true); map.get('age').should.be.equal(25); }); it('should allow to set and get value with arbitrary key type', function() { var map = new includeUtils.KVMap(); map.set('name', 'Alex'); map.set(true, 'male'); map.set(false, false); map.set({isTrue: 'yes'}, 25); map.get('name').should.be.equal('Alex'); map.get(true).should.be.equal('male'); map.get(false).should.be.equal(false); map.get({isTrue: 'yes'}).should.be.equal(25); }); it('should not allow to get values with [] operator', function() { var map = new includeUtils.KVMap(); map.set('name', 'Alex'); (map['name'] === undefined).should.be.equal(true); }); it('should provide .exist() method for checking if key presented', function() { var map = new includeUtils.KVMap(); map.set('one', 1); map.set(2, 'two'); map.set(true, 'true'); map.exist('one').should.be.true; map.exist(2).should.be.true; map.exist(true).should.be.true; map.exist('two').should.be.false; }); it('should return array of original keys with .getKeys()', function() { var map = new includeUtils.KVMap(); map.set('one', 1); map.set(2, 'two'); map.set(true, 'true'); var keys = map.getKeys(); keys.should.containEql('one'); keys.should.containEql(2); keys.should.containEql(true); }); it('should allow to store and fetch arrays', function() { var map = new includeUtils.KVMap(); map.set(1, [1, 2, 3]); map.set(2, [2, 3, 4]); var valueOne = map.get(1); valueOne.should.be.eql([1, 2, 3]); valueOne.push(99); map.set(1, valueOne); var valueOneUpdated = map.get(1); valueOneUpdated.should.be.eql([1, 2, 3, 99]); }); }); |