diff --git a/client/listeners/get-index.js b/client/listeners/get-index.js new file mode 100644 index 00000000..d7870608 --- /dev/null +++ b/client/listeners/get-index.js @@ -0,0 +1,11 @@ +'use strict'; + +module.exports = (array, item) => { + const index = array.indexOf(item); + + if (!~index) + return 0; + + return index; +}; + diff --git a/client/listeners/get-range.js b/client/listeners/get-range.js new file mode 100644 index 00000000..ef1ea0f8 --- /dev/null +++ b/client/listeners/get-range.js @@ -0,0 +1,12 @@ +'use strict'; + +module.exports = (indexFrom, indexTo, files) => { + if (indexFrom < indexTo) + return files.slice(indexFrom, indexTo + 1); + + if (indexFrom > indexTo) + return files.slice(indexTo, indexFrom + 1); + + return [files[indexFrom]]; +}; + diff --git a/client/listeners.js b/client/listeners/index.js similarity index 96% rename from client/listeners.js rename to client/listeners/index.js index 5be6f0ee..364d60ba 100644 --- a/client/listeners.js +++ b/client/listeners/index.js @@ -5,13 +5,16 @@ const exec = require('execon'); const itype = require('itype/legacy'); const currify = require('currify/legacy'); +const getRange = require('./get-range'); -const uploadFiles = require('./dom/upload-files'); +const getIndex = currify(require('./get-index')); + +const uploadFiles = require('../dom/upload-files'); const { FS, apiURL -} = require('../common/cloudfunc'); +} = require('../../common/cloudfunc'); module.exports.init = () => { contextMenu(); @@ -25,15 +28,6 @@ module.exports.init = () => { CloudCmd.Listeners = module.exports; -const getIndex = currify((array, item) =>{ - const index = array.indexOf(item); - - if (!~index) - return 0; - - return index; -}); - const unselect = (event) => { const isMac = /Mac/.test(window.navigator.platform); const { @@ -380,16 +374,6 @@ function getFilesRange(from, to) { return getRange(indexFrom, indexTo, files); } -function getRange(indexFrom, indexTo, files) { - if (indexFrom < indexTo) - return files.slice(indexFrom, indexTo + 1); - - if (indexFrom > indexTo) - return files.slice(indexTo, indexFrom + 1); - - return files[indexFrom]; -} - function contextMenu() { const fm = DOM.getFM(); diff --git a/test/client/listeners/get-index.js b/test/client/listeners/get-index.js new file mode 100644 index 00000000..16dd6999 --- /dev/null +++ b/test/client/listeners/get-index.js @@ -0,0 +1,21 @@ +'use strict'; + +const test = require('tape'); + +const dir = '../../../client/listeners'; +const getIndex = require(`${dir}/get-index`); + +test('cloudcmd: client: listeners: getIndex: not found', (t) => { + const array = ['hello']; + + t.equal(getIndex(array, 'world'), 0, 'should return index'); + t.end(); +}); + +test('cloudcmd: client: listeners: getIndex: found', (t) => { + const array = ['hello', 'world']; + + t.equal(getIndex(array, 'world'), 1, 'should return index'); + t.end(); +}); + diff --git a/test/client/listeners/get-range.js b/test/client/listeners/get-range.js new file mode 100644 index 00000000..9b431de0 --- /dev/null +++ b/test/client/listeners/get-range.js @@ -0,0 +1,34 @@ +'use strict'; + +const test = require('tape'); + +const dir = '../../../client/listeners'; +const getRange = require(`${dir}/get-range`); + +test('cloudcmd: client: listeners: getRange: direct', (t) => { + const expected = ['hello', 'world']; + const files = [...expected, 'how', 'come']; + const result = getRange(0, 1, files); + + t.deepEqual(expected, result, 'should return range'); + t.end(); +}); + +test('cloudcmd: client: listeners: getRange: reverse', (t) => { + const expected = ['hello', 'world']; + const files = [...expected, 'how', 'come']; + const result = getRange(1, 0, files); + + t.deepEqual(expected, result, 'should return range'); + t.end(); +}); + +test('cloudcmd: client: listeners: getRange: one', (t) => { + const expected = ['hello']; + const files = [...expected, 'how', 'come']; + const result = getRange(0, 0, files); + + t.deepEqual(expected, result, 'should return range'); + t.end(); +}); +