diff --git a/apps/example-app/src/app/examples/20-test-harness.spec.ts b/apps/example-app/src/app/examples/20-test-harness.spec.ts new file mode 100644 index 0000000..ff40762 --- /dev/null +++ b/apps/example-app/src/app/examples/20-test-harness.spec.ts @@ -0,0 +1,31 @@ +import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; +import { MatButtonHarness } from '@angular/material/button/testing'; +import { MatSnackBarHarness } from '@angular/material/snack-bar/testing'; +import { render, screen } from '@testing-library/angular'; +import user from '@testing-library/user-event'; + +import { SnackBarComponent } from './20-test-harness'; + +test('can be used with TestHarness', async () => { + const view = await render(SnackBarComponent); + const loader = TestbedHarnessEnvironment.documentRootLoader(view.fixture); + + const buttonHarness = await loader.getHarness(MatButtonHarness); + const button = await buttonHarness.host(); + button.click(); + + const snackbarHarness = await loader.getHarness(MatSnackBarHarness); + expect(await snackbarHarness.getMessage()).toMatch(/Pizza Party!!!/i); +}); + +test('can be used in combination with TestHarness', async () => { + const view = await render(SnackBarComponent); + const loader = TestbedHarnessEnvironment.documentRootLoader(view.fixture); + + user.click(screen.getByRole('button')); + + const snackbarHarness = await loader.getHarness(MatSnackBarHarness); + expect(await snackbarHarness.getMessage()).toMatch(/Pizza Party!!!/i); + + expect(screen.getByText(/Pizza Party!!!/i)).toBeInTheDocument(); +}); diff --git a/apps/example-app/src/app/examples/20-test-harness.ts b/apps/example-app/src/app/examples/20-test-harness.ts new file mode 100644 index 0000000..5306907 --- /dev/null +++ b/apps/example-app/src/app/examples/20-test-harness.ts @@ -0,0 +1,19 @@ +import { Component } from '@angular/core'; +import { MatButtonModule } from '@angular/material/button'; +import { MatSnackBar, MatSnackBarModule } from '@angular/material/snack-bar'; + +@Component({ + selector: 'app-harness', + standalone: true, + imports: [MatButtonModule, MatSnackBarModule], + template: ` + + `, +}) +export class SnackBarComponent { + constructor(private snackBar: MatSnackBar) {} + + openSnackBar() { + return this.snackBar.open('Pizza Party!!!'); + } +}