mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-18 10:31:15 +00:00
fix(editor): Respect tag querystring filter when listing workflows (#11029)
This commit is contained in:
@@ -73,4 +73,28 @@ describe('Workflows', () => {
|
|||||||
|
|
||||||
WorkflowsPage.getters.newWorkflowButtonCard().should('be.visible');
|
WorkflowsPage.getters.newWorkflowButtonCard().should('be.visible');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it('should respect tag querystring filter when listing workflows', () => {
|
||||||
|
WorkflowsPage.getters.newWorkflowButtonCard().click();
|
||||||
|
|
||||||
|
cy.createFixtureWorkflow('Test_workflow_2.json', getUniqueWorkflowName('My New Workflow'));
|
||||||
|
|
||||||
|
cy.visit(WorkflowsPage.url);
|
||||||
|
|
||||||
|
WorkflowsPage.getters.createWorkflowButton().click();
|
||||||
|
|
||||||
|
cy.createFixtureWorkflow('Test_workflow_1.json', 'Empty State Card Workflow');
|
||||||
|
|
||||||
|
cy.visit(WorkflowsPage.url);
|
||||||
|
|
||||||
|
WorkflowsPage.getters.workflowFilterButton().click();
|
||||||
|
|
||||||
|
WorkflowsPage.getters.workflowTagsDropdown().click();
|
||||||
|
|
||||||
|
WorkflowsPage.getters.workflowTagItem('some-tag-1').click();
|
||||||
|
|
||||||
|
cy.reload();
|
||||||
|
|
||||||
|
WorkflowsPage.getters.workflowCards().should('have.length', 1);
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -22,6 +22,7 @@ describe('WorkflowsView', () => {
|
|||||||
let projectsStore: ReturnType<typeof useProjectsStore>;
|
let projectsStore: ReturnType<typeof useProjectsStore>;
|
||||||
|
|
||||||
const routerReplaceMock = vi.fn();
|
const routerReplaceMock = vi.fn();
|
||||||
|
const routerPushMock = vi.fn();
|
||||||
|
|
||||||
const renderComponent = createComponentRenderer(WorkflowsView, {
|
const renderComponent = createComponentRenderer(WorkflowsView, {
|
||||||
global: {
|
global: {
|
||||||
@@ -32,6 +33,7 @@ describe('WorkflowsView', () => {
|
|||||||
},
|
},
|
||||||
$router: {
|
$router: {
|
||||||
replace: routerReplaceMock,
|
replace: routerReplaceMock,
|
||||||
|
push: routerPushMock,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ interface Filters {
|
|||||||
tags: string[];
|
tags: string[];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type QueryFilters = Partial<Filters>;
|
||||||
|
|
||||||
const StatusFilter = {
|
const StatusFilter = {
|
||||||
ACTIVE: true,
|
ACTIVE: true,
|
||||||
DEACTIVATED: false,
|
DEACTIVATED: false,
|
||||||
@@ -152,6 +154,9 @@ const WorkflowsView = defineComponent({
|
|||||||
},
|
},
|
||||||
async mounted() {
|
async mounted() {
|
||||||
this.documentTitle.set(this.$locale.baseText('workflows.heading'));
|
this.documentTitle.set(this.$locale.baseText('workflows.heading'));
|
||||||
|
|
||||||
|
await this.tagsStore.fetchAll();
|
||||||
|
|
||||||
await this.setFiltersFromQueryString();
|
await this.setFiltersFromQueryString();
|
||||||
|
|
||||||
void this.usersStore.showPersonalizationSurvey();
|
void this.usersStore.showPersonalizationSurvey();
|
||||||
@@ -263,10 +268,20 @@ const WorkflowsView = defineComponent({
|
|||||||
isValidProjectId(projectId: string) {
|
isValidProjectId(projectId: string) {
|
||||||
return this.projectsStore.availableProjects.some((project) => project.id === projectId);
|
return this.projectsStore.availableProjects.some((project) => project.id === projectId);
|
||||||
},
|
},
|
||||||
|
async removeInvalidQueryFiltersFromUrl(filtersToApply: QueryFilters) {
|
||||||
|
await this.$router.push({
|
||||||
|
query: {
|
||||||
|
...(filtersToApply.tags && { tags: filtersToApply.tags?.join(',') }),
|
||||||
|
...(filtersToApply.status && { status: filtersToApply.status?.toString() }),
|
||||||
|
...(filtersToApply.search && { search: filtersToApply.search }),
|
||||||
|
...(filtersToApply.homeProject && { homeProject: filtersToApply.homeProject }),
|
||||||
|
},
|
||||||
|
});
|
||||||
|
},
|
||||||
async setFiltersFromQueryString() {
|
async setFiltersFromQueryString() {
|
||||||
const { tags, status, search, homeProject } = this.$route.query;
|
const { tags, status, search, homeProject } = this.$route.query;
|
||||||
|
|
||||||
const filtersToApply: { [key: string]: string | string[] | boolean } = {};
|
const filtersToApply: QueryFilters = {};
|
||||||
|
|
||||||
if (homeProject && typeof homeProject === 'string') {
|
if (homeProject && typeof homeProject === 'string') {
|
||||||
await this.projectsStore.getAvailableProjects();
|
await this.projectsStore.getAvailableProjects();
|
||||||
@@ -295,6 +310,8 @@ const WorkflowsView = defineComponent({
|
|||||||
filtersToApply.status = status === 'true';
|
filtersToApply.status = status === 'true';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
await this.removeInvalidQueryFiltersFromUrl(filtersToApply);
|
||||||
|
|
||||||
if (Object.keys(filtersToApply).length) {
|
if (Object.keys(filtersToApply).length) {
|
||||||
this.filters = {
|
this.filters = {
|
||||||
...this.filters,
|
...this.filters,
|
||||||
|
|||||||
Reference in New Issue
Block a user