@absolute/change-tracker-node-sdk
Version:
ChangeTracker SDK for Node.js
67 lines (48 loc) • 2.8 kB
JavaScript
const {Table, Row} = require('../src/models');
const {makeChangeTrackerService} = require('../src/changeTrackerService');
test('use changeTrackerService.store to perform diff and store data', async () => {
const generateToken = () => 'TESTTOKEN';
const store = () => ({ok: true});
const diff = () => (new Row('diffModel'));
const createTable = () => (new Table());
const changeTrackerService = makeChangeTrackerService({generateToken, store, diff, createTable})
const service = changeTrackerService('test', 'POSTSECRET', 10);
const result = await service.store('ACCOUNTTEST', 'currentTestUser', 'test row', new Row('prevModel'), new Row('nextModel'), '127.0.0.1');
expect(result).toMatchObject({ok: true});
})
test('changeTrackerService.store returns error in case of diff returns null', async () => {
const generateToken = () => 'TESTTOKEN';
const store = () => ({ok: true});
const diff = () => null;
const createTable = () => (new Table());
const changeTrackerService = makeChangeTrackerService({generateToken, store, diff, createTable})
const service = changeTrackerService('test', 'POSTSECRET');
const result = await service.store('ACCOUNTTEST', 'currentTestUser', 'test row', new Row('prevModel'), new Row('nextModel'), '127.0.0.1');
expect(result).toMatchObject({ok: false});
console.log(result.errorText)
})
test('changeTrackerService.store propagates remoteClient error', async () => {
const generateToken = () => 'TESTTOKEN';
const remoteClientResponse = {ok: false, errorText: 'TEST ERROR TEXT'};
const store = () => remoteClientResponse;
const diff = () => new Row('diffModel');
const createTable = () => (new Table());
const changeTrackerService = makeChangeTrackerService({generateToken, store, diff, createTable})
const service = changeTrackerService('test', 'GETSECRET','POSTSECRET');
const result = await service.store('ACCOUNTTEST', 'currentTestUser', 'test row', new Row('prevModel'), new Row('nextModel'), '127.0.0.1');
expect(result).toMatchObject(remoteClientResponse);
})
test('check changeTrackerService.getToken arguments', async () => {
const generateToken = (...args) => args.reduce((p, c) => p + '-' + c);
const defaultMockLambda = () => null;
const changeTrackerService = makeChangeTrackerService({
generateToken,
store: defaultMockLambda,
diff: defaultMockLambda,
createTable: defaultMockLambda
})
const service = changeTrackerService('test', 'GETSECRET', 'POSTSECRET');
const result = service.getToken('TABLENAME', 'ROWKEY');
const resultString ='GETSECRET-TABLENAME-ROWKEY-5';
expect(result).toBe(resultString);
})