mirror of https://github.com/abpframework/abp.git
34 changed files with 356 additions and 339 deletions
@ -1,100 +1,100 @@ |
|||||
import { TestBed} from '@angular/core/testing'; |
import { TestBed} from '@angular/core/testing'; |
||||
import { DOCUMENT } from '@angular/common'; |
import { DOCUMENT } from '@angular/common'; |
||||
|
|
||||
import { InternetConnectionService } from '../services/internet-connection-service'; |
import { InternetConnectionService } from '../services/internet-connection-service'; |
||||
import { first } from 'rxjs'; |
import { first , firstValueFrom } from 'rxjs'; |
||||
|
|
||||
let service: InternetConnectionService; |
let service: InternetConnectionService; |
||||
|
|
||||
describe('Internet connection when disconnected', () => { |
describe('Internet connection when disconnected', () => { |
||||
const events = {}; |
const events = {}; |
||||
const addEventListener = jest.fn((event, callback) => { |
const addEventListener = vi.fn((event, callback) => { |
||||
events[event] = callback; |
events[event] = callback; |
||||
}); |
}); |
||||
const mockDocument = { defaultView: {navigator: {onLine: false}, addEventListener } } |
const mockDocument = { defaultView: {navigator: {onLine: false}, addEventListener } } |
||||
beforeAll(() => { |
beforeAll(() => { |
||||
TestBed.configureTestingModule({ |
TestBed.configureTestingModule({ |
||||
providers:[{provide:DOCUMENT, useValue: mockDocument}] |
providers:[{provide:DOCUMENT, useValue: mockDocument}] |
||||
}) |
}) |
||||
service = TestBed.inject(InternetConnectionService); |
service = TestBed.inject(InternetConnectionService); |
||||
}); |
}); |
||||
|
|
||||
it('document should be created', () => { |
it('document should be created', () => { |
||||
expect(service.document).toEqual(mockDocument); |
expect(service.document).toEqual(mockDocument); |
||||
}); |
}); |
||||
|
|
||||
it('signal value should be false', () => { |
it('signal value should be false', () => { |
||||
expect(service.networkStatus()).toEqual(false); |
expect(service.networkStatus()).toEqual(false); |
||||
}); |
}); |
||||
|
|
||||
it('observable value should be false', |
it('observable value should be false', |
||||
(done: any) => { |
(done: any) => { |
||||
service.networkStatus$.pipe(first()).subscribe(value => { |
service.networkStatus$.pipe(first()).subscribe(value => { |
||||
expect(value).toBe(false) |
expect(value).toBe(false) |
||||
done(); |
done(); |
||||
}); |
}); |
||||
}); |
}); |
||||
|
|
||||
test.each(['offline','online'])('should addEventListener for %p, event',(v)=>{ |
test.each(['offline','online'])('should addEventListener for %p, event',(v)=>{ |
||||
expect(events[v]).toBeTruthy() |
expect(events[v]).toBeTruthy() |
||||
}) |
}) |
||||
|
|
||||
test.each([['offline',false],["online",true]])('when %p called ,then signal value must be %p',(eventName,value)=>{ |
test.each([['offline',false],["online",true]])('when %p called ,then signal value must be %p',(eventName,value)=>{ |
||||
events[eventName]() |
events[eventName]() |
||||
expect(service.networkStatus()).toEqual(value); |
expect(service.networkStatus()).toEqual(value); |
||||
}) |
}) |
||||
|
|
||||
test.each([['offline',false],["online",true]])('when %p called,then observable must return %p',(eventName,value)=>{ |
test.each([['offline',false],["online",true]])('when %p called,then observable must return %p',(eventName,value)=>{ |
||||
events[eventName]() |
events[eventName]() |
||||
service.networkStatus$.subscribe(val=>{ |
service.networkStatus$.subscribe(val=>{ |
||||
expect(val).toEqual(value) |
expect(val).toEqual(value) |
||||
}) |
}) |
||||
}) |
}) |
||||
}); |
}); |
||||
|
|
||||
describe('when connection value changes for signals', () => { |
describe('when connection value changes for signals', () => { |
||||
const events = {}; |
const events = {}; |
||||
const addEventListener = jest.fn((event, callback) => { |
const addEventListener = vi.fn((event, callback) => { |
||||
events[event] = callback; |
events[event] = callback; |
||||
}); |
}); |
||||
const mockDocument = { defaultView: {navigator: {onLine: false}, addEventListener } } |
const mockDocument = { defaultView: {navigator: {onLine: false}, addEventListener } } |
||||
beforeAll(() => { |
beforeAll(() => { |
||||
TestBed.configureTestingModule({ |
TestBed.configureTestingModule({ |
||||
providers:[{provide:DOCUMENT, useValue: mockDocument}] |
providers:[{provide:DOCUMENT, useValue: mockDocument}] |
||||
}) |
}) |
||||
service = TestBed.inject(InternetConnectionService); |
service = TestBed.inject(InternetConnectionService); |
||||
}); |
}); |
||||
|
|
||||
it('signal value must be false when offline event is called while internet is connected', () => { |
it('signal value must be false when offline event is called while internet is connected', () => { |
||||
events['online']() |
events['online']() |
||||
expect(service.networkStatus()).toEqual(true); |
expect(service.networkStatus()).toEqual(true); |
||||
events['offline']() |
events['offline']() |
||||
expect(service.networkStatus()).toEqual(false); |
expect(service.networkStatus()).toEqual(false); |
||||
}); |
}); |
||||
|
|
||||
it('signal value must be true when online event is called while internet is disconnected', () => { |
it('signal value must be true when online event is called while internet is disconnected', () => { |
||||
events['offline']() |
events['offline']() |
||||
expect(service.networkStatus()).toEqual(false); |
expect(service.networkStatus()).toEqual(false); |
||||
events['online']() |
events['online']() |
||||
expect(service.networkStatus()).toEqual(true); |
expect(service.networkStatus()).toEqual(true); |
||||
}); |
}); |
||||
|
|
||||
it('observable value must be false when offline event is called while internet is connected', (done:any) => { |
it('observable value must be false when offline event is called while internet is connected', (done:any) => { |
||||
events['online']() |
events['online']() |
||||
events['offline']() |
events['offline']() |
||||
service.networkStatus$.subscribe(val=>{ |
service.networkStatus$.subscribe(val=>{ |
||||
expect(val).toEqual(false) |
expect(val).toEqual(false) |
||||
done() |
done() |
||||
}) |
}) |
||||
}); |
}); |
||||
|
|
||||
it('observable value must be true when online event is called while internet is disconnected', (done:any) => { |
it('observable value must be true when online event is called while internet is disconnected', (done:any) => { |
||||
events['offline']() |
events['offline']() |
||||
events['online']() |
events['online']() |
||||
service.networkStatus$.subscribe(val=>{ |
service.networkStatus$.subscribe(val=>{ |
||||
console.log(val); |
console.log(val); |
||||
expect(val).toEqual(true) |
expect(val).toEqual(true) |
||||
done() |
done() |
||||
}) |
}) |
||||
}); |
}); |
||||
}); |
}); |
||||
@ -1,55 +1,55 @@ |
|||||
import { Component, DebugElement } from '@angular/core' |
import { Component, DebugElement } from '@angular/core' |
||||
import { ComponentFixture, TestBed } from '@angular/core/testing' |
import { ComponentFixture, TestBed } from '@angular/core/testing' |
||||
import { ShowPasswordDirective } from '../directives'; |
import { ShowPasswordDirective } from '../directives'; |
||||
import { By } from '@angular/platform-browser'; |
import { By } from '@angular/platform-browser'; |
||||
|
|
||||
@Component({ |
@Component({ |
||||
standalone:true, |
standalone:true, |
||||
template: ` |
template: ` |
||||
<input [abpShowPassword]="true"> |
<input [abpShowPassword]="true"> |
||||
<input [abpShowPassword]="false"> |
<input [abpShowPassword]="false"> |
||||
<input /> |
<input /> |
||||
<input [abpShowPassword]="showPassword" />`,
|
<input [abpShowPassword]="showPassword" />`,
|
||||
imports:[ShowPasswordDirective] |
imports:[ShowPasswordDirective] |
||||
}) |
}) |
||||
class TestComponent { |
class TestComponent { |
||||
showPassword = false |
showPassword = false |
||||
} |
} |
||||
|
|
||||
describe('ShowPasswordDirective',()=>{ |
describe('ShowPasswordDirective',()=>{ |
||||
let fixture: ComponentFixture<TestComponent>;; |
let fixture: ComponentFixture<TestComponent>;; |
||||
let des : DebugElement[]; |
let des : DebugElement[]; |
||||
let desAll : DebugElement[]; |
let desAll : DebugElement[]; |
||||
let bareInput; |
let bareInput; |
||||
|
|
||||
beforeEach(()=>{ |
beforeEach(()=>{ |
||||
fixture = TestBed.configureTestingModule({ |
fixture = TestBed.configureTestingModule({ |
||||
imports: [ TestComponent ] |
imports: [ TestComponent ] |
||||
}).createComponent(TestComponent) |
}).createComponent(TestComponent) |
||||
|
|
||||
fixture.detectChanges(); |
fixture.detectChanges(); |
||||
|
|
||||
des = fixture.debugElement.queryAll(By.directive(ShowPasswordDirective)); |
des = fixture.debugElement.queryAll(By.directive(ShowPasswordDirective)); |
||||
|
|
||||
desAll = fixture.debugElement.queryAll(By.all()); |
desAll = fixture.debugElement.queryAll(By.all()); |
||||
|
|
||||
bareInput = fixture.debugElement.query(By.css('input:not([abpShowPassword])')); |
bareInput = fixture.debugElement.query(By.css('input:not([abpShowPassword])')); |
||||
}) |
}) |
||||
|
|
||||
it('should have three input has ShowPasswordDirective elements', () => { |
it('should have three input has ShowPasswordDirective elements', () => { |
||||
expect(des.length).toBe(3); |
expect(des.length).toBe(3); |
||||
}); |
}); |
||||
|
|
||||
test.each([[0,'text'],[1,'password'],[2,'text'],[3,'password']])('%p. input type must be %p)', (index,inpType) => { |
test.each([[0,'text'],[1,'password'],[2,'text'],[3,'password']])('%p. input type must be %p)', (index,inpType) => { |
||||
const inputType = desAll[index].nativeElement.type; |
const inputType = desAll[index].nativeElement.type; |
||||
expect(inputType).toBe(inpType); |
expect(inputType).toBe(inpType); |
||||
}); |
}); |
||||
|
|
||||
it('should have three input has ShowPasswordDirective elements', () => { |
it('should have three input has ShowPasswordDirective elements', () => { |
||||
const input = des[2].nativeElement |
const input = des[2].nativeElement |
||||
expect(input.type).toBe('password') |
expect(input.type).toBe('password') |
||||
fixture.componentInstance.showPassword = true |
fixture.componentInstance.showPassword = true |
||||
fixture.detectChanges() |
fixture.detectChanges() |
||||
expect(input.type).toBe('text') |
expect(input.type).toBe('text') |
||||
}); |
}); |
||||
}); |
}); |
||||
Loading…
Reference in new issue