From 21aba089ca0af345648e229d07d602dd4f79270f Mon Sep 17 00:00:00 2001 From: RitaDias Date: Thu, 16 Jan 2025 14:09:00 +0100 Subject: [PATCH] test(e2e): add checks for properties in reference tests (#8279) --- .../schema/debug/simpleReferences.js | 8 ++ .../inputs/ReferenceInput/CreateButton.tsx | 1 + test/e2e/tests/inputs/reference.spec.ts | 125 ++++++++++++++++++ 3 files changed, 134 insertions(+) diff --git a/dev/test-studio/schema/debug/simpleReferences.js b/dev/test-studio/schema/debug/simpleReferences.js index e373c2bc4d3..dc9708c8b34 100644 --- a/dev/test-studio/schema/debug/simpleReferences.js +++ b/dev/test-studio/schema/debug/simpleReferences.js @@ -20,5 +20,13 @@ export const simpleReferences = { type: 'reference', to: [{type: 'simpleReferences'}], }, + { + name: 'referenceFieldWeak', + title: 'Reference field', + description: 'A simple reference field where weak is set to true', + type: 'reference', + weak: true, + to: [{type: 'simpleReferences'}], + }, ], } diff --git a/packages/sanity/src/core/form/inputs/ReferenceInput/CreateButton.tsx b/packages/sanity/src/core/form/inputs/ReferenceInput/CreateButton.tsx index a707c11af63..7eecc0b7178 100644 --- a/packages/sanity/src/core/form/inputs/ReferenceInput/CreateButton.tsx +++ b/packages/sanity/src/core/form/inputs/ReferenceInput/CreateButton.tsx @@ -120,6 +120,7 @@ export function CreateButton(props: Props) { onClick={() => onCreate(createOptions[0])} icon={AddIcon} size="large" + data-testid={`create-new-document-select-${id}`} /> ) } diff --git a/test/e2e/tests/inputs/reference.spec.ts b/test/e2e/tests/inputs/reference.spec.ts index 7f3978fdb45..9525432e34e 100644 --- a/test/e2e/tests/inputs/reference.spec.ts +++ b/test/e2e/tests/inputs/reference.spec.ts @@ -64,4 +64,129 @@ withDefaultClient((context) => { publishButton.click() await expect(paneFooter).toContainText('Published just now') }) + + test(`_strengthenOnPublish and _weak properties exist when adding reference`, async ({ + page, + createDraftDocument, + }) => { + const originalTitle = 'Initial Doc' + + await createDraftDocument('/test/content/input-standard;referenceTest') + page.getByTestId('string-input').fill(originalTitle) + + /** create reference */ + await page.getByTestId('create-new-document-select-aliasRef-selectTypeMenuButton').click() + + // Wait for the new document referenced to be created & loaded + await expect(page.getByTestId('document-panel-document-title').nth(1)).toContainText('Untitled') + + // switch to original doc + page.getByRole('button', {name: originalTitle}).click() + + // open the context menu + page.getByTestId('pane-context-menu-button').first().click() + page.getByTestId('action-inspect').click() + + /** Checks that the properties were added when a weak reference is added */ + await expect( + page.getByText('aliasRef._strengthenOnPublish_strengthenOnPublish:{…} 3 properties'), + ).toBeVisible() + await expect(page.getByText('aliasRef._weak_weak:true')).toBeVisible() + }) + + test(`_strengthenOnPublish and _weak properties are removed when the reference and document are published`, async ({ + page, + createDraftDocument, + }) => { + // this is in a situation where the _strengthenOnPublish.weak is not set + + test.slow() + const originalTitle = 'Initial Doc' + const documentStatus = page.getByTestId('pane-footer-document-status') + + await createDraftDocument('/test/content/input-debug;simpleReferences') + page.getByTestId('string-input').fill(originalTitle) + + /** create reference */ + await expect( + page.getByTestId('create-new-document-select-referenceField-selectTypeMenuButton'), + ).toBeVisible() + page.getByTestId('create-new-document-select-referenceField-selectTypeMenuButton').click() + + // wait for the reference document to open + await expect(page.getByTestId('document-panel-document-title').nth(1)).toContainText('Untitled') + + // update and publish the reference + page.getByTestId('string-input').nth(1).fill('Reference test') + await expect(page.getByTestId('document-panel-document-title').nth(1)).toContainText( + 'Reference test', + ) + page.getByTestId('action-publish').nth(1).click() // publish reference + await expect(documentStatus.nth(1)).toContainText('Published just now') + + /** --- IN ORIGINAL DOC --- */ + page.getByRole('button', {name: originalTitle}).click() + + page.getByTestId('action-publish').first().click() // publish reference + + await expect(documentStatus.first()).toContainText('Published just now') + + // open the context menu + page.getByTestId('pane-context-menu-button').first().click() + page.getByTestId('action-inspect').click() + + /** Checks that the properties were added when a weak reference is added */ + await expect( + page.getByText('referenceField._strengthenOnPublish_strengthenOnPublish:{…} 3 properties'), + ).not.toBeVisible() + await expect(page.getByText('referenceField._weak_weak:true')).not.toBeVisible() + }) + + test(`when reference is set to weak: true, it shouldn't strength on publish`, async ({ + page, + createDraftDocument, + }) => { + // this is in a situation where the _strengthenOnPublish.weak is not set + + test.slow() + const originalTitle = 'Initial Doc' + const documentStatus = page.getByTestId('pane-footer-document-status') + + await createDraftDocument('/test/content/input-debug;simpleReferences') + page.getByTestId('string-input').fill(originalTitle) + + /** create reference */ + await expect( + page.getByTestId('create-new-document-select-referenceFieldWeak-selectTypeMenuButton'), + ).toBeVisible() + page.getByTestId('create-new-document-select-referenceFieldWeak-selectTypeMenuButton').click() + + // wait for the reference document to open + await expect(page.getByTestId('document-panel-document-title').nth(1)).toContainText('Untitled') + + // update and publish the reference + page.getByTestId('string-input').nth(1).fill('Reference test') + await expect(page.getByTestId('document-panel-document-title').nth(1)).toContainText( + 'Reference test', + ) + page.getByTestId('action-publish').nth(1).click() // publish reference + await expect(documentStatus.nth(1)).toContainText('Published just now') + + /** --- IN ORIGINAL DOC --- */ + page.getByRole('button', {name: originalTitle}).click() + + page.getByTestId('action-publish').first().click() // publish reference + + await expect(documentStatus.first()).toContainText('Published just now') + + // open the context menu + page.getByTestId('pane-context-menu-button').first().click() + page.getByTestId('action-inspect').click() + + /** Checks that the properties were added when a weak reference is added */ + await expect( + page.getByText('referenceField._strengthenOnPublish_strengthenOnPublish:{…} 3 properties'), + ).not.toBeVisible() + await expect(page.getByText('referenceFieldWeak._weak_weak')).toBeVisible() + }) })