mirror of
https://github.com/MrUnknownDE/VRCX.git
synced 2026-04-18 22:33:50 +02:00
use oxfmt instead of prettier
This commit is contained in:
@@ -124,9 +124,7 @@
|
||||
const data = playerModerationTable.value.data;
|
||||
const typeFilter = playerModerationTable.value.filters?.[0]?.value ?? [];
|
||||
const searchFilter = playerModerationTable.value.filters?.[1]?.value ?? '';
|
||||
const typeSet = Array.isArray(typeFilter)
|
||||
? new Set(typeFilter.map((value) => String(value).toLowerCase()))
|
||||
: null;
|
||||
const typeSet = Array.isArray(typeFilter) ? new Set(typeFilter.map((value) => String(value).toLowerCase())) : null;
|
||||
const searchValue = String(searchFilter).trim().toLowerCase();
|
||||
|
||||
return data.filter((row) => {
|
||||
|
||||
@@ -35,17 +35,18 @@ vi.mock('pinia', async (importOriginal) => {
|
||||
|
||||
vi.mock('vue-i18n', () => ({
|
||||
useI18n: () => ({
|
||||
t: (key) => key
|
||||
,
|
||||
locale: require('vue').ref('en')
|
||||
})
|
||||
t: (key) => key,
|
||||
locale: require('vue').ref('en')
|
||||
})
|
||||
}));
|
||||
|
||||
vi.mock('../../../stores', () => ({
|
||||
useModerationStore: () => ({
|
||||
playerModerationTable: mocks.playerModerationTable,
|
||||
refreshPlayerModerations: (...args) => mocks.refreshPlayerModerations(...args),
|
||||
handlePlayerModerationDelete: (...args) => mocks.handlePlayerModerationDelete(...args)
|
||||
refreshPlayerModerations: (...args) =>
|
||||
mocks.refreshPlayerModerations(...args),
|
||||
handlePlayerModerationDelete: (...args) =>
|
||||
mocks.handlePlayerModerationDelete(...args)
|
||||
}),
|
||||
useAppearanceSettingsStore: () => ({
|
||||
tablePageSizes: [10, 25, 50],
|
||||
@@ -68,12 +69,14 @@ vi.mock('../../../services/config.js', () => ({
|
||||
|
||||
vi.mock('../../../api', () => ({
|
||||
playerModerationRequest: {
|
||||
deletePlayerModeration: (...args) => mocks.deletePlayerModeration(...args)
|
||||
deletePlayerModeration: (...args) =>
|
||||
mocks.deletePlayerModeration(...args)
|
||||
}
|
||||
}));
|
||||
|
||||
vi.mock('../../../coordinators/moderationCoordinator', () => ({
|
||||
runRefreshPlayerModerationsFlow: (...args) => mocks.refreshPlayerModerations(...args)
|
||||
runRefreshPlayerModerationsFlow: (...args) =>
|
||||
mocks.refreshPlayerModerations(...args)
|
||||
}));
|
||||
|
||||
vi.mock('../../../shared/constants', async (importOriginal) => {
|
||||
@@ -120,7 +123,8 @@ vi.mock('@/components/ui/select', () => ({
|
||||
vi.mock('@/components/ui/button', () => ({
|
||||
Button: {
|
||||
emits: ['click'],
|
||||
template: '<button data-testid="moderation-button" @click="$emit(\'click\')"><slot /></button>'
|
||||
template:
|
||||
'<button data-testid="moderation-button" @click="$emit(\'click\')"><slot /></button>'
|
||||
}
|
||||
}));
|
||||
|
||||
@@ -189,15 +193,23 @@ describe('Moderation.vue', () => {
|
||||
|
||||
mocks.configGetString.mockResolvedValue('["block"]');
|
||||
mocks.modalConfirm.mockResolvedValue({ ok: true });
|
||||
mocks.deletePlayerModeration.mockResolvedValue({ ok: true, id: 'pm_1' });
|
||||
mocks.deletePlayerModeration.mockResolvedValue({
|
||||
ok: true,
|
||||
id: 'pm_1'
|
||||
});
|
||||
});
|
||||
|
||||
test('loads persisted moderation filter on init', async () => {
|
||||
mountModeration();
|
||||
await flushAsync();
|
||||
|
||||
expect(mocks.configGetString).toHaveBeenCalledWith('VRCX_playerModerationTableFilters', '[]');
|
||||
expect(mocks.playerModerationTable.value.filters[0].value).toEqual(['block']);
|
||||
expect(mocks.configGetString).toHaveBeenCalledWith(
|
||||
'VRCX_playerModerationTableFilters',
|
||||
'[]'
|
||||
);
|
||||
expect(mocks.playerModerationTable.value.filters[0].value).toEqual([
|
||||
'block'
|
||||
]);
|
||||
});
|
||||
|
||||
test('updates moderation filter and persists value', async () => {
|
||||
@@ -207,7 +219,9 @@ describe('Moderation.vue', () => {
|
||||
wrapper.vm.handleModerationFilterChange(['mute']);
|
||||
await nextTick();
|
||||
|
||||
expect(mocks.playerModerationTable.value.filters[0].value).toEqual(['mute']);
|
||||
expect(mocks.playerModerationTable.value.filters[0].value).toEqual([
|
||||
'mute'
|
||||
]);
|
||||
expect(mocks.configSetString).toHaveBeenCalledWith(
|
||||
'VRCX_playerModerationTableFilters',
|
||||
JSON.stringify(['mute'])
|
||||
@@ -216,11 +230,22 @@ describe('Moderation.vue', () => {
|
||||
|
||||
test('filters table rows by type and search text', async () => {
|
||||
mocks.playerModerationTable.value.data = [
|
||||
{ type: 'block', sourceDisplayName: 'Alpha', targetDisplayName: 'Beta' },
|
||||
{ type: 'mute', sourceDisplayName: 'Gamma', targetDisplayName: 'Delta' },
|
||||
{
|
||||
type: 'block',
|
||||
sourceDisplayName: 'Alpha',
|
||||
targetDisplayName: 'Beta'
|
||||
},
|
||||
{
|
||||
type: 'mute',
|
||||
sourceDisplayName: 'Gamma',
|
||||
targetDisplayName: 'Delta'
|
||||
},
|
||||
{ type: 'mute', sourceDisplayName: 'X', targetDisplayName: 'Alice' }
|
||||
];
|
||||
mocks.playerModerationTable.value.filters = [{ value: ['mute'] }, { value: 'ali' }];
|
||||
mocks.playerModerationTable.value.filters = [
|
||||
{ value: ['mute'] },
|
||||
{ value: 'ali' }
|
||||
];
|
||||
|
||||
const wrapper = mountModeration();
|
||||
await flushAsync();
|
||||
@@ -246,7 +271,10 @@ describe('Moderation.vue', () => {
|
||||
moderated: 'usr_1',
|
||||
type: 'mute'
|
||||
});
|
||||
expect(mocks.handlePlayerModerationDelete).toHaveBeenCalledWith({ ok: true, id: 'pm_1' });
|
||||
expect(mocks.handlePlayerModerationDelete).toHaveBeenCalledWith({
|
||||
ok: true,
|
||||
id: 'pm_1'
|
||||
});
|
||||
});
|
||||
|
||||
test('delete prompt confirms before deletion', async () => {
|
||||
|
||||
@@ -89,9 +89,16 @@ describe('views/Moderation/columns.jsx', () => {
|
||||
});
|
||||
|
||||
test('source and target cells open corresponding user dialog', () => {
|
||||
const cols = createColumns({ onDelete: vi.fn(), onDeletePrompt: vi.fn() });
|
||||
const sourceCol = cols.find((c) => c.accessorKey === 'sourceDisplayName');
|
||||
const targetCol = cols.find((c) => c.accessorKey === 'targetDisplayName');
|
||||
const cols = createColumns({
|
||||
onDelete: vi.fn(),
|
||||
onDeletePrompt: vi.fn()
|
||||
});
|
||||
const sourceCol = cols.find(
|
||||
(c) => c.accessorKey === 'sourceDisplayName'
|
||||
);
|
||||
const targetCol = cols.find(
|
||||
(c) => c.accessorKey === 'targetDisplayName'
|
||||
);
|
||||
const row = {
|
||||
original: {
|
||||
sourceUserId: 'usr_source',
|
||||
@@ -104,15 +111,24 @@ describe('views/Moderation/columns.jsx', () => {
|
||||
|
||||
const sourceCell = sourceCol.cell({ row });
|
||||
const targetCell = targetCol.cell({ row });
|
||||
findNode(sourceCell, (n) => n.type === 'span' && typeof n.props?.onClick === 'function').props.onClick();
|
||||
findNode(targetCell, (n) => n.type === 'span' && typeof n.props?.onClick === 'function').props.onClick();
|
||||
findNode(
|
||||
sourceCell,
|
||||
(n) => n.type === 'span' && typeof n.props?.onClick === 'function'
|
||||
).props.onClick();
|
||||
findNode(
|
||||
targetCell,
|
||||
(n) => n.type === 'span' && typeof n.props?.onClick === 'function'
|
||||
).props.onClick();
|
||||
|
||||
expect(mocks.showUserDialog).toHaveBeenNthCalledWith(1, 'usr_source');
|
||||
expect(mocks.showUserDialog).toHaveBeenNthCalledWith(2, 'usr_target');
|
||||
});
|
||||
|
||||
test('action cell hidden when source user is not current user', () => {
|
||||
const cols = createColumns({ onDelete: vi.fn(), onDeletePrompt: vi.fn() });
|
||||
const cols = createColumns({
|
||||
onDelete: vi.fn(),
|
||||
onDeletePrompt: vi.fn()
|
||||
});
|
||||
const actionCol = cols.find((c) => c.id === 'action');
|
||||
const vnode = actionCol.cell({
|
||||
row: {
|
||||
|
||||
Reference in New Issue
Block a user