zigbee2mqtt/test/group.test.js

179 lines
7.0 KiB
JavaScript
Raw Normal View History

const Groups = require('../lib/extension/groups');
let groupExtension = null;
let zigbee = null;
describe('Groups', () => {
beforeEach(() => {
zigbee = {
publish: jest.fn(),
};
groupExtension = new Groups(zigbee, null, null, null);
});
afterEach(() => {
jest.restoreAllMocks();
});
it('Apply group updates add', async () => {
zigbee.publish.mockClear();
const from = {};
const to = {'1': ['1', '2']};
groupExtension.apply(from, to);
expect(zigbee.publish).toHaveBeenCalledTimes(2);
expect(zigbee.publish).toHaveBeenCalledWith(
'1', 'device', 'genGroups', 'add', 'functional',
{groupid: '1', groupname: ''}, null, null, expect.any(Function)
);
expect(zigbee.publish).toHaveBeenCalledWith(
'2', 'device', 'genGroups', 'add', 'functional',
{groupid: '1', groupname: ''}, null, null, expect.any(Function)
);
});
it('Apply group updates remove', async () => {
zigbee.publish.mockClear();
const from = {'1': ['1', '2', '3']};
const to = {'1': ['1']};
groupExtension.apply(from, to);
expect(zigbee.publish).toHaveBeenCalledTimes(2);
expect(zigbee.publish).toHaveBeenCalledWith(
'3', 'device', 'genGroups', 'remove', 'functional',
{groupid: '1'}, null, null, expect.any(Function)
);
expect(zigbee.publish).toHaveBeenCalledWith(
'2', 'device', 'genGroups', 'remove', 'functional',
{groupid: '1'}, null, null, expect.any(Function)
);
});
it('Apply group updates add 1', async () => {
zigbee.publish.mockClear();
const from = {'1': ['1']};
const to = {'1': ['1', '2', '3']};
groupExtension.apply(from, to);
expect(zigbee.publish).toHaveBeenCalledTimes(2);
expect(zigbee.publish).toHaveBeenCalledWith(
'3', 'device', 'genGroups', 'add', 'functional',
{groupid: '1', groupname: ''}, null, null, expect.any(Function)
);
expect(zigbee.publish).toHaveBeenCalledWith(
'2', 'device', 'genGroups', 'add', 'functional',
{groupid: '1', groupname: ''}, null, null, expect.any(Function)
);
});
it('Apply group updates add and remove group', async () => {
zigbee.publish.mockClear();
const from = {'1': ['1', '2']};
const to = {'2': ['1', '2']};
groupExtension.apply(from, to);
expect(zigbee.publish).toHaveBeenCalledTimes(4);
expect(zigbee.publish).toHaveBeenCalledWith(
'1', 'device', 'genGroups', 'remove', 'functional',
{groupid: '1'}, null, null, expect.any(Function)
);
expect(zigbee.publish).toHaveBeenCalledWith(
'2', 'device', 'genGroups', 'remove', 'functional',
{groupid: '1'}, null, null, expect.any(Function)
);
expect(zigbee.publish).toHaveBeenCalledWith(
'1', 'device', 'genGroups', 'add', 'functional',
{groupid: '2', groupname: ''}, null, null, expect.any(Function)
);
expect(zigbee.publish).toHaveBeenCalledWith(
'2', 'device', 'genGroups', 'add', 'functional',
{groupid: '2', groupname: ''}, null, null, expect.any(Function)
);
});
it('Apply group updates change 1', async () => {
zigbee.publish.mockClear();
const from = {'1': ['1', '4', '2']};
const to = {'1': ['1', '2', '3']};
groupExtension.apply(from, to);
expect(zigbee.publish).toHaveBeenCalledTimes(2);
expect(zigbee.publish).toHaveBeenCalledWith(
'3', 'device', 'genGroups', 'add', 'functional',
{groupid: '1', groupname: ''}, null, null, expect.any(Function)
);
expect(zigbee.publish).toHaveBeenCalledWith(
'4', 'device', 'genGroups', 'remove', 'functional',
{groupid: '1'}, null, null, expect.any(Function)
);
});
it('Apply group updates change 2', async () => {
zigbee.publish.mockClear();
const from = {'1': ['1', '2', '3']};
const to = {'1': ['3', '1', '2', '4']};
groupExtension.apply(from, to);
expect(zigbee.publish).toHaveBeenCalledTimes(1);
expect(zigbee.publish).toHaveBeenCalledWith(
'4', 'device', 'genGroups', 'add', 'functional',
{groupid: '1', groupname: ''}, null, null, expect.any(Function)
);
});
it('Apply group updates change 3', async () => {
zigbee.publish.mockClear();
const from = {'1': ['1', '2']};
const to = {'1': ['3', '1', '4', '2']};
groupExtension.apply(from, to);
expect(zigbee.publish).toHaveBeenCalledTimes(2);
expect(zigbee.publish).toHaveBeenCalledWith(
'3', 'device', 'genGroups', 'add', 'functional',
{groupid: '1', groupname: ''}, null, null, expect.any(Function)
);
expect(zigbee.publish).toHaveBeenCalledWith(
'4', 'device', 'genGroups', 'add', 'functional',
{groupid: '1', groupname: ''}, null, null, expect.any(Function)
);
});
it('Apply group updates change 4', async () => {
zigbee.publish.mockClear();
const from = {'1': ['1']};
const to = {'2': ['3', '1']};
groupExtension.apply(from, to);
expect(zigbee.publish).toHaveBeenCalledTimes(3);
expect(zigbee.publish).toHaveBeenCalledWith(
'1', 'device', 'genGroups', 'remove', 'functional',
{groupid: '1'}, null, null, expect.any(Function)
);
expect(zigbee.publish).toHaveBeenCalledWith(
'1', 'device', 'genGroups', 'add', 'functional',
{groupid: '2', groupname: ''}, null, null, expect.any(Function)
);
expect(zigbee.publish).toHaveBeenCalledWith(
'3', 'device', 'genGroups', 'add', 'functional',
{groupid: '2', groupname: ''}, null, null, expect.any(Function)
);
});
it('Apply group updates change 5', async () => {
zigbee.publish.mockClear();
const from = {'1': ['1']};
const to = {'1': ['3'], '2': ['3', '1']};
groupExtension.apply(from, to);
expect(zigbee.publish).toHaveBeenCalledTimes(4);
expect(zigbee.publish).toHaveBeenCalledWith(
'1', 'device', 'genGroups', 'remove', 'functional',
{groupid: '1'}, null, null, expect.any(Function)
);
expect(zigbee.publish).toHaveBeenCalledWith(
'3', 'device', 'genGroups', 'add', 'functional',
{groupid: '1', groupname: ''}, null, null, expect.any(Function)
);
expect(zigbee.publish).toHaveBeenCalledWith(
'1', 'device', 'genGroups', 'add', 'functional',
{groupid: '2', groupname: ''}, null, null, expect.any(Function)
);
expect(zigbee.publish).toHaveBeenCalledWith(
'3', 'device', 'genGroups', 'add', 'functional',
{groupid: '2', groupname: ''}, null, null, expect.any(Function)
);
});
});