Skip to content

Commit fd2f055

Browse files
authored
test: refactor file structure and improve coverage (#185)
1 parent 1e34dab commit fd2f055

18 files changed

+777
-676
lines changed

test/unit/event-type-handler-spec.js

Lines changed: 0 additions & 249 deletions
This file was deleted.
Lines changed: 86 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,86 @@
1+
const SmartApp = require('../../../lib/smart-app')
2+
3+
describe('device-commands-event-spec', () => {
4+
const deviceCommandsEvent = {
5+
'lifecycle': 'EVENT',
6+
'executionId': '00000000-0000-0000-0000-000000000000',
7+
'eventData': {
8+
'installedApp': {
9+
'installedAppId': '00000000-0000-0000-0000-000000000000'
10+
},
11+
'events': [
12+
{
13+
'eventTime': '1970-01-01T00:00:00Z',
14+
'eventType': 'DEVICE_COMMANDS_EVENT',
15+
'deviceCommandsEvent': {
16+
'eventId': '00000000-0000-0000-0000-000000000000',
17+
'deviceId': '00000000-0000-0000-0000-000000000000',
18+
'profileId': '00000000-0000-0000-0000-000000000000',
19+
'externalId': '00000000-0000-0000-0000-000000000000',
20+
'commands': [
21+
{
22+
'componentId': 'main',
23+
'capability': 'switch',
24+
'command': 'on',
25+
'arguments': []
26+
}
27+
]
28+
}
29+
}
30+
]
31+
}
32+
}
33+
34+
const mockCallback = jest.fn()
35+
let app
36+
37+
beforeEach(() => {
38+
app = new SmartApp({logUnhandledRejections: false})
39+
})
40+
41+
afterEach(() => {
42+
mockCallback.mockClear()
43+
})
44+
45+
it('should handle all DEVICE_COMMANDS_EVENT', async () => {
46+
app.deviceCommandHandler(mockCallback)
47+
48+
const response = await app.handleMockCallback(deviceCommandsEvent)
49+
50+
expect(mockCallback).toBeCalledTimes(1)
51+
expect(response.statusCode).toBe(200)
52+
})
53+
54+
it('should handle a specific DEVICE_COMMANDS_EVENT', async () => {
55+
app.deviceCommand('main/switch/on', mockCallback)
56+
57+
const response = await app.handleMockCallback(deviceCommandsEvent)
58+
59+
expect(mockCallback).toBeCalledTimes(1)
60+
expect(response.statusCode).toBe(200)
61+
})
62+
63+
it('should handle a specific DEVICE_COMMANDS_EVENT without component specified', async () => {
64+
app.deviceCommand('switch/on', mockCallback)
65+
66+
const response = await app.handleMockCallback(deviceCommandsEvent)
67+
68+
expect(mockCallback).toBeCalledTimes(1)
69+
expect(response.statusCode).toBe(200)
70+
})
71+
72+
it('should warn when there is no handler for a device command', async () => {
73+
const logSpy = jest.spyOn(app._log, 'warn')
74+
75+
const response = await app.handleMockCallback(deviceCommandsEvent)
76+
77+
const event = deviceCommandsEvent.eventData.events[0]
78+
const command = event.deviceCommandsEvent.commands[0]
79+
80+
expect(logSpy).toBeCalledTimes(1)
81+
expect(logSpy).toBeCalledWith(`No command handler for ${JSON.stringify(command)} of device ${event.deviceCommandsEvent.deviceId}`)
82+
expect(response.statusCode).toBe(200)
83+
84+
logSpy.mockClear()
85+
})
86+
})

0 commit comments

Comments
 (0)