import {ComponentFixture, TestBed} from '@angular/core/testing'; import {Component, Provider, Type, signal} from '@angular/core'; import {MatCardModule} from './module'; import {MatCard, MAT_CARD_CONFIG, MatCardAppearance} from './card'; describe('MatCard', () => { function createComponent(component: Type, providers: Provider[] = []): ComponentFixture { TestBed.configureTestingModule({ imports: [MatCardModule, component], providers, }); return TestBed.createComponent(component); } it('should default the card to the `raised` appearance', () => { const fixture = createComponent(BasicCard); fixture.detectChanges(); const card = fixture.nativeElement.querySelector('.mat-mdc-card'); expect(card.classList).not.toContain('mdc-card--outlined'); }); it('should be able to change the card appearance', () => { const fixture = createComponent(BasicCard); fixture.detectChanges(); const card = fixture.nativeElement.querySelector('.mat-mdc-card'); expect(card.classList).not.toContain('mdc-card--outlined'); fixture.componentInstance.appearance.set('outlined'); fixture.detectChanges(); expect(card.classList).toContain('mdc-card--outlined'); }); it('should be able to change the default card appearance using DI', () => { const fixture = createComponent(BasicCardNoAppearance, [ { provide: MAT_CARD_CONFIG, useValue: {appearance: 'outlined'}, }, ]); fixture.detectChanges(); const card = fixture.nativeElement.querySelector('.mat-mdc-card'); expect(card.classList).toContain('mdc-card--outlined'); }); }); @Component({ template: '', standalone: true, imports: [MatCard], }) class BasicCard { appearance = signal(undefined); } @Component({ template: '', standalone: true, imports: [MatCard], }) class BasicCardNoAppearance {}