From bfd093bbf2c90d2e5a9f960a238466db83546fc5 Mon Sep 17 00:00:00 2001 From: SebastianMC Date: Mon, 26 Sep 2022 16:40:24 +0200 Subject: [PATCH] 13 - Feature request: Sort by modification date, treating folder and files equally - added unit tests coverage for the extended sorting methods in sorting specification processor --- .../sorting-spec-processor.spec.ts | 96 +++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/src/custom-sort/sorting-spec-processor.spec.ts b/src/custom-sort/sorting-spec-processor.spec.ts index b96eef4..288d0b7 100644 --- a/src/custom-sort/sorting-spec-processor.spec.ts +++ b/src/custom-sort/sorting-spec-processor.spec.ts @@ -865,6 +865,102 @@ describe('SortingSpecProcessor path wildcard priorities', () => { }) }) +const txtInputAdvancedFolderDateSortingMethods: string = ` +target-folder: A +< advanced modified +target-folder: B +> advanced modified +target-folder: C +< advanced created +target-folder: D +> advanced created +target-folder: AA +/folders + < advanced modified +/:files + > advanced modified +/folders Archive... + < advanced created +/:files Archive... + > advanced created +` + +const expectedSortSpecForAdvancedFolderDateSortingMethods: { [key: string]: CustomSortSpec } = { + 'A': { + defaultOrder: CustomSortOrder.byModifiedTimeAdvanced, + groups: [{ + order: CustomSortOrder.byModifiedTimeAdvanced, + type: CustomSortGroupType.Outsiders + }], + outsidersGroupIdx: 0, + targetFoldersPaths: ['A'] + }, + 'B': { + defaultOrder: CustomSortOrder.byModifiedTimeReverseAdvanced, + groups: [{ + order: CustomSortOrder.byModifiedTimeReverseAdvanced, + type: CustomSortGroupType.Outsiders + }], + outsidersGroupIdx: 0, + targetFoldersPaths: ['B'] + }, + 'C': { + defaultOrder: CustomSortOrder.byCreatedTimeAdvanced, + groups: [{ + order: CustomSortOrder.byCreatedTimeAdvanced, + type: CustomSortGroupType.Outsiders + }], + outsidersGroupIdx: 0, + targetFoldersPaths: ['C'] + }, + 'D': { + defaultOrder: CustomSortOrder.byCreatedTimeReverseAdvanced, + groups: [{ + order: CustomSortOrder.byCreatedTimeReverseAdvanced, + type: CustomSortGroupType.Outsiders + }], + outsidersGroupIdx: 0, + targetFoldersPaths: ['D'] + }, + 'AA': { + groups: [{ + foldersOnly: true, + order: CustomSortOrder.byModifiedTimeAdvanced, + type: CustomSortGroupType.Outsiders + }, { + filesOnly: true, + order: CustomSortOrder.byModifiedTimeReverseAdvanced, + type: CustomSortGroupType.Outsiders + }, { + exactPrefix: 'Archive', + foldersOnly: true, + order: CustomSortOrder.byCreatedTimeAdvanced, + type: 3 + }, { + exactPrefix: 'Archive', + filesOnly: true, + order: CustomSortOrder.byCreatedTimeReverseAdvanced, + type: 3 + }], + outsidersFilesGroupIdx: 1, + outsidersFoldersGroupIdx: 0, + targetFoldersPaths: ['AA'] + } +} + +describe('SortingSpecProcessor advanced folder-date based sorting methods', () => { + let processor: SortingSpecProcessor; + beforeEach(() => { + processor = new SortingSpecProcessor(); + }); + it('should not raise error for multiple spec for the same path and choose correct spec, case A', () => { + const inputTxtArr: Array = txtInputAdvancedFolderDateSortingMethods.split('\n') + const result = processor.parseSortSpecFromText(inputTxtArr, 'mock-folder', 'custom-name-note.md') + expect(result?.sortSpecByPath).toEqual(expectedSortSpecForAdvancedFolderDateSortingMethods) + expect(result?.sortSpecByWildcard).toBeUndefined() + }) +}) + const errorsLogger = jest.fn(); const ERR_PREFIX = 'Sorting specification problem:'