113 lines
4.7 KiB
TypeScript
113 lines
4.7 KiB
TypeScript
import {
|
|
TAbstractFile,
|
|
TFolder,
|
|
Vault
|
|
} from "obsidian";
|
|
import {
|
|
DEFAULT_FOLDER_CTIME,
|
|
determineFolderDatesIfNeeded,
|
|
determineSortingGroup,
|
|
FolderItemForSorting
|
|
} from "../../custom-sort/custom-sort";
|
|
import {
|
|
CustomSortGroupType,
|
|
CustomSortOrder,
|
|
CustomSortSpec
|
|
} from "../../custom-sort/custom-sort-types";
|
|
import {
|
|
TIMESTAMP_OLDEST,
|
|
TIMESTAMP_NEWEST,
|
|
mockTFolderWithChildren, TIMESTAMP_DEEP_NEWEST, TIMESTAMP_DEEP_OLDEST
|
|
} from "../mocks";
|
|
|
|
describe('determineFolderDatesIfNeeded', () => {
|
|
it('should not be triggered if not needed - sorting method does not require it', () => {
|
|
// given
|
|
const folder: TFolder = mockTFolderWithChildren('Test folder 1')
|
|
const OUTSIDERS_GROUP_IDX = 0
|
|
const sortSpec: CustomSortSpec = {
|
|
targetFoldersPaths: ['/'],
|
|
groups: [{
|
|
type: CustomSortGroupType.Outsiders,
|
|
sorting: { order: CustomSortOrder.alphabetical }
|
|
}],
|
|
outsidersGroupIdx: OUTSIDERS_GROUP_IDX
|
|
}
|
|
|
|
// when
|
|
const result: FolderItemForSorting = determineSortingGroup(folder, sortSpec)
|
|
determineFolderDatesIfNeeded([result], sortSpec)
|
|
|
|
// then
|
|
expect(result.ctime).toEqual(DEFAULT_FOLDER_CTIME)
|
|
expect(result.mtime).toEqual(DEFAULT_FOLDER_CTIME)
|
|
})
|
|
it.each(
|
|
[
|
|
[CustomSortOrder.byCreatedTimeReverseAdvanced, undefined],
|
|
[CustomSortOrder.byCreatedTimeAdvanced, undefined],
|
|
[CustomSortOrder.byModifiedTimeAdvanced, undefined],
|
|
[CustomSortOrder.byModifiedTimeReverseAdvanced, undefined],
|
|
[CustomSortOrder.alphabetical, CustomSortOrder.byCreatedTimeReverseAdvanced],
|
|
[CustomSortOrder.alphabetical, CustomSortOrder.byCreatedTimeAdvanced],
|
|
[CustomSortOrder.alphabetical, CustomSortOrder.byModifiedTimeAdvanced],
|
|
[CustomSortOrder.alphabetical, CustomSortOrder.byModifiedTimeReverseAdvanced],
|
|
])('should correctly determine dates, if triggered by %s under default %s (no deep orders requested)', (order: CustomSortOrder, folderOrder: CustomSortOrder | undefined) => {
|
|
// given
|
|
const folder: TFolder = mockTFolderWithChildren('Test folder 1')
|
|
const OUTSIDERS_GROUP_IDX = 0
|
|
const sortSpec: CustomSortSpec = {
|
|
targetFoldersPaths: ['/'],
|
|
defaultSorting: folderOrder ? { order: folderOrder } : undefined,
|
|
groups: [{
|
|
type: CustomSortGroupType.Outsiders,
|
|
sorting: { order: order }
|
|
}],
|
|
outsidersGroupIdx: OUTSIDERS_GROUP_IDX
|
|
}
|
|
|
|
// when
|
|
const result: FolderItemForSorting = determineSortingGroup(folder, sortSpec)
|
|
determineFolderDatesIfNeeded([result], sortSpec)
|
|
|
|
// then
|
|
expect(result.ctime).toEqual(TIMESTAMP_OLDEST)
|
|
expect(result.mtime).toEqual(TIMESTAMP_NEWEST)
|
|
})
|
|
it.each(
|
|
[
|
|
[CustomSortOrder.alphabetical, CustomSortOrder.byCreatedTimeReverseAdvancedRecursive],
|
|
[CustomSortOrder.alphabetical, CustomSortOrder.byCreatedTimeAdvancedRecursive],
|
|
[CustomSortOrder.alphabetical, CustomSortOrder.byModifiedTimeAdvancedRecursive],
|
|
[CustomSortOrder.alphabetical, CustomSortOrder.byModifiedTimeReverseAdvancedRecursive],
|
|
[CustomSortOrder.byCreatedTimeReverseAdvancedRecursive, CustomSortOrder.byCreatedTimeReverseAdvanced],
|
|
[CustomSortOrder.byCreatedTimeAdvancedRecursive, CustomSortOrder.byCreatedTimeAdvanced],
|
|
[CustomSortOrder.byModifiedTimeAdvancedRecursive, CustomSortOrder.byModifiedTimeAdvanced],
|
|
[CustomSortOrder.byModifiedTimeReverseAdvancedRecursive, CustomSortOrder.byModifiedTimeReverseAdvanced],
|
|
])('should correctly determine dates, if triggered by %s under default %s (deep orders)', (order: CustomSortOrder, folderOrder: CustomSortOrder | undefined) => {
|
|
// given
|
|
const folder: TFolder = mockTFolderWithChildren('Test folder 1')
|
|
const OUTSIDERS_GROUP_IDX = 0
|
|
const sortSpec: CustomSortSpec = {
|
|
targetFoldersPaths: ['/'],
|
|
defaultSorting: folderOrder ? { order: folderOrder} : undefined,
|
|
groups: [{
|
|
type: CustomSortGroupType.Outsiders,
|
|
sorting: { order: order }
|
|
}],
|
|
outsidersGroupIdx: OUTSIDERS_GROUP_IDX
|
|
}
|
|
|
|
// when
|
|
const result: FolderItemForSorting = determineSortingGroup(folder, sortSpec)
|
|
determineFolderDatesIfNeeded([result], sortSpec)
|
|
|
|
// then
|
|
expect(result.ctime).toEqual(TIMESTAMP_DEEP_OLDEST)
|
|
expect(result.mtime).toEqual(TIMESTAMP_DEEP_NEWEST)
|
|
})
|
|
})
|
|
|
|
|
|
|