import { defineComponent } from 'vue';
import { createTestingPinia } from '@pinia/testing';
import { screen, within } from '@testing-library/vue';
import { vi } from 'vitest';
import { ROLE, type UsersList } from '@n8n/api-types';
import { type UserAction } from '@n8n/design-system';
import SettingsUsersTable from '@/components/SettingsUsers/SettingsUsersTable.vue';
import { createComponentRenderer } from '@/__tests__/render';
import { useEmitters } from '@/__tests__/utils';
import type { IUser } from '@/Interface';
const { emitters, addEmitter } = useEmitters<
'settingsUsersRoleCell' | 'settingsUsersActionsCell' | 'n8nDataTableServer'
>();
const hasPermission = vi.fn(() => true);
vi.mock('@/utils/rbac/permissions', () => ({
hasPermission: () => hasPermission(),
}));
vi.mock('@/components/SettingsUsers/SettingsUsersRoleCell.vue', () => ({
default: defineComponent({
setup(_, { emit }) {
addEmitter('settingsUsersRoleCell', emit);
},
template: '
',
}),
}));
vi.mock('@/components/SettingsUsers/SettingsUsersActionsCell.vue', () => ({
default: defineComponent({
props: {
data: { type: Object, required: true },
actions: { type: Array, required: true },
},
setup(_, { emit }) {
addEmitter('settingsUsersActionsCell', emit);
},
template:
'',
}),
}));
// Mock N8nDataTableServer to emit events
vi.mock('@n8n/design-system', async (importOriginal) => {
const original = await importOriginal