Skip to content

Instantly share code, notes, and snippets.

View FunnyGhost's full-sized avatar
💭
💻 🐵

Catalin Ciubotaru FunnyGhost

💭
💻 🐵
View GitHub Profile
@Component({
selector: "kpd-favorite-movie",
templateUrl: "./favorite-movie.component.html",
styleUrls: ["./favorite-movie.component.scss"],
changeDetection: ChangeDetectionStrategy.OnPush
})
export class FavoriteMovieComponent {
@Input() favoriteMovie: Movie;
@Output() deleteMovie = new EventEmitter<Movie>();
@Component({
selector: "kpd-search-movie",
templateUrl: "./search-movie.component.html",
styleUrls: ["./search-movie.component.scss"]
})
export class SearchMovieComponent {
@Output() addMovie = new EventEmitter<Movie>();
constructor() {}
}
<ng-container *ngIf="(favoriteMovies$ | async); let favoriteMovies">
<div class="movie" *ngFor="let movie of favoriteMovies">
{{ movie.title }}
</div>
</ng-container>
it('should show all the favorite movies', () => {
const movieComponents = fixture.debugElement.queryAll(By.directive(FavoriteMovieComponent));
expect(movieComponents.length).toEqual(favoriteMoviesToUse.length);
});
<ng-container *ngIf="favoriteMovies$ | async; let favoriteMovies">
<kpd-favorite-movie *ngFor="let movie of favoriteMovies"> </kpd-favorite-movie>
</ng-container>
declarations: [FavoriteMoviesComponent, MockComponent(FavoriteMovieComponent)],
it('should show all the favorite movies', () => {
const movieComponents = fixture.debugElement.queryAll(By.directive(FavoriteMovieComponent));
expect(movieComponents.length).toEqual(favoriteMoviesToUse.length);
const movieComponentsInputs = movieComponents.map(
htmlComponent => (htmlComponent.componentInstance as FavoriteMovieComponent).favoriteMovie
);
expect(movieComponentsInputs).toEqual(favoriteMoviesToUse);
});
<ng-container *ngIf="favoriteMovies$ | async; let favoriteMovies">
<kpd-favorite-movie *ngFor="let movie of favoriteMovies" [favoriteMovie]="movie">
</kpd-favorite-movie>
</ng-container>
it('should delete a favorite movie when the user wants to', () => {
jest.spyOn(favoriteMovieService, 'deleteMovie');
const favoriteMovieToDelete = favoriteMoviesToUse[0];
const componentToDelete = fixture.debugElement.queryAll(
By.directive(FavoriteMovieComponent)
)[0].componentInstance as FavoriteMovieComponent;
componentToDelete.deleteMovie.emit(favoriteMovieToDelete);
expect(favoriteMovieService.deleteMovie).toHaveBeenCalledWith(favoriteMovieToDelete);
<ng-container *ngIf="favoriteMovies$ | async; let favoriteMovies">
<kpd-favorite-movie
*ngFor="let movie of favoriteMovies"
[favoriteMovie]="movie"
(deleteMovie)="deleteMovie($event)"
>
</kpd-favorite-movie>
</ng-container>