From b0fba6dc9ab89784e72d69a71752f68e0255a7e0 Mon Sep 17 00:00:00 2001 From: Bartholomew Date: Fri, 29 Nov 2019 17:10:39 +0100 Subject: [PATCH] fix(backend-test): delete nested file path (#2930) --- .../src/__tests__/implementation.spec.js | 44 +++++++++++++++++++ .../src/implementation.js | 6 +-- 2 files changed, 46 insertions(+), 4 deletions(-) diff --git a/packages/netlify-cms-backend-test/src/__tests__/implementation.spec.js b/packages/netlify-cms-backend-test/src/__tests__/implementation.spec.js index 38b8a360..39a2f7ff 100644 --- a/packages/netlify-cms-backend-test/src/__tests__/implementation.spec.js +++ b/packages/netlify-cms-backend-test/src/__tests__/implementation.spec.js @@ -157,4 +157,48 @@ describe('test backend implementation', () => { }); }); }); + + describe('deleteFile', () => { + it('should delete entry by path', async () => { + window.repoFiles = { + posts: { + 'some-post.md': { + content: 'post content', + }, + }, + }; + + const backend = new TestBackend(); + + await backend.deleteFile('posts/some-post.md'); + expect(window.repoFiles).toEqual({ + posts: {}, + }); + }); + + it('should delete entry by nested path', async () => { + window.repoFiles = { + posts: { + dir1: { + dir2: { + 'some-post.md': { + content: 'post content', + }, + }, + }, + }, + }; + + const backend = new TestBackend(); + + await backend.deleteFile('posts/dir1/dir2/some-post.md'); + expect(window.repoFiles).toEqual({ + posts: { + dir1: { + dir2: {}, + }, + }, + }); + }); + }); }); diff --git a/packages/netlify-cms-backend-test/src/implementation.js b/packages/netlify-cms-backend-test/src/implementation.js index 4cf07740..e0a02d15 100644 --- a/packages/netlify-cms-backend-test/src/implementation.js +++ b/packages/netlify-cms-backend-test/src/implementation.js @@ -1,4 +1,4 @@ -import { attempt, isError, take } from 'lodash'; +import { attempt, isError, take, unset } from 'lodash'; import uuid from 'uuid/v4'; import { EditorialWorkflowError, Cursor, CURSOR_COMPATIBILITY_SYMBOL } from 'netlify-cms-lib-util'; import AuthenticationPage from './AuthenticationPage'; @@ -255,9 +255,7 @@ export default class TestBackend { if (assetIndex > -1) { this.assets.splice(assetIndex, 1); } else { - const folder = path.substring(0, path.lastIndexOf('/')); - const fileName = path.substring(path.lastIndexOf('/') + 1); - delete window.repoFiles[folder][fileName]; + unset(window.repoFiles, path.split('/')); } return Promise.resolve();