From 20a7e6a8483966ea4d1136d647fddfce2fcc4faa Mon Sep 17 00:00:00 2001
From: Tim Deschryver <28659384+timdeschryver@users.noreply.github.com>
Date: Fri, 19 May 2023 13:15:36 +0200
Subject: [PATCH 1/2] test: add test case for #386 (#387)
---
.../tests/issues/issue-386.spec.ts | 37 +++++++++++++++++++
1 file changed, 37 insertions(+)
create mode 100644 projects/testing-library/tests/issues/issue-386.spec.ts
diff --git a/projects/testing-library/tests/issues/issue-386.spec.ts b/projects/testing-library/tests/issues/issue-386.spec.ts
new file mode 100644
index 0000000..cccc850
--- /dev/null
+++ b/projects/testing-library/tests/issues/issue-386.spec.ts
@@ -0,0 +1,37 @@
+import {Component} from '@angular/core';
+import {throwError} from 'rxjs';
+import {render, screen} from '@testing-library/angular';
+import userEvent from '@testing-library/user-event';
+
+@Component({
+ selector: 'app-test',
+ template: ``,
+ styles: [],
+})
+export class TestComponent {
+ onTest() {
+ throwError(() => new Error('myerror')).subscribe();
+ }
+}
+
+
+describe('TestComponent', () => {
+ beforeEach(() => {
+ jest.useFakeTimers();
+ });
+
+ afterEach(() => {
+ jest.runAllTicks();
+ jest.useRealTimers();
+ })
+
+ it('does not fail', async () => {
+ await render(TestComponent);
+ await userEvent.click(screen.getByText('Test'));
+ });
+
+ it('fails because of the previous one', async () => {
+ await render(TestComponent);
+ await userEvent.click(screen.getByText('Test'));
+ });
+});
From e4a9a844673f74982ee73a842a542a7fef86380f Mon Sep 17 00:00:00 2001
From: Tim Deschryver <28659384+timdeschryver@users.noreply.github.com>
Date: Mon, 29 May 2023 19:14:50 +0200
Subject: [PATCH 2/2] fix: allow input properties to be aliased (#391)
---
projects/testing-library/src/lib/models.ts | 2 +-
.../tests/issues/issue-386.spec.ts | 13 ++++++-------
.../tests/issues/issue-389.spec.ts | 16 ++++++++++++++++
3 files changed, 23 insertions(+), 8 deletions(-)
create mode 100644 projects/testing-library/tests/issues/issue-389.spec.ts
diff --git a/projects/testing-library/src/lib/models.ts b/projects/testing-library/src/lib/models.ts
index 0a9b78a..c1c68c2 100644
--- a/projects/testing-library/src/lib/models.ts
+++ b/projects/testing-library/src/lib/models.ts
@@ -196,7 +196,7 @@ export interface RenderComponentOptions;
+ componentInputs?: Partial | { [alias: string]: unknown };
/**
* @description
* An object to set `@Output` properties of the component
diff --git a/projects/testing-library/tests/issues/issue-386.spec.ts b/projects/testing-library/tests/issues/issue-386.spec.ts
index cccc850..a2a4786 100644
--- a/projects/testing-library/tests/issues/issue-386.spec.ts
+++ b/projects/testing-library/tests/issues/issue-386.spec.ts
@@ -1,20 +1,19 @@
-import {Component} from '@angular/core';
-import {throwError} from 'rxjs';
-import {render, screen} from '@testing-library/angular';
+import { Component } from '@angular/core';
+import { throwError } from 'rxjs';
import userEvent from '@testing-library/user-event';
+import { render, screen } from '../../src/public_api';
@Component({
- selector: 'app-test',
+ selector: 'atl-fixture',
template: ``,
styles: [],
})
-export class TestComponent {
+class TestComponent {
onTest() {
throwError(() => new Error('myerror')).subscribe();
}
}
-
describe('TestComponent', () => {
beforeEach(() => {
jest.useFakeTimers();
@@ -23,7 +22,7 @@ describe('TestComponent', () => {
afterEach(() => {
jest.runAllTicks();
jest.useRealTimers();
- })
+ });
it('does not fail', async () => {
await render(TestComponent);
diff --git a/projects/testing-library/tests/issues/issue-389.spec.ts b/projects/testing-library/tests/issues/issue-389.spec.ts
new file mode 100644
index 0000000..03f25f7
--- /dev/null
+++ b/projects/testing-library/tests/issues/issue-389.spec.ts
@@ -0,0 +1,16 @@
+import { Component, Input } from '@angular/core';
+import { render, screen } from '../../src/public_api';
+
+@Component({
+ selector: 'atl-fixture',
+ template: `Hello {{ name }}`,
+})
+class TestComponent {
+ // eslint-disable-next-line @angular-eslint/no-input-rename
+ @Input('aliasName') name = '';
+}
+
+test('allows you to set componentInputs using the name alias', async () => {
+ await render(TestComponent, { componentInputs: { aliasName: 'test' } });
+ expect(screen.getByText('Hello test')).toBeInTheDocument();
+});