UNPKG

dataset-sync

Version:

keep object based objects in sync

119 lines (112 loc) 3.48 kB
/* global beforeEach describe it expect */ const Item = require('../dataset-sync/item.js'); describe('Item', () => { describe('constructor', () => { it('can be initialized', () => { expect(new Item()).not.toBeNull(); }); it('sets an obj', () => { const subject = new Item({ client: { a: 1 } }); expect(subject.obj).toBeTruthy(); }); }); describe('checksum', () => { it('returns a checksum from a string', () => { expect(typeof Item.checksum('test')).toBe('string'); expect(Item.checksum('test')) .toBe('9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08'); }); }); describe('keys', () => { it('returns an array of keys', () => { const subject = new Item({ client: { a: 1, b: 2 } }); expect(subject.keys()).resolves.toEqual(expect.arrayContaining(['a', 'b'])); }); }); describe('keysChecksum', () => { let subject; beforeEach(() => { subject = new Item({ client: { a: 1, b: 2 } }); }); it('returns a checksum from all keys', () => { expect(subject.keysChecksum()).resolves.toBeString(); }); }); describe('valuesChecksum', () => { let subject; beforeEach(() => { subject = new Item({ client: { a: 1, b: 2 } }); }); it('returns a checksum from all keys', (done) => { subject.valuesChecksum().then((checksum) => { expect(checksum).toBeObject(); expect(checksum).toContainKeys(['a', 'b']); expect(checksum.a).toEqual(Item.checksum(String(1))); done(); }); }); }); describe('get', () => { it('returns the value of the item', () => { const subject = new Item({ client: { a: 1 } }); expect(subject.get('a')).resolves.toEqual(1); }); }); describe('set', () => { it('sets the value on the item', (done) => { const subject = new Item(); subject.set('a', 1).then(() => { expect(subject.get('a')).resolves.toEqual(1); done(); }); }); }); // Feature disabled describe.skip('cannot read', () => { let subject; beforeEach(() => { subject = new Item({ client: { a: 1, b: 2 }, read: false }); }); describe('get', () => { it('rejects', () => { // eslint-disable-line arrow-body-style return expect(subject.get('a')).toReject(); }); }); describe('keys', () => { it('rejects', () => { // eslint-disable-line arrow-body-style return expect(subject.keys()).toReject(); }); }); describe('keyValues', () => { it('rejects', () => { // eslint-disable-line arrow-body-style return expect(subject.keyValues()).toReject(); }); }); describe('keysChecksum', () => { it('rejects', () => { // eslint-disable-line arrow-body-style return expect(subject.keysChecksum()).toReject(); }); }); describe('valuesChecksum', () => { it('rejects', () => { // eslint-disable-line arrow-body-style return expect(subject.valuesChecksum()).toReject(); }); }); }); describe('cannot write', () => { let subject; beforeEach(() => { subject = new Item({ client: { a: 1, b: 2 }, write: false }); }); describe('set', () => { it('rejects', () => { expect(subject.set('a', 2)).toReject(); }); }); describe('remove', () => { it('rejects', () => { expect(subject.remove('a')).toReject(); }); }); }); });