184 lines
2.7 KiB
JavaScript
184 lines
2.7 KiB
JavaScript
'use strict';
|
|
|
|
var expect = require('chai').expect;
|
|
|
|
var Refs = require('../../');
|
|
|
|
|
|
describe('collection api', function() {
|
|
|
|
var refs = new Refs({ name: 'foos', collection: true }, { name: 'bar' });
|
|
|
|
|
|
describe('#contains', function() {
|
|
|
|
it('should not contain', function() {
|
|
|
|
// given
|
|
var a = { foos: [] };
|
|
|
|
// when
|
|
refs.bind(a, 'foos');
|
|
|
|
// then
|
|
expect(a.foos.contains({})).to.equal(false);
|
|
});
|
|
|
|
|
|
it('should contain', function() {
|
|
|
|
// given
|
|
var b = {}, a = { foos: [ b ] };
|
|
|
|
// when
|
|
refs.bind(a, 'foos');
|
|
|
|
// then
|
|
expect(a.foos.contains(b)).to.equal(true);
|
|
});
|
|
|
|
});
|
|
|
|
|
|
describe('#add', function() {
|
|
|
|
it('should add', function() {
|
|
|
|
// given
|
|
var a = {};
|
|
var b = { id: 'B' };
|
|
var c = { id: 'C' };
|
|
|
|
refs.bind(a, 'foos');
|
|
|
|
// when
|
|
a.foos.add(b);
|
|
a.foos.add(c);
|
|
|
|
// then
|
|
expect(a.foos).to.eql([ b, c ]);
|
|
});
|
|
|
|
|
|
it('should add at idx', function() {
|
|
|
|
// given
|
|
var a = {};
|
|
var b = { id: 'B' };
|
|
var c = { id: 'C' };
|
|
var d = { id: 'D' };
|
|
|
|
refs.bind(a, 'foos');
|
|
|
|
a.foos.add(b);
|
|
a.foos.add(c);
|
|
|
|
// when
|
|
a.foos.add(d, 1);
|
|
|
|
// then
|
|
expect(a.foos).to.eql([ b, d, c ]);
|
|
});
|
|
|
|
|
|
it('should move to front with idx', function() {
|
|
|
|
// given
|
|
var a = {};
|
|
var b = { id: 'B' };
|
|
var c = { id: 'C' };
|
|
var d = { id: 'D' };
|
|
|
|
refs.bind(a, 'foos');
|
|
|
|
a.foos.add(b);
|
|
a.foos.add(c);
|
|
a.foos.add(d);
|
|
|
|
// when
|
|
a.foos.add(c, 0);
|
|
|
|
// then
|
|
expect(a.foos).to.eql([ c, b, d ]);
|
|
});
|
|
|
|
|
|
it('should move to back with idx', function() {
|
|
|
|
// given
|
|
var a = {};
|
|
var b = { id: 'B' };
|
|
var c = { id: 'C' };
|
|
var d = { id: 'D' };
|
|
|
|
refs.bind(a, 'foos');
|
|
|
|
a.foos.add(b);
|
|
a.foos.add(c);
|
|
a.foos.add(d);
|
|
|
|
// when
|
|
a.foos.add(b, 2);
|
|
|
|
// then
|
|
expect(a.foos).to.eql([ c, d, b ]);
|
|
});
|
|
|
|
|
|
it('should inverse add', function() {
|
|
|
|
// given
|
|
var a = {};
|
|
var b = {};
|
|
|
|
refs.bind(a, 'foos');
|
|
|
|
// when
|
|
a.foos.add(b);
|
|
|
|
// then
|
|
expect(b.bar).to.equal(a);
|
|
});
|
|
|
|
|
|
it('should inverse add', function() {
|
|
|
|
// given
|
|
var a = {};
|
|
var b = {};
|
|
|
|
refs.bind(a, 'foos');
|
|
|
|
// when
|
|
a.foos.add(b);
|
|
|
|
// then
|
|
expect(b.bar).to.equal(a);
|
|
});
|
|
|
|
});
|
|
|
|
|
|
describe('#remove', function() {
|
|
|
|
it('should inverse remove', function() {
|
|
|
|
// given
|
|
var a = {};
|
|
var b = {};
|
|
|
|
refs.bind(a, 'foos');
|
|
|
|
// when
|
|
a.foos.add(b);
|
|
a.foos.remove(b);
|
|
|
|
// then
|
|
expect(a.foos).to.eql([ ]);
|
|
expect(b.bar).not.to.exist;
|
|
|
|
});
|
|
|
|
});
|
|
|
|
}); |