Skip to content

Commit 6cb6525

Browse files
test show, list & create ok
1 parent 0730ef7 commit 6cb6525

File tree

9 files changed

+116
-109
lines changed

9 files changed

+116
-109
lines changed

package-lock.json

+25-25
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
"tmp": "^0.2.0"
4141
},
4242
"dependencies": {
43-
"@angular/cli": "^18.0.5",
43+
"@angular/cli": "^18.0.6",
4444
"@api-platform/api-doc-parser": "^0.16.0",
4545
"@babel/runtime": "^7.0.0",
4646
"chalk": "^5.0.0",

templates/angular/app/components/foo/edit/edit.component.html

+2-4
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,8 @@
88
@if (error()) {
99
<app-alert type="error" [error]="error"/>
1010
}
11-
<h1 class="text-3xl my-4">
12-
Edit \{{ item()['name'] }}
13-
<span class="text-xl">\{{ item()["@id"] }}</span>
14-
</h1>
11+
<h1 class="text-3xl my-4">Edit {{ titleUcFirst }} <span class="text-xl">\{{ item()["@id"] }} </span></h1>
12+
1513
<app-form-{{lc}}
1614
[item]="item()"
1715
(submit)="onSubmit($event)"

templates/angular/app/components/foo/show/show.component.html

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
</div>
1717
</div>
1818

19-
<h1 class="text-3xl my-4">Edit \{{ item()['name'] }} <span class="text-xl">\{{ item()["@id"] }} </span></h1>
19+
<h1 class="text-3xl my-4">Show {{ titleUcFirst }} <span class="text-xl">\{{ item()["@id"] }} </span></h1>
2020

2121
<div class="bg-white overflow-x-auto">
2222
<table class="min-w-full">

templates/angular/app/router/foo.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ export const {{title}}Routes = [
44
loadComponent: () => import("@components/{{lc}}/list/list.component").then(c => c.ListComponent)
55
},
66
{
7-
path: '{{lc}}s/add',
7+
path: '{{lc}}s/create',
88
loadComponent: () => import("@components/{{lc}}/create/create.component").then(c => c.CreateComponent)
99
},
1010
{

tests/create.spec.ts

+20-13
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,27 @@
1-
import { test as baseTest, expect } from '@playwright/test';
2-
import { locatorFixtures as fixtures } from '@playwright-testing-library/test/fixture.js';
3-
import type { LocatorFixtures as TestingLibraryFixtures } from '@playwright-testing-library/test/fixture.js';
1+
import { test as baseTest, expect } from "@playwright/test";
2+
import { locatorFixtures as fixtures } from "@playwright-testing-library/test/fixture.js";
3+
import type { LocatorFixtures as TestingLibraryFixtures } from "@playwright-testing-library/test/fixture.js";
44

5-
const test = baseTest.extend<TestingLibraryFixtures>(fixtures)
5+
const test = baseTest.extend<TestingLibraryFixtures>(fixtures);
66

7-
test('resource create', async ({ page, queries: { getByLabelText, getByRole, getByText, queryByRole, queryByText } }) => {
8-
await page.goto('http://localhost:3000/books/create');
7+
test("resource create", async ({
8+
page,
9+
queries: { getByLabelText, getByRole, getByText, queryByRole, queryByText },
10+
}) => {
11+
await page.goto("http://localhost:3000/books/create");
912

10-
await expect(queryByText('Loading...')).not.toBeVisible();
13+
await expect(queryByText("Loading...")).not.toBeVisible();
1114

12-
await expect(queryByRole('heading', { level: 1 })).toHaveText(/^\s*Create Book/);
15+
await expect(queryByRole("heading", { level: 1 })).toHaveText(
16+
/^\s*Create Book/
17+
);
1318

14-
await expect(getByLabelText('isbn')).toBeEditable();
15-
await expect(getByLabelText('description')).toBeEditable();
16-
await expect(getByText('reviews')).toBeVisible();
19+
await expect(getByLabelText("book")).toBeEditable();
20+
await expect(getByLabelText("condition")).toBeEditable();
21+
await expect(getByLabelText("title")).toBeEditable();
22+
await expect(getByLabelText("author")).toBeEditable();
23+
await expect(getByLabelText("rating")).toBeEditable();
1724

18-
await expect(getByRole('button', { name: 'Submit' })).toBeVisible();
19-
await expect(getByRole('link', { name: /Back to list/ })).toBeVisible();
25+
await expect(getByRole("button", { name: "Submit" })).toBeVisible();
26+
await expect(getByRole("link", { name: /Back to list/ })).toBeVisible();
2027
});

tests/edit.spec.ts

+7-15
Original file line numberDiff line numberDiff line change
@@ -28,20 +28,9 @@ test("resource edit", async ({
2828

2929
const { getAllByRole: getAllByRoleWithinRow } = within(rows.nth(3));
3030

31-
const bookLink = getAllByRoleWithinRow("link").nth(0);
31+
const bookLink = getAllByRoleWithinRow("link", { name: "Edit" }).nth(0);
3232
bookLink.click();
3333

34-
await expect(
35-
queryByRole("heading", { level: 1, name: /^\s*Show Book/ })
36-
).toBeVisible();
37-
await expect(queryByText("Loading...")).not.toBeVisible();
38-
39-
const editLink = getByRole("link", { name: "Edit" });
40-
editLink.click();
41-
42-
await expect(
43-
queryByRole("heading", { level: 1, name: /^\s*Show Book/ })
44-
).not.toBeVisible();
4534
await expect(queryByText("Loading...")).not.toBeVisible();
4635

4736
await expect(queryByRole("heading", { level: 1 })).toHaveText(
@@ -50,9 +39,12 @@ test("resource edit", async ({
5039

5140
await expect(queryByText("Loading...")).not.toBeVisible();
5241

53-
await expect(getByLabelText("isbn")).toBeEditable();
54-
await expect(getByLabelText("description")).toBeEditable();
55-
await expect(getByText("reviews")).toBeVisible();
42+
await expect(getByLabelText("book")).toBeEditable();
43+
await expect(getByLabelText("condition")).toBeEditable();
44+
await expect(getByLabelText("title")).toBeEditable();
45+
await expect(getByLabelText("author")).toBeEditable();
46+
await expect(getByLabelText("rating")).toBeEditable();
47+
//await expect(getByText("reviews")).toBeVisible();
5648

5749
await expect(getByRole("button", { name: "Submit" })).toBeVisible();
5850
await expect(getByRole("button", { name: "Delete" })).toBeVisible();

tests/show.spec.ts

+31-21
Original file line numberDiff line numberDiff line change
@@ -1,43 +1,53 @@
1-
import { test as baseTest, expect } from '@playwright/test';
2-
import { locatorFixtures as fixtures } from '@playwright-testing-library/test/fixture.js';
3-
import type { LocatorFixtures as TestingLibraryFixtures } from '@playwright-testing-library/test/fixture.js';
1+
import { test as baseTest, expect } from "@playwright/test";
2+
import { locatorFixtures as fixtures } from "@playwright-testing-library/test/fixture.js";
3+
import type { LocatorFixtures as TestingLibraryFixtures } from "@playwright-testing-library/test/fixture.js";
44

5-
const test = baseTest.extend<TestingLibraryFixtures>(fixtures)
5+
const test = baseTest.extend<TestingLibraryFixtures>(fixtures);
66

7-
test('resource show', async ({ page, within, queries: { getAllByRole, getByRole, queryByRole, queryByText } }) => {
8-
await page.goto('http://localhost:3000/books/');
7+
test("resource show", async ({
8+
page,
9+
within,
10+
queries: { getAllByRole, getByRole, queryByRole, queryByText },
11+
}) => {
12+
await page.goto("http://localhost:3000/books/");
913

10-
await expect(queryByText('Loading...')).not.toBeVisible();
14+
await expect(queryByText("Loading...")).not.toBeVisible();
1115

12-
await expect(queryByRole('heading', { level: 1 })).toHaveText('Book List');
16+
await expect(queryByRole("heading", { level: 1 })).toHaveText("Book List");
1317

14-
const listRows = getAllByRole('row');
18+
const listRows = getAllByRole("row");
1519

1620
const { getAllByRole: getAllByRoleWithinListRow } = within(listRows.nth(3));
1721

18-
const bookLink = getAllByRoleWithinListRow('link').nth(0);
22+
const bookLink = getAllByRoleWithinListRow("link").nth(0);
1923
bookLink.click();
2024

21-
await expect(queryByRole('heading', { level: 1 })).toHaveText(/^\s*Show Book/);
25+
await expect(queryByRole("heading", { level: 1 })).toHaveText(
26+
/^\s*Show Book/
27+
);
2228

23-
await expect(queryByText('Loading...')).not.toBeVisible();
29+
await expect(queryByText("Loading...")).not.toBeVisible();
2430

25-
const cols = getAllByRole('rowgroup').nth(0);
31+
const cols = getAllByRole("rowgroup").nth(0);
2632
const { getByRole: getByRoleWithinCols } = within(cols);
2733

28-
await expect(getByRoleWithinCols('columnheader', { name: 'Field' })).toBeVisible();
29-
await expect(getByRoleWithinCols('columnheader', { name: 'Value' })).toBeVisible();
34+
await expect(
35+
getByRoleWithinCols("columnheader", { name: "Field" })
36+
).toBeVisible();
37+
await expect(
38+
getByRoleWithinCols("columnheader", { name: "Value" })
39+
).toBeVisible();
3040

31-
const list = getAllByRole('rowgroup').nth(1);
41+
const list = getAllByRole("rowgroup").nth(1);
3242
const { getAllByRole: getAllByRoleWithinList } = within(list);
3343

34-
const rows = getAllByRoleWithinList('row');
44+
const rows = getAllByRoleWithinList("row");
3545

3646
const { getByRole: getByRoleWithinRow } = within(rows.nth(0));
3747

38-
await expect(getByRoleWithinRow('rowheader')).toHaveText('isbn');
48+
await expect(getByRoleWithinRow("rowheader")).toHaveText("book");
3949

40-
await expect(getByRole('link', { name: /Back to list/ })).toBeVisible();
41-
await expect(getByRole('link', { name: 'Edit' })).toBeVisible();
42-
await expect(getByRole('button', { name: 'Delete' })).toBeVisible();
50+
await expect(getByRole("link", { name: /Back to list/ })).toBeVisible();
51+
await expect(getByRole("link", { name: "Edit" })).toBeVisible();
52+
await expect(getByRole("button", { name: "Delete" })).toBeVisible();
4353
});

yarn.lock

+28-28
Original file line numberDiff line numberDiff line change
@@ -10,18 +10,18 @@
1010
"@jridgewell/gen-mapping" "^0.3.5"
1111
"@jridgewell/trace-mapping" "^0.3.24"
1212

13-
"@angular-devkit/[email protected].5":
14-
version "0.1800.5"
15-
resolved "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1800.5.tgz"
16-
integrity sha512-KliFJTqwAIyRvW10JnJLlpXK86yx683unTgwgvkg9V4gUc/7cNCmWJiOCmYh1+gATpFq+3d3o36EdTzb4QS03g==
13+
"@angular-devkit/[email protected].6":
14+
version "0.1800.6"
15+
resolved "https://registry.npmjs.org/@angular-devkit/architect/-/architect-0.1800.6.tgz"
16+
integrity sha512-VJ08XM9XR8d3ldXEMIeaiamBSvQqX+ucIKw73zubP37yFVAuvXriDOFskcouVUT0RxWXIZVcNxrgp2t3FE4F6w==
1717
dependencies:
18-
"@angular-devkit/core" "18.0.5"
18+
"@angular-devkit/core" "18.0.6"
1919
rxjs "7.8.1"
2020

21-
"@angular-devkit/[email protected].5":
22-
version "18.0.5"
23-
resolved "https://registry.npmjs.org/@angular-devkit/core/-/core-18.0.5.tgz"
24-
integrity sha512-sGtrS0SqkcBvyuv0QkIfyadwPgDhMroz1r51lMh1hwzJaJ0LNuVMLviEeYIybeBnvAdp9YvYC8I1WgB/FUEFBw==
21+
"@angular-devkit/[email protected].6":
22+
version "18.0.6"
23+
resolved "https://registry.npmjs.org/@angular-devkit/core/-/core-18.0.6.tgz"
24+
integrity sha512-07U0S2fpUBjkg4k6uAEQQHSFfearyHGrONlgkxAlk7HWM5jfHp/8D2+ui1OFZgXpSAHF2C5gULbze/2o9ZNgag==
2525
dependencies:
2626
ajv "8.13.0"
2727
ajv-formats "3.0.1"
@@ -30,26 +30,26 @@
3030
rxjs "7.8.1"
3131
source-map "0.7.4"
3232

33-
"@angular-devkit/[email protected].5":
34-
version "18.0.5"
35-
resolved "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.0.5.tgz"
36-
integrity sha512-hZwAq3hwuJzCuh7uqO/7T9IMERhYVxz+ganJlEykpyr58o0IjUM1Q4ZSH5UOYlGRPdBCZJbfiafZ0Sg5w5xBww==
33+
"@angular-devkit/[email protected].6":
34+
version "18.0.6"
35+
resolved "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-18.0.6.tgz"
36+
integrity sha512-lzjPp8qWV4p3reyKZ2QRF7rQYc17WMCR61vKldQJBuJrS30yx87x22ASn4BCAo7kKKRv8gXJmoXjCPDFlcfRsw==
3737
dependencies:
38-
"@angular-devkit/core" "18.0.5"
38+
"@angular-devkit/core" "18.0.6"
3939
jsonc-parser "3.2.1"
4040
magic-string "0.30.10"
4141
ora "5.4.1"
4242
rxjs "7.8.1"
4343

44-
"@angular/cli@^18.0.5":
45-
version "18.0.5"
46-
resolved "https://registry.npmjs.org/@angular/cli/-/cli-18.0.5.tgz"
47-
integrity sha512-w3NOdj6T7QhBmFleavc+AEhcAMyPkt7RsyWW2saufD6x55gzynGQZb9UBZwKDUAR6UtqchBX/HEBWCLNnjbiHg==
44+
"@angular/cli@^18.0.6":
45+
version "18.0.6"
46+
resolved "https://registry.npmjs.org/@angular/cli/-/cli-18.0.6.tgz"
47+
integrity sha512-T0ii60zVqBzxtC4jusKkR5YOdubP5+n9SPd8gm9Dat4jUeePc5O5+6qmjpFXZlibxLNSVIm89hLBb7/rMJIkIg==
4848
dependencies:
49-
"@angular-devkit/architect" "0.1800.5"
50-
"@angular-devkit/core" "18.0.5"
51-
"@angular-devkit/schematics" "18.0.5"
52-
"@schematics/angular" "18.0.5"
49+
"@angular-devkit/architect" "0.1800.6"
50+
"@angular-devkit/core" "18.0.6"
51+
"@angular-devkit/schematics" "18.0.6"
52+
"@schematics/angular" "18.0.6"
5353
"@yarnpkg/lockfile" "1.1.0"
5454
ansi-colors "4.1.3"
5555
ini "4.1.2"
@@ -1625,13 +1625,13 @@
16251625
dependencies:
16261626
playwright "1.44.1"
16271627

1628-
"@schematics/[email protected].5":
1629-
version "18.0.5"
1630-
resolved "https://registry.npmjs.org/@schematics/angular/-/angular-18.0.5.tgz"
1631-
integrity sha512-dV50GIEGl6S5wE6xtAhmHWdLhsOlnNUpAx/v3BPR2AOr90zJvIM03TqAQTzAlnPatxK2WLelRgqVMbPfAVvLAg==
1628+
"@schematics/[email protected].6":
1629+
version "18.0.6"
1630+
resolved "https://registry.npmjs.org/@schematics/angular/-/angular-18.0.6.tgz"
1631+
integrity sha512-SZ73nNhCengIOy3GCUbLL++GdpaQ5T9bh05OAdQJuUNtwz1ot8QoQjkcbumKIfTicwMiLxy+OR4sZN1VcUVYpQ==
16321632
dependencies:
1633-
"@angular-devkit/core" "18.0.5"
1634-
"@angular-devkit/schematics" "18.0.5"
1633+
"@angular-devkit/core" "18.0.6"
1634+
"@angular-devkit/schematics" "18.0.6"
16351635
jsonc-parser "3.2.1"
16361636

16371637
"@sideway/address@^4.1.5":

0 commit comments

Comments
 (0)