diff --git a/cypress/pages/credentials.ts b/cypress/pages/credentials.ts index b7b68504f9..637eea1783 100644 --- a/cypress/pages/credentials.ts +++ b/cypress/pages/credentials.ts @@ -31,7 +31,7 @@ export class CredentialsPage extends BasePage { credentialDeleteButton: () => cy.getByTestId('action-toggle-dropdown').filter(':visible').contains('Delete'), credentialMoveButton: () => - cy.getByTestId('action-toggle-dropdown').filter(':visible').contains('Move'), + cy.getByTestId('action-toggle-dropdown').filter(':visible').contains('Change owner'), sort: () => cy.getByTestId('resources-list-sort').first(), sortOption: (label: string) => cy.getByTestId('resources-list-sort-item').contains(label).first(), diff --git a/packages/frontend/@n8n/i18n/src/locales/en.json b/packages/frontend/@n8n/i18n/src/locales/en.json index f5d603da24..e00a7646cd 100644 --- a/packages/frontend/@n8n/i18n/src/locales/en.json +++ b/packages/frontend/@n8n/i18n/src/locales/en.json @@ -644,7 +644,7 @@ "credentials.empty.button.disabled.tooltip": "Your current role in the project does not allow you to create credentials", "credentials.item.open": "Open", "credentials.item.delete": "Delete", - "credentials.item.move": "Move", + "credentials.item.move": "Change owner", "credentials.item.updated": "Last updated", "credentials.item.created": "Created", "credentials.item.owner": "Owner", diff --git a/packages/frontend/editor-ui/src/components/CredentialCard.test.ts b/packages/frontend/editor-ui/src/components/CredentialCard.test.ts index e5b0b8b7e9..f0c190a2a4 100644 --- a/packages/frontend/editor-ui/src/components/CredentialCard.test.ts +++ b/packages/frontend/editor-ui/src/components/CredentialCard.test.ts @@ -63,7 +63,7 @@ describe('CredentialCard', () => { expect(badge).toHaveTextContent('John Doe'); }); - it('should show Move action only if there is resource permission and not on community plan', async () => { + it('should show Change owner action only if there is resource permission and not on community plan', async () => { vi.spyOn(projectsStore, 'isTeamProjectFeatureEnabled', 'get').mockReturnValue(true); const data = createCredential({ @@ -84,7 +84,7 @@ describe('CredentialCard', () => { if (!actions) { throw new Error('Actions menu not found'); } - expect(actions).toHaveTextContent('Move'); + expect(actions).toHaveTextContent('Change owner'); }); it('should set readOnly variant based on prop', () => { diff --git a/packages/frontend/editor-ui/src/components/MainHeader/WorkflowDetails.test.ts b/packages/frontend/editor-ui/src/components/MainHeader/WorkflowDetails.test.ts index 4320eca347..441d067820 100644 --- a/packages/frontend/editor-ui/src/components/MainHeader/WorkflowDetails.test.ts +++ b/packages/frontend/editor-ui/src/components/MainHeader/WorkflowDetails.test.ts @@ -6,7 +6,9 @@ import { MODAL_CONFIRM, VIEWS, WORKFLOW_SHARE_MODAL_KEY, + PROJECT_MOVE_RESOURCE_MODAL, } from '@/constants'; +import type { IWorkflowDb } from '@/Interface'; import { STORES } from '@n8n/stores'; import { createTestingPinia } from '@pinia/testing'; import userEvent from '@testing-library/user-event'; @@ -59,6 +61,11 @@ const initialState = { enterprise: { [EnterpriseEditionFeature.Sharing]: true, [EnterpriseEditionFeature.WorkflowHistory]: true, + projects: { + team: { + limit: -1, + }, + }, }, }, areTagsEnabled: true, @@ -394,6 +401,27 @@ describe('WorkflowDetails', () => { name: VIEWS.WORKFLOWS, }); }); + + it("should call onWorkflowMenuSelect on 'Change owner' option click", async () => { + const openModalSpy = vi.spyOn(uiStore, 'openModalWithData'); + + workflowsStore.workflowsById = { [workflow.id]: workflow as IWorkflowDb }; + + const { getByTestId } = renderComponent({ + props: { + ...workflow, + scopes: ['workflow:move'], + }, + }); + + await userEvent.click(getByTestId('workflow-menu')); + await userEvent.click(getByTestId('workflow-menu-item-change-owner')); + + expect(openModalSpy).toHaveBeenCalledWith({ + name: PROJECT_MOVE_RESOURCE_MODAL, + data: expect.objectContaining({ resource: expect.objectContaining({ id: workflow.id }) }), + }); + }); }); describe('Archived badge', () => { diff --git a/packages/frontend/editor-ui/src/components/MainHeader/WorkflowDetails.vue b/packages/frontend/editor-ui/src/components/MainHeader/WorkflowDetails.vue index de2d1f9b39..3891974ec4 100644 --- a/packages/frontend/editor-ui/src/components/MainHeader/WorkflowDetails.vue +++ b/packages/frontend/editor-ui/src/components/MainHeader/WorkflowDetails.vue @@ -1,49 +1,39 @@