|  | 
|  | 1 | +import { AuthService } from './auth.service'; | 
|  | 2 | +import { Subject } from 'rxjs'; | 
|  | 3 | +import { fakeAsync, tick } from '@angular/core/testing'; | 
|  | 4 | + | 
|  | 5 | +describe('AuthService', () => { | 
|  | 6 | +  let service: AuthService; | 
|  | 7 | + | 
|  | 8 | +  const httpClient: any = { | 
|  | 9 | +    get: jasmine.createSpy('get') | 
|  | 10 | +  }; | 
|  | 11 | +  const authStore: any = { | 
|  | 12 | +    setLoading: jasmine.createSpy('setLoading').and.callThrough(), | 
|  | 13 | +    update: jasmine.createSpy('update').and.callThrough(), | 
|  | 14 | +    setError: jasmine.createSpy('setError').and.callThrough() | 
|  | 15 | +  }; | 
|  | 16 | + | 
|  | 17 | +  beforeEach(() => { | 
|  | 18 | +    service = new AuthService( | 
|  | 19 | +      httpClient, | 
|  | 20 | +      authStore | 
|  | 21 | +    ); | 
|  | 22 | +  }); | 
|  | 23 | + | 
|  | 24 | +  it('should be able to login', () => { | 
|  | 25 | +    const data = new Subject(); | 
|  | 26 | +    httpClient.get.and.returnValue(data); | 
|  | 27 | +    service.login({ | 
|  | 28 | +      email: '', | 
|  | 29 | +      password: '', | 
|  | 30 | +    }); | 
|  | 31 | +    expect(authStore.setLoading).toHaveBeenCalledWith(true); | 
|  | 32 | +    data.next({ | 
|  | 33 | +      id: '', | 
|  | 34 | +      name: '', | 
|  | 35 | +      email: '', | 
|  | 36 | +      avatarUrl: '', | 
|  | 37 | +      createdAt: '', | 
|  | 38 | +      updatedAt: '', | 
|  | 39 | +      issueIds: [] | 
|  | 40 | +    }); | 
|  | 41 | +    expect(httpClient.get).toHaveBeenCalledWith('/assets/data/auth.json'); | 
|  | 42 | +    expect(authStore.update).toHaveBeenCalled(); | 
|  | 43 | +  }); | 
|  | 44 | +  it('should not be able to login', fakeAsync(() => { | 
|  | 45 | +    const data = new Subject(); | 
|  | 46 | +    httpClient.get.and.returnValue(data); | 
|  | 47 | +    service.login({ | 
|  | 48 | +      email: '', | 
|  | 49 | +      password: '', | 
|  | 50 | +    }); | 
|  | 51 | +    authStore.update.and.callFake(() => { | 
|  | 52 | +      throw new Error('Something bad happened'); | 
|  | 53 | +    }); | 
|  | 54 | +    expect(authStore.setLoading).toHaveBeenCalledWith(true); | 
|  | 55 | +    authStore.setLoading.calls.reset(); | 
|  | 56 | +    data.next({ | 
|  | 57 | +      id: '', | 
|  | 58 | +      name: '', | 
|  | 59 | +      email: '', | 
|  | 60 | +      avatarUrl: '', | 
|  | 61 | +      createdAt: '', | 
|  | 62 | +      updatedAt: '', | 
|  | 63 | +      issueIds: [] | 
|  | 64 | +    }); | 
|  | 65 | + | 
|  | 66 | +    expect(authStore.setLoading).toHaveBeenCalledWith(false); | 
|  | 67 | +    expect(authStore.setError).toHaveBeenCalled(); | 
|  | 68 | +  })); | 
|  | 69 | +}); | 
0 commit comments