Skip to content

Commit 219877c

Browse files
committed
feat: add unit tests for previewDevicesService
1 parent e276084 commit 219877c

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed
+102
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
import { Yok } from "../../lib/common/yok";
2+
import { PreviewDevicesService } from "../../lib/services/livesync/playground/devices/preview-devices-service";
3+
import { Device } from "nativescript-preview-sdk";
4+
import { assert } from "chai";
5+
import { DeviceDiscoveryEventNames } from "../../lib/common/constants";
6+
import { LoggerStub } from "../stubs";
7+
8+
let foundDevices: Device[] = [];
9+
let lostDevices: Device[] = [];
10+
11+
function createTestInjector(): IInjector {
12+
const injector = new Yok();
13+
injector.register("previewDevicesService", PreviewDevicesService);
14+
injector.register("logger", LoggerStub);
15+
return injector;
16+
}
17+
18+
function createDevice(id: string): Device {
19+
return {
20+
id,
21+
platform: "ios",
22+
model: "my test model",
23+
name: "my test name",
24+
osVersion: "10.0.0",
25+
previewAppVersion: "19.0.0",
26+
runtimeVersion: "5.0.0"
27+
};
28+
}
29+
30+
describe.only("PreviewDevicesService", () => {
31+
describe("onDevicesPresence", () => {
32+
let previewDevicesService: IPreviewDevicesService = null;
33+
beforeEach(() => {
34+
const injector = createTestInjector();
35+
previewDevicesService = injector.resolve("previewDevicesService");
36+
previewDevicesService.on(DeviceDiscoveryEventNames.DEVICE_FOUND, device => {
37+
foundDevices.push(device);
38+
});
39+
previewDevicesService.on(DeviceDiscoveryEventNames.DEVICE_LOST, device => {
40+
lostDevices.push(device);
41+
});
42+
});
43+
44+
afterEach(() => {
45+
previewDevicesService.removeAllListeners();
46+
foundDevices = [];
47+
lostDevices = [];
48+
});
49+
50+
it("should add new device", () => {
51+
const device = createDevice("device1");
52+
53+
previewDevicesService.onDevicesPresence([device]);
54+
55+
assert.deepEqual(previewDevicesService.connectedDevices, [device]);
56+
assert.deepEqual(foundDevices, [device]);
57+
assert.deepEqual(lostDevices, []);
58+
});
59+
it("should add new device when there are already connected devices", () => {
60+
const device1 = createDevice("device1");
61+
const device2 = createDevice("device2");
62+
previewDevicesService.connectedDevices = [device1];
63+
64+
previewDevicesService.onDevicesPresence([device1, device2]);
65+
66+
assert.deepEqual(previewDevicesService.connectedDevices, [device1, device2]);
67+
assert.deepEqual(foundDevices, [device2]);
68+
assert.deepEqual(lostDevices, []);
69+
});
70+
it("should add more than one new device", () => {
71+
const device1 = createDevice("device1");
72+
const device2 = createDevice("device2");
73+
const device3 = createDevice("device3");
74+
75+
previewDevicesService.onDevicesPresence([device1, device2, device3]);
76+
77+
assert.deepEqual(previewDevicesService.connectedDevices, [device1, device2, device3]);
78+
assert.deepEqual(foundDevices, [device1, device2, device3]);
79+
assert.deepEqual(lostDevices, []);
80+
});
81+
it("should remove device", () => {
82+
const device1 = createDevice("device1");
83+
previewDevicesService.connectedDevices = [device1];
84+
85+
previewDevicesService.onDevicesPresence([]);
86+
87+
assert.deepEqual(foundDevices, []);
88+
assert.deepEqual(lostDevices, [device1]);
89+
});
90+
it("should add and remove devices in the same time", () => {
91+
const device1 = createDevice("device1");
92+
const device2 = createDevice("device2");
93+
previewDevicesService.connectedDevices = [device1];
94+
95+
previewDevicesService.onDevicesPresence([device2]);
96+
97+
assert.deepEqual(previewDevicesService.connectedDevices, [device2]);
98+
assert.deepEqual(foundDevices, [device2]);
99+
assert.deepEqual(lostDevices, [device1]);
100+
});
101+
});
102+
});

0 commit comments

Comments
 (0)