From 938b7def695bf17151f59b422dea92feb014ecb4 Mon Sep 17 00:00:00 2001 From: Jannik Stehle Date: Fri, 18 Nov 2022 12:41:30 +0100 Subject: [PATCH] Add unit tests for the conflictDialog class --- .../conflictHandling/conflictDialog.ts | 14 ++++--- .../conflictHandling/conflictDialog.spec.ts | 40 +++++++++++++++++++ 2 files changed, 49 insertions(+), 5 deletions(-) create mode 100644 packages/web-app-files/tests/unit/helpers/resource/conflictHandling/conflictDialog.spec.ts diff --git a/packages/web-app-files/src/helpers/resource/conflictHandling/conflictDialog.ts b/packages/web-app-files/src/helpers/resource/conflictHandling/conflictDialog.ts index 323d88bac5f..7ca9c128464 100644 --- a/packages/web-app-files/src/helpers/resource/conflictHandling/conflictDialog.ts +++ b/packages/web-app-files/src/helpers/resource/conflictHandling/conflictDialog.ts @@ -76,11 +76,15 @@ export class ConflictDialog { suggestMerge = false, separateSkipHandling = false // separate skip-handling between files and folders ): Promise { - const translatedSkipLabel = !separateSkipHandling - ? this.$gettext('Apply to all %{count} conflicts') - : resource.isFolder - ? this.$gettext('Apply to all %{count} folders') - : this.$gettext('Apply to all %{count} files') + let translatedSkipLabel + + if (!separateSkipHandling) { + translatedSkipLabel = this.$gettext('Apply to all %{count} conflicts') + } else if (resource.isFolder) { + translatedSkipLabel = this.$gettext('Apply to all %{count} folders') + } else { + translatedSkipLabel = this.$gettext('Apply to all %{count} files') + } return new Promise((resolve) => { let doForAllConflicts = false diff --git a/packages/web-app-files/tests/unit/helpers/resource/conflictHandling/conflictDialog.spec.ts b/packages/web-app-files/tests/unit/helpers/resource/conflictHandling/conflictDialog.spec.ts new file mode 100644 index 00000000000..a2997b9660f --- /dev/null +++ b/packages/web-app-files/tests/unit/helpers/resource/conflictHandling/conflictDialog.spec.ts @@ -0,0 +1,40 @@ +import { mockDeep } from 'jest-mock-extended' +import { Resource } from 'web-client' +import { ConflictDialog, ResolveConflict } from 'web-app-files/src/helpers/resource' + +const getConflictDialogInstance = ({ createModal = jest.fn() } = {}) => { + return new ConflictDialog(createModal, jest.fn(), jest.fn(), jest.fn(), jest.fn(), jest.fn()) +} + +describe('conflict dialog', () => { + describe('method "resolveAllConflicts"', () => { + it('should return the resolved conflicts including the resource(s) and the strategy', async () => { + const conflictDialog = getConflictDialogInstance() + const strategy = mockDeep() + conflictDialog.resolveFileExists = jest.fn().mockImplementation(() => ({ + strategy, + doForAllConflicts: false + })) + const resource = mockDeep({ name: 'someFile.txt' }) + const targetFolder = mockDeep({ path: '/' }) + const targetFolderResources = [mockDeep({ path: '/someFile.txt' })] + const resolvedConflicts = await conflictDialog.resolveAllConflicts( + [resource], + targetFolder, + targetFolderResources + ) + + expect(resolvedConflicts.length).toBe(1) + expect(resolvedConflicts[0].resource).toEqual(resource) + expect(resolvedConflicts[0].strategy).toEqual(strategy) + }) + }) + describe('method "resolveFileExists"', () => { + it('should create the modal in the end', () => { + const createModal = jest.fn() + const conflictDialog = getConflictDialogInstance({ createModal }) + conflictDialog.resolveFileExists(mockDeep(), 2, true) + expect(createModal).toHaveBeenCalledTimes(1) + }) + }) +})