@@ -4,6 +4,7 @@ import { Device } from "nativescript-preview-sdk";
44import { assert } from "chai" ;
55import { DeviceDiscoveryEventNames } from "../../lib/common/constants" ;
66import { LoggerStub , ErrorsStub } from "../stubs" ;
7+ import * as sinon from "sinon" ;
78
89let foundDevices : Device [ ] = [ ] ;
910let lostDevices : Device [ ] = [ ] ;
@@ -38,8 +39,9 @@ function resetDevices() {
3839}
3940
4041describe ( "PreviewDevicesService" , ( ) => {
41- describe ( "onDevicesPresence " , ( ) => {
42+ describe ( "getConnectedDevices " , ( ) => {
4243 let previewDevicesService : IPreviewDevicesService = null ;
44+ let clock : sinon . SinonFakeTimers = null ;
4345 beforeEach ( ( ) => {
4446 const injector = createTestInjector ( ) ;
4547 previewDevicesService = injector . resolve ( "previewDevicesService" ) ;
@@ -49,11 +51,13 @@ describe("PreviewDevicesService", () => {
4951 previewDevicesService . on ( DeviceDiscoveryEventNames . DEVICE_LOST , device => {
5052 lostDevices . push ( device ) ;
5153 } ) ;
54+ clock = sinon . useFakeTimers ( ) ;
5255 } ) ;
5356
5457 afterEach ( ( ) => {
5558 previewDevicesService . removeAllListeners ( ) ;
5659 resetDevices ( ) ;
60+ clock . restore ( ) ;
5761 } ) ;
5862
5963 it ( "should add new device" , ( ) => {
@@ -101,6 +105,7 @@ describe("PreviewDevicesService", () => {
101105 resetDevices ( ) ;
102106
103107 previewDevicesService . updateConnectedDevices ( [ ] ) ;
108+ clock . tick ( 5000 ) ;
104109
105110 assert . deepEqual ( foundDevices , [ ] ) ;
106111 assert . deepEqual ( lostDevices , [ device1 ] ) ;
@@ -116,10 +121,30 @@ describe("PreviewDevicesService", () => {
116121 resetDevices ( ) ;
117122
118123 previewDevicesService . updateConnectedDevices ( [ device2 ] ) ;
124+ clock . tick ( 5000 ) ;
119125
120126 assert . deepEqual ( previewDevicesService . getConnectedDevices ( ) , [ device2 ] ) ;
121127 assert . deepEqual ( foundDevices , [ device2 ] ) ;
122128 assert . deepEqual ( lostDevices , [ device1 ] ) ;
123129 } ) ;
130+ it ( "shouldn't emit deviceFound or deviceLost when preview app is restarted on device" , ( ) => {
131+ const device1 = createDevice ( "device1" ) ;
132+
133+ previewDevicesService . updateConnectedDevices ( [ device1 ] ) ;
134+
135+ assert . deepEqual ( previewDevicesService . getConnectedDevices ( ) , [ device1 ] ) ;
136+ assert . deepEqual ( foundDevices , [ device1 ] ) ;
137+ assert . deepEqual ( lostDevices , [ ] ) ;
138+ resetDevices ( ) ;
139+
140+ // preview app is restarted
141+ previewDevicesService . updateConnectedDevices ( [ ] ) ;
142+ clock . tick ( 500 ) ;
143+ previewDevicesService . updateConnectedDevices ( [ device1 ] ) ;
144+
145+ assert . deepEqual ( foundDevices , [ ] ) ;
146+ assert . deepEqual ( lostDevices , [ ] ) ;
147+ assert . deepEqual ( previewDevicesService . getConnectedDevices ( ) , [ device1 ] ) ;
148+ } ) ;
124149 } ) ;
125150} ) ;
0 commit comments