Skip to content

Instantly share code, notes, and snippets.

View FunnyGhost's full-sized avatar
💭
💻 🐵

Catalin Ciubotaru FunnyGhost

💭
💻 🐵
View GitHub Profile
it('should throw if the backend returns an error ', () => {
let bubblesUpTheError = false;
serviceUnderTest.getFavoriteMovies().subscribe(() => {}, () => (bubblesUpTheError = true));
const req = http.expectOne(environment.favoriteUrl, 'expected to make a request');
expect(req.request.method).toEqual('GET');
req.flush('ERROR', { status: 500, statusText: 'Internal server error' });
expect(bubblesUpTheError).toBeTruthy();
http.verify();
export class FavoriteMoviesService {
constructor(private http: HttpClient) {}
getFavoriteMovies(): Observable<Movie[]> {
return this.http.get<Movie[]>(environment.favoriteUrl);
}
}
describe('FavoriteMoviesService', () => {
let serviceUnderTest: FavoriteMoviesService;
let http: HttpTestingController;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [HttpClientTestingModule],
providers: [FavoriteMoviesService]
});
const favoriteUrl = 'test.favorite.com';
export const environment = {
production: false,
favoriteUrl
};
getFavoriteMovies(): Observable<Movie[]> {
return of([
{ title: 'Interstellar' } as Movie,
{ title: 'The Green Book' } as Movie,
{ title: 'Dark Knight' } as Movie
]);
}
it('should return the favorite movies', () => {
let result: Movie[] = [];
serviceUnderTest.getFavoriteMovies().subscribe(data => {
result = data;
});
expect(result).toEqual(moviesToUse);
});
@FunnyGhost
FunnyGhost / favorite-movies.service.spec.ts
Created September 12, 2019 12:25
favorite movies spec init
const moviesToUse = [
{ title: 'Interstellar' } as Movie,
{ title: 'The Green Book' } as Movie,
{ title: 'Dark Knight' } as Movie
];
describe('FavoriteMoviesService', () => {
let serviceUnderTest: FavoriteMoviesService;
beforeEach(() => {
@FunnyGhost
FunnyGhost / favorite-movies.service.ts
Created September 12, 2019 12:18
favorite movies service initial state
export class FavoriteMoviesService {
constructor() {}
getFavoriteMovies(): Observable<Movie[]> {
return of([]);
}
}
<div class="error" *ngIf="error">
{{ error }}
</div>
ngOnInit() {
this.favoriteMovies$ = this.favoriteMovieService.getFavoriteMovies().pipe(
catchError((error: any) => {
this.error = error;
return of([]);
})
);
}