UNPKG

attr

Version:

A basic getter/setter mixin that abstracts accessing a data map.

81 lines (77 loc) 2.53 kB
/* eslint no-extend-native: 0*/ /* eslint no-use-extend-native/no-use-extend-native: 0*/ /* eslint babel/new-cap: 0*/ import 'chai'; import 'steal-mocha'; import Attr from '../attr'; const expect = chai.expect; const testObj = { name: 'juan' }; const myMap = { name: 'juan' }; let attr; let resp; describe('attr', () => { describe('when using contructor method', () => { beforeEach(() => { attr = new Attr(testObj); }); describe('when using attr as a getter', () => { beforeEach(() => { resp = attr('name'); }); it('returns correct value', () => { expect(resp).to.equal('juan'); }); }); describe('when using attr to set a single value', () => { beforeEach(() => { resp = attr('name', 'Optimus'); }); it('returns correct value', () => { expect(testObj.name).to.equal('Optimus'); }); }); describe('when using attr to set a many values at once', () => { beforeEach(() => { resp = attr({name: 'Optimus', allegiance: 'Autobots'}); }); it('sets correct values', () => { expect(testObj.name).to.equal('Optimus'); expect(testObj.allegiance).to.equal('Autobots'); }); }); }); describe('when using prototype method', () => { beforeEach(() => { Object.prototype.attr = Attr(); }); describe('when using attr as a getter', () => { beforeEach(() => { resp = myMap.attr('name'); }); it('returns correct value', () => { expect(resp).to.equal('juan'); }); }); describe('when using attr to set a single value', () => { beforeEach(() => { resp = myMap.attr('name', 'Optimus'); }); it('returns correct value', () => { expect(testObj.name).to.equal('Optimus'); }); }); describe('when using attr to set a many values at once', () => { beforeEach(() => { resp = myMap.attr({name: 'Optimus', allegiance: 'Autobots'}); }); it('sets correct values', () => { expect(testObj.name).to.equal('Optimus'); expect(testObj.allegiance).to.equal('Autobots'); }); }); }); });