Unit Testing: > 90%
This commit is contained in:
parent
90121621f3
commit
a620b12b95
|
@ -11,3 +11,11 @@ test('encode / decode', () => {
|
||||||
|
|
||||||
expect(result).toEqual({ type: 'TEST', payload: 'PAYLOAD' });
|
expect(result).toEqual({ type: 'TEST', payload: 'PAYLOAD' });
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('encode / decode: string', () => {
|
||||||
|
const data = encode('{ "type": "TEST", "payload": "PAYLOAD" }');
|
||||||
|
const result = decode(data);
|
||||||
|
|
||||||
|
expect(result).toEqual({ type: 'TEST', payload: 'PAYLOAD' });
|
||||||
|
});
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
/* global jest, test, expect, beforeEach */
|
/* global jest, test, expect, beforeEach, afterEach */
|
||||||
import util from 'util';
|
import util from 'util';
|
||||||
import bleno from 'bleno';
|
import bleno from 'bleno';
|
||||||
|
|
||||||
|
@ -18,6 +18,11 @@ beforeEach(() => {
|
||||||
decode = jest.fn().mockReturnValue('mockDecode');
|
decode = jest.fn().mockReturnValue('mockDecode');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
encode = null;
|
||||||
|
decode = null;
|
||||||
|
});
|
||||||
|
|
||||||
test('new Characteristic', () => {
|
test('new Characteristic', () => {
|
||||||
const characteristic = Characteristic('mockUUID', Parent, util, 'mockDescriptor', { encode, decode });
|
const characteristic = Characteristic('mockUUID', Parent, util, 'mockDescriptor', { encode, decode });
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,165 @@
|
||||||
|
/* global jest, test, expect, beforeEach, afterEach */
|
||||||
|
import { BLENO_CONFIG } from '../../common/config';
|
||||||
|
|
||||||
|
import { Bleno } from './index';
|
||||||
|
|
||||||
|
let encode = null;
|
||||||
|
let decode = null;
|
||||||
|
let mockCharacteristic = null;
|
||||||
|
let BLENO = null;
|
||||||
|
|
||||||
|
jest.mock('./service', () => jest.fn().mockReturnValue('mockService'));
|
||||||
|
jest.mock('./characteristic', () => () => mockCharacteristic);
|
||||||
|
jest.mock('./descriptor', () => jest.fn());
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
encode = jest.fn().mockReturnValue('mockEncode');
|
||||||
|
decode = jest.fn().mockReturnValue('mockDecode');
|
||||||
|
|
||||||
|
mockCharacteristic = { updateState: jest.fn() };
|
||||||
|
|
||||||
|
BLENO = {
|
||||||
|
Descriptor: 'mockDescriptor',
|
||||||
|
Characteristic: 'mockCharacteristic',
|
||||||
|
startAdvertising: jest.fn(),
|
||||||
|
stopAdvertising: jest.fn(),
|
||||||
|
setServices: jest.fn(),
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
encode = null;
|
||||||
|
decode = null;
|
||||||
|
mockCharacteristic = null;
|
||||||
|
BLENO = null;
|
||||||
|
});
|
||||||
|
|
||||||
|
test('Initialize', () => {
|
||||||
|
const bleno = Bleno(BLENO, { encode, decode }, BLENO_CONFIG);
|
||||||
|
|
||||||
|
expect(Object.keys(bleno)).toEqual([
|
||||||
|
'start',
|
||||||
|
'handler',
|
||||||
|
'notify',
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('start', () => {
|
||||||
|
BLENO.on = jest.fn();
|
||||||
|
const bleno = Bleno(BLENO, { encode, decode }, BLENO_CONFIG);
|
||||||
|
|
||||||
|
bleno.start('mockName', 'mockState');
|
||||||
|
expect(BLENO.on).toHaveBeenCalledTimes(2);
|
||||||
|
});
|
||||||
|
|
||||||
|
test('start.stateChange: poweredOn > success', () => {
|
||||||
|
BLENO.startAdvertising = (name, services, callback) => {
|
||||||
|
expect(name).toBe('mockName');
|
||||||
|
expect(services).toEqual([BLENO_CONFIG.SERVICE_UUID]);
|
||||||
|
|
||||||
|
callback(false);
|
||||||
|
|
||||||
|
expect(mockCharacteristic.updateState).toHaveBeenCalledWith('mockStateStart');
|
||||||
|
};
|
||||||
|
|
||||||
|
const spyStartAdvertising = jest.spyOn(BLENO, 'startAdvertising');
|
||||||
|
BLENO.on = (name, callback) => {
|
||||||
|
if (name === 'stateChange') {
|
||||||
|
callback('poweredOn');
|
||||||
|
expect(spyStartAdvertising).toHaveBeenCalled();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const bleno = Bleno(BLENO, { encode, decode }, BLENO_CONFIG);
|
||||||
|
|
||||||
|
bleno.start('mockName', 'mockStateStart');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('start.stateChange: poweredOn > fail', () => {
|
||||||
|
BLENO.startAdvertising = (name, services, callback) => {
|
||||||
|
expect(name).toBe('mockName');
|
||||||
|
expect(services).toEqual([BLENO_CONFIG.SERVICE_UUID]);
|
||||||
|
|
||||||
|
callback(true);
|
||||||
|
|
||||||
|
expect(mockCharacteristic.updateState).not.toHaveBeenCalled();
|
||||||
|
};
|
||||||
|
|
||||||
|
const spyStartAdvertising = jest.spyOn(BLENO, 'startAdvertising');
|
||||||
|
BLENO.on = (name, callback) => {
|
||||||
|
if (name === 'stateChange') {
|
||||||
|
callback('poweredOn');
|
||||||
|
expect(spyStartAdvertising).toHaveBeenCalled();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const bleno = Bleno(BLENO, { encode, decode }, BLENO_CONFIG);
|
||||||
|
|
||||||
|
bleno.start('mockName', 'mockStateStart');
|
||||||
|
});
|
||||||
|
|
||||||
|
// test('start.stateChange: poweredOn > fail', () => {
|
||||||
|
// BLENO.on = (name, callback) => {
|
||||||
|
// if (name === 'stateChange') {
|
||||||
|
// callback('poweredOn');
|
||||||
|
// expect(BLENO.startAdvertising).toHaveBeenCalled();
|
||||||
|
// }
|
||||||
|
// };
|
||||||
|
// const bleno = Bleno(BLENO, { encode, decode }, BLENO_CONFIG);
|
||||||
|
|
||||||
|
// bleno.start('mockName', 'mockState');
|
||||||
|
// });
|
||||||
|
|
||||||
|
test('start.stateChange: poweredOff', () => {
|
||||||
|
BLENO.on = (name, callback) => {
|
||||||
|
if (name === 'stateChange') {
|
||||||
|
callback('poweredOff');
|
||||||
|
expect(BLENO.stopAdvertising).toHaveBeenCalled();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const bleno = Bleno(BLENO, { encode, decode }, BLENO_CONFIG);
|
||||||
|
|
||||||
|
bleno.start('mockName', 'mockState');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('start.advertisingStart: success', () => {
|
||||||
|
BLENO.on = (name, callback) => {
|
||||||
|
if (name === 'advertisingStart') {
|
||||||
|
callback(false);
|
||||||
|
expect(BLENO.setServices).toHaveBeenCalledWith(['mockService']);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const bleno = Bleno(BLENO, { encode, decode }, BLENO_CONFIG);
|
||||||
|
|
||||||
|
bleno.start('mockName', 'mockState');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('start.advertisingStart: fail', () => {
|
||||||
|
BLENO.on = (name, callback) => {
|
||||||
|
if (name === 'advertisingStart') {
|
||||||
|
callback(true);
|
||||||
|
expect(BLENO.setServices).toHaveBeenCalledTimes(0);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
const bleno = Bleno(BLENO, { encode, decode }, BLENO_CONFIG);
|
||||||
|
|
||||||
|
bleno.start('mockName', 'mockState');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('handler', () => {
|
||||||
|
const bleno = Bleno(BLENO, { encode, decode }, BLENO_CONFIG);
|
||||||
|
|
||||||
|
expect(mockCharacteristic.onAction).not.toBeDefined();
|
||||||
|
|
||||||
|
bleno.handler('mockAction');
|
||||||
|
|
||||||
|
expect(mockCharacteristic.onAction).toBe('mockAction');
|
||||||
|
});
|
||||||
|
|
||||||
|
test('notify', () => {
|
||||||
|
const bleno = Bleno(BLENO, { encode, decode }, BLENO_CONFIG);
|
||||||
|
|
||||||
|
bleno.notify('mockState');
|
||||||
|
|
||||||
|
expect(mockCharacteristic.updateState).toHaveBeenCalledWith('mockState');
|
||||||
|
});
|
|
@ -1,4 +1,4 @@
|
||||||
/* global jest, test, expect, beforeEach */
|
/* global jest, test, expect, beforeEach, afterEach */
|
||||||
import connectSyncStore from '.';
|
import connectSyncStore from '.';
|
||||||
|
|
||||||
let store = null;
|
let store = null;
|
||||||
|
@ -18,6 +18,11 @@ beforeEach(() => {
|
||||||
};
|
};
|
||||||
});
|
});
|
||||||
|
|
||||||
|
afterEach(() => {
|
||||||
|
store = null;
|
||||||
|
bleno = null;
|
||||||
|
});
|
||||||
|
|
||||||
test('connectSyncStore', () => {
|
test('connectSyncStore', () => {
|
||||||
const { handleSubscribe, handleActions } = connectSyncStore(bleno)('mockName', store);
|
const { handleSubscribe, handleActions } = connectSyncStore(bleno)('mockName', store);
|
||||||
|
|
||||||
|
|
|
@ -12,5 +12,17 @@ jest.mock('../reducers', () => jest.fn());
|
||||||
|
|
||||||
test('createSyncStore', () => {
|
test('createSyncStore', () => {
|
||||||
const store = createSyncStore(['ACTION']);
|
const store = createSyncStore(['ACTION']);
|
||||||
return expect(store).toBe('mockStore');
|
expect(store).toBe('mockStore');
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
test('createSyncStore: debug', () => {
|
||||||
|
/* eslint-disable no-underscore-dangle */
|
||||||
|
global.__REDUX_DEVTOOLS_EXTENSION__ = jest.fn();
|
||||||
|
|
||||||
|
const store = createSyncStore(['ACTION']);
|
||||||
|
expect(store).toBe('mockStore');
|
||||||
|
|
||||||
|
expect(global.__REDUX_DEVTOOLS_EXTENSION__).toHaveBeenCalled();
|
||||||
|
/* eslint-enable */
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue