diff --git a/npm/ng-packs/packages/core/src/lib/services/internet-connection-service.ts b/npm/ng-packs/packages/core/src/lib/services/internet-connection-service.ts index ebf15a9a25..d74e65d036 100644 --- a/npm/ng-packs/packages/core/src/lib/services/internet-connection-service.ts +++ b/npm/ng-packs/packages/core/src/lib/services/internet-connection-service.ts @@ -17,13 +17,13 @@ export class InternetConnectionService{ networkStatus = computed(() => this.status()) constructor(){ - this.window.addEventListener('offline', () => this.setStatus()); - this.window.addEventListener('online', () => this.setStatus()); + this.window.addEventListener('offline', () => this.setStatus(false)); + this.window.addEventListener('online', () => this.setStatus(true)); } - private setStatus(){ - this.status.set(navigator.onLine) - this.status$.next(navigator.onLine) + setStatus(val:boolean){ + this.status.set(val) + this.status$.next(val) } get networkStatus$(){ diff --git a/npm/ng-packs/packages/core/src/lib/tests/internet-connection.service.spec.ts b/npm/ng-packs/packages/core/src/lib/tests/internet-connection.service.spec.ts index d1625c8db8..31a63f9006 100644 --- a/npm/ng-packs/packages/core/src/lib/tests/internet-connection.service.spec.ts +++ b/npm/ng-packs/packages/core/src/lib/tests/internet-connection.service.spec.ts @@ -2,7 +2,8 @@ import { TestBed} from '@angular/core/testing'; import { DOCUMENT } from '@angular/common'; import { InternetConnectionService } from '../services/internet-connection-service'; -import { first, takeLast } from 'rxjs'; +import { BehaviorSubject, first, of, takeLast } from 'rxjs'; +import { computed, signal } from '@angular/core'; let service: InternetConnectionService; @@ -54,4 +55,42 @@ describe('Internet connection when connected', () => { done(); }); }); +}); + +describe('when connection value changes', () => { + let mockDocument = { defaultView: {navigator: {onLine: true}, addEventListener: (eventName,cb)=>{ + window.addEventListener(eventName,cb) + }, dispatchEvent: function(event){ + this.navigator.onLine = !this.navigator.onLine + }}} + + beforeEach(() => { + TestBed.configureTestingModule({ + providers:[{provide:DOCUMENT, useValue: mockDocument}] + }) + service = TestBed.inject(InternetConnectionService); + }); + + it('check is signal value changes', () => { + expect(service.networkStatus()).toEqual(true); + const event = new Event("offline"); + service.window.dispatchEvent(event) + service.setStatus(service.window.navigator.onLine) + expect(service.networkStatus()).toEqual(false); + }); + + it('check is observable value changes',(done: any) => { + const event = new Event("online"); + service.window.dispatchEvent(event) + service.networkStatus$.pipe(first()).subscribe(value => { + expect(value).toEqual(true) + done() + }); + service.window.dispatchEvent(event) + service.setStatus(service.window.navigator.onLine) + service.networkStatus$.pipe().subscribe(value => { + expect(value).toEqual(false) + done() + }); + }); }); \ No newline at end of file