Advertisement
djbob2000

Untitled

Jun 6th, 2025 (edited)
471
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* eslint-disable sonarjs/no-commented-code */
  2. // це просто для прикладу де воно лежить без пакету в коді
  3. // import { UiTester } from "@/test/fd-test-ui-tester/ui-tester";
  4. // import {
  5. //     editPoClickSaveButton,
  6. //     editPoSetInputValue,
  7. //     editPoToggleBooleanField,
  8. //     editPoWaitForUrl,
  9. // } from "@/test/meta/fd-meta-tester-ui/page-objects/edit-po";
  10. // import { listPoGoTo } from "@/test/meta/fd-meta-tester-ui/page-objects/list-po";
  11. // import { tablePoClickEditButton } from "@/test/meta/fd-meta-tester-ui/page-objects/table-po";
  12. // import { resourceNames } from "@common/fd/fd-toolbox/resources/resource-names";
  13. // import { login } from "@/test/ui-tests/auth/login-po";
  14. // import { personProps } from "@common/dev/props/person-props";
  15. // import { getUiTestPage } from "@/test/fd-test-ui-tester/global-ui-test";
  16. // import { selectWorkspacePoSelectWorkspace } from "@/test/meta/fd-meta-tester-ui/page-objects/select-workspace-po";
  17. // import { getCurrentWorkspaceId } from "@server/fd/fd-toolbox/providers/current-workspace-id-provider";
  18. // import { routes } from "@common/fd/fd-toolbox/routing/routes";
  19. // import { SeedTestData, seedTestData } from "@/test/test-data/seed-test-data";
  20. // import { editAssertHasNoValidationError, editAssertHasValidationError } from "@/test/ui-tests/edit-asserter";
  21. // import { getResourceById } from "@server/fd/fd-toolbox/db/db";
  22. // import { Person } from "@common/dev/persons/person.resource";
  23. // import { test, expect } from "playwright/test";
  24.  
  25.  
  26. import { UiTester } from "@/test/fd-test-ui-tester/ui-tester";
  27. import {
  28.     editPoClickSaveButton,
  29.     editPoSetInputValue,
  30.     editPoToggleBooleanField,
  31.     editPoWaitForUrl,
  32. } from "@/test/meta/fd-meta-tester-ui/page-objects/edit-po";
  33. import { listPoGoTo } from "@/test/meta/fd-meta-tester-ui/page-objects/list-po";
  34. import { tablePoClickEditButton } from "@/test/meta/fd-meta-tester-ui/page-objects/table-po";
  35. import { resourceNames } from "@common/fd/fd-toolbox/resources/resource-names";
  36. import { login } from "@/test/ui-tests/auth/login-po";
  37. import { personProps } from "@common/dev/props/person-props";
  38. import { getUiTestPage } from "@/test/fd-test-ui-tester/global-ui-test";
  39. import { selectWorkspacePoSelectWorkspace } from "@/test/meta/fd-meta-tester-ui/page-objects/select-workspace-po";
  40. import { getCurrentWorkspaceId } from "@server/fd/fd-toolbox/providers/current-workspace-id-provider";
  41. import { routes } from "@common/fd/fd-toolbox/routing/routes";
  42. import { SeedTestData, seedTestData } from "@/test/test-data/seed-test-data";
  43. import { editAssertHasNoValidationError, editAssertHasValidationError } from "@/test/ui-tests/edit-asserter";
  44. import { getResourceById } from "@server/fd/fd-toolbox/db/db";
  45. import { Person } from "@common/dev/persons/person.resource";
  46. import { test, expect } from "playwright/test";
  47.  
  48. test.describe("Dependent fields validation", () => {
  49.     let testData: SeedTestData;
  50.  
  51.     test.beforeEach(async () => {
  52.         const uiTester = new UiTester(getUiTestPage());
  53.         const workspaceId = await getCurrentWorkspaceId();
  54.         testData = await seedTestData(workspaceId);
  55.  
  56.         await login();
  57.         await uiTester.expectUrl(routes.view);
  58.  
  59.         await listPoGoTo(resourceNames.person);
  60.         await selectWorkspacePoSelectWorkspace(workspaceId);
  61.  
  62.         await tablePoClickEditButton(testData.samBrownPerson.id);
  63.         await editPoWaitForUrl(resourceNames.person, testData.samBrownPerson.id);
  64.     });
  65.  
  66.     test("Dependent fields are not required when 'Has kids' is off", async () => {
  67.         // Arrange
  68.         await editPoToggleBooleanField(personProps.hasKids); // Turn off
  69.  
  70.         // Act
  71.         await editPoSetInputValue(personProps.firstbornName, "");
  72.  
  73.         // Assert
  74.         await editAssertHasNoValidationError(personProps.firstbornName);
  75.         await editAssertHasNoValidationError(personProps.areKidsVaccinated);
  76.     });
  77.  
  78.     test("Dependent fields become required when 'Has kids' is on", async () => {
  79.         // Arrange
  80.         // 'Has kids' is on by default
  81.  
  82.         // Act
  83.         await editPoSetInputValue(personProps.firstbornName, "");
  84.         await editPoToggleBooleanField(personProps.areKidsVaccinated); // Turn off
  85.  
  86.         // Assert
  87.         await editAssertHasValidationError(personProps.firstbornName);
  88.         await editAssertHasValidationError(personProps.areKidsVaccinated);
  89.     });
  90.  
  91.     test("Validation errors disappear after filling the fields", async () => {
  92.         // Arrange
  93.         // 'Has kids' is on by default
  94.  
  95.         // Act
  96.         await editPoSetInputValue(personProps.firstbornName, "John");
  97.         await editPoToggleBooleanField(personProps.areKidsVaccinated); // Turn on
  98.  
  99.         // Assert
  100.         await editAssertHasNoValidationError(personProps.firstbornName);
  101.         await editAssertHasNoValidationError(personProps.areKidsVaccinated);
  102.     });
  103.  
  104.     test("Saves and verifies the data", async () => {
  105.         // Arrange
  106.         // 'Has kids' is on by default
  107.  
  108.         // Act
  109.         await editPoSetInputValue(personProps.firstbornName, "Jane");
  110.         await editPoToggleBooleanField(personProps.areKidsVaccinated); // Turn on
  111.         await editPoClickSaveButton(resourceNames.person);
  112.  
  113.         const person = await getResourceById<Person>(resourceNames.person, testData.samBrownPerson.id);
  114.  
  115.         // Assert
  116.         expect(person.hasKids).toBe(true);
  117.         expect(person.areKidsVaccinated).toBe(true);
  118.         expect(person.firstbornName).toBe("Jane");
  119.     });
  120. });
  121.  
  122. export async function editAssertHasValidationError(propertyName: string) {
  123.     const page = getUiTestPage();
  124.     const uiTester = new UiTester(page);
  125.     const elementId = propertyName + elementSuffixes.edit;
  126.     const element = await uiTester.getById(elementId);
  127.     await uiAssertEqual("true", await element.getAttribute("aria-invalid"));
  128. }
  129.  
  130. export async function editAssertHasNoValidationError(propertyName: string) {
  131.     const page = getUiTestPage();
  132.     const uiTester = new UiTester(page);
  133.     const elementId = propertyName + elementSuffixes.edit;
  134.     const element = await uiTester.getById(elementId);
  135.     await uiAssertEqual(null, await element.getAttribute("aria-invalid"));
  136. }
  137.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement