mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-20 17:32:15 +03:00
831a76505c
https://github.com/TryGhost/Toolbox/issues/523 - During import process of content files the files from the root directory were also copied over. This is causing chaos in the root of content folder with files that only needed for data import. For example, the csv files needed for Revue import were also copied over by "file importer" even though those do not belong to any content. - Any content import files - images, media, files, should be in according folders in the imported zip file. The root files in the base zip directory are for data-related imports
101 lines
3.9 KiB
JavaScript
101 lines
3.9 KiB
JavaScript
const assert = require('assert');
|
|
const ImporterContentFileHandler = require('../index');
|
|
|
|
describe('ImporterContentFileHandler', function () {
|
|
it('creates an instance', function () {
|
|
const contentFileImporter = new ImporterContentFileHandler({
|
|
type: 'media',
|
|
storage: {},
|
|
config: {},
|
|
urlUtils: {}
|
|
});
|
|
|
|
assert.ok(contentFileImporter);
|
|
assert.equal(contentFileImporter.type, 'media');
|
|
});
|
|
|
|
it('returns configured extensions', function () {
|
|
const contentFileImporter = new ImporterContentFileHandler({
|
|
storage: {},
|
|
extensions: ['mp4'],
|
|
urlUtils: {}
|
|
});
|
|
|
|
assert.deepEqual(contentFileImporter.extensions, ['mp4']);
|
|
});
|
|
|
|
it('returns configured contentTypes', function () {
|
|
const contentFileImporter = new ImporterContentFileHandler({
|
|
storage: {},
|
|
contentTypes: ['video/mp4'],
|
|
urlUtils: {}
|
|
});
|
|
|
|
assert.deepEqual(contentFileImporter.contentTypes, ['video/mp4']);
|
|
});
|
|
|
|
// @NOTE: below tests need more work, they are just covering the basics
|
|
// the cases are based on a fact that the implementation was a copy
|
|
// from the image importer and the tests were adapted to the media importer
|
|
describe('loadFile', function () {
|
|
it('loads files and decorates them with newPath with subdirectory', async function () {
|
|
const contentFileImporter = new ImporterContentFileHandler({
|
|
storage: {
|
|
staticFileURLPrefix: 'content/media',
|
|
getUniqueFileName: (file, targetDir) => Promise.resolve(targetDir + '/' + file.name)
|
|
},
|
|
contentPath: '/var/www/ghost/content/media',
|
|
urlUtils: {
|
|
getSubdir: () => 'blog',
|
|
urlJoin: (...args) => args.join('/')
|
|
}
|
|
});
|
|
|
|
const files = [{
|
|
name: 'content/media/video-in-content-media.mp4'
|
|
}, {
|
|
name: 'media/video-in-media.mp4'
|
|
}];
|
|
const subDir = 'blog';
|
|
|
|
await contentFileImporter.loadFile(files, subDir);
|
|
|
|
assert.equal(files.length, 2);
|
|
assert.equal(files[0].name, 'video-in-content-media.mp4');
|
|
assert.equal(files[0].originalPath, 'content/media/video-in-content-media.mp4');
|
|
assert.equal(files[0].targetDir, '/var/www/ghost/content/media');
|
|
assert.equal(files[0].newPath, '//blog/content/media/video-in-content-media.mp4');
|
|
|
|
assert.equal(files[1].name, 'video-in-media.mp4');
|
|
assert.equal(files[1].originalPath, 'media/video-in-media.mp4');
|
|
assert.equal(files[1].targetDir, '/var/www/ghost/content/media');
|
|
assert.equal(files[1].newPath, '//blog/content/media/video-in-media.mp4');
|
|
});
|
|
|
|
it('loads files and decorates them with newPath with NO subdirectory', async function () {
|
|
const contentFileImporter = new ImporterContentFileHandler({
|
|
storage: {
|
|
staticFileURLPrefix: 'content/media',
|
|
getUniqueFileName: (file, targetDir) => Promise.resolve(targetDir + '/' + file.name)
|
|
},
|
|
contentPath: '/var/www/ghost/content/media',
|
|
urlUtils: {
|
|
getSubdir: () => 'blog',
|
|
urlJoin: (...args) => args.join('/')
|
|
}
|
|
});
|
|
|
|
const files = [{
|
|
name: 'content/media/1.mp4'
|
|
}];
|
|
|
|
await contentFileImporter.loadFile(files);
|
|
|
|
assert.equal(files[0].name, '1.mp4');
|
|
assert.equal(files[0].originalPath, 'content/media/1.mp4');
|
|
assert.equal(files[0].targetDir, '/var/www/ghost/content/media');
|
|
assert.equal(files[0].newPath, '//blog/content/media/1.mp4');
|
|
});
|
|
});
|
|
});
|