文件
mynode/packages/lib/services/sortOrder/notesSortOrderUtils.test.ts
chen 301194963b
一些检查失败了
automerge / automerge (push) Has been cancelled
react-native-android-build-apk / AssembleRelease (push) Has been cancelled
Build macOS M1 / Main (push) Has been cancelled
Joplin Continuous Integration / Main (macos-15-intel) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / Main (ubuntu-22.04-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-11-vs2026-arm) (push) Has been cancelled
Joplin Continuous Integration / Main (windows-2025) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04) (push) Has been cancelled
Joplin Continuous Integration / ServerDockerImage (ubuntu-22.04-arm) (push) Has been cancelled
Joplin UI tests / Main (ubuntu-22.04) (push) Has been cancelled
Joplin UI tests / Main (windows-2025) (push) Has been cancelled
Joplin UI tests / Mobile (push) Has been cancelled
Close stale issues / ProcessStaleIssues (push) Has been cancelled
feat: Initial clean release of CHM
2026-11-04 11:29:39 +08:00

88 行
3.9 KiB
TypeScript

import { notesSortOrderNextField, setNotesSortOrder } from './notesSortOrderUtils';
import Setting from '../../models/Setting';
import { shimInit } from '../../shim-init-node';
describe('notesSortOrderUtils', () => {
beforeAll(() => {
shimInit();
Setting.autoSaveEnabled = false;
});
// Disabling as the test doesn't seem very useful.
// it('should always provide the same ordered fields', async () => {
// const expected = ['user_updated_time', 'user_created_time', 'title', 'order'];
// expect(notesSortOrderFieldArray()).toStrictEqual(expected);
// expect(notesSortOrderFieldArray()).toStrictEqual(expected);
// });
it('should provide the next field cyclically', async () => {
expect(notesSortOrderNextField('user_updated_time')).toBe('user_created_time');
expect(notesSortOrderNextField('order')).toBe('user_updated_time');
});
test('setNoteSortOrder(), when perFieldReversalEnabled is false', async () => {
Setting.setValue('notes.perFieldReversalEnabled', false);
// It should set field and reverse of sort order.
setNotesSortOrder('user_created_time', false);
expect(Setting.value('notes.sortOrder.field')).toBe('user_created_time');
expect(Setting.value('notes.sortOrder.reverse')).toBe(false);
setNotesSortOrder('user_updated_time', true);
expect(Setting.value('notes.sortOrder.field')).toBe('user_updated_time');
expect(Setting.value('notes.sortOrder.reverse')).toBe(true);
setNotesSortOrder('title', true);
expect(Setting.value('notes.sortOrder.field')).toBe('title');
expect(Setting.value('notes.sortOrder.reverse')).toBe(true);
// It should affect the current field of sort order, if arg1 is undefined.
setNotesSortOrder(undefined, false);
expect(Setting.value('notes.sortOrder.field')).toBe('title');
expect(Setting.value('notes.sortOrder.reverse')).toBe(false);
// it should only set field of sort order, if arg2 is undefined.
setNotesSortOrder('user_updated_time');
expect(Setting.value('notes.sortOrder.field')).toBe('user_updated_time');
expect(Setting.value('notes.sortOrder.reverse')).toBe(false);
// It should select the next field, if arg1 and arg2 are undefined.
setNotesSortOrder();
expect(Setting.value('notes.sortOrder.field')).toBe('user_created_time');
expect(Setting.value('notes.sortOrder.reverse')).toBe(false);
});
test('setNoteSortOrder(), when perFieldReversalEnabled is true', async () => {
Setting.setValue('notes.perFieldReversalEnabled', true);
// It should set field and reverse of sort order.
setNotesSortOrder('user_created_time', false);
expect(Setting.value('notes.sortOrder.field')).toBe('user_created_time');
expect(Setting.value('notes.sortOrder.reverse')).toBe(false);
setNotesSortOrder('user_updated_time', true);
expect(Setting.value('notes.sortOrder.field')).toBe('user_updated_time');
expect(Setting.value('notes.sortOrder.reverse')).toBe(true);
setNotesSortOrder('title', true);
expect(Setting.value('notes.sortOrder.field')).toBe('title');
expect(Setting.value('notes.sortOrder.reverse')).toBe(true);
// it should affect the current field of sort order, if arg1 is undefined.
setNotesSortOrder(undefined, false);
expect(Setting.value('notes.sortOrder.field')).toBe('title');
expect(Setting.value('notes.sortOrder.reverse')).toBe(false);
// It should remember a reverse state, if arg2 is undefined.
setNotesSortOrder('user_updated_time');
expect(Setting.value('notes.sortOrder.field')).toBe('user_updated_time');
expect(Setting.value('notes.sortOrder.reverse')).toBe(true);
// It should select the next field and remember a reverse state, if arg1 and arg2 are undefined.
setNotesSortOrder();
expect(Setting.value('notes.sortOrder.field')).toBe('user_created_time');
expect(Setting.value('notes.sortOrder.reverse')).toBe(false);
});
it('should not accept an invalid field name', async () => {
expect(() => setNotesSortOrder('hoge', true)).toThrow();
});
});