diff --git a/browser/main/lib/dataApi/renameStorage.js b/browser/main/lib/dataApi/renameStorage.js index fde14ac6..5ab86bcb 100644 --- a/browser/main/lib/dataApi/renameStorage.js +++ b/browser/main/lib/dataApi/renameStorage.js @@ -8,24 +8,20 @@ const _ = require('lodash') function renameStorage (key, name) { if (!_.isString(name)) return Promise.reject(new Error('Name must be a string.')) - let rawStorages + let cachedStorageList try { - rawStorages = JSON.parse(localStorage.getItem('storages')) - if (!_.isArray(rawStorages)) throw new Error('invalid storages') - } catch (e) { - console.warn(e) - rawStorages = [] + cachedStorageList = JSON.parse(localStorage.getItem('storages')) + if (!_.isArray(cachedStorageList)) throw new Error('invalid storages') + } catch (err) { + console.log('error got') + console.error(err) + return Promise.reject(err) } + let targetStorage = _.find(cachedStorageList, {key: key}) + if (targetStorage == null) return Promise.reject('Storage') - let targetStorage - for (let i = 0; i < rawStorages.length; i++) { - if (rawStorages[i].key === key) { - rawStorages[i].name = name - targetStorage = rawStorages[i] - } - } - - localStorage.setItem('storages', JSON.stringify(rawStorages)) + targetStorage.name = name + localStorage.setItem('storages', JSON.stringify(cachedStorageList)) return Promise.resolve(targetStorage) } diff --git a/tests/dataApi/renameStorage.js b/tests/dataApi/renameStorage.js index d54f767c..cbbed615 100644 --- a/tests/dataApi/renameStorage.js +++ b/tests/dataApi/renameStorage.js @@ -10,29 +10,29 @@ const localStorage = window.localStorage = global.localStorage = new Storage(nul const path = require('path') const crypto = require('crypto') const _ = require('lodash') +const TestDummy = require('../fixtures/TestDummy') +const sander = require('sander') +const os = require('os') -test('Rename a storage', (t) => { - const dummyStoragePath = path.join(__dirname, '..', 'dummy/dummyStorage') - const dummyStorageKey = crypto.randomBytes(6).toString('hex') - const dummyRawStorage = { - name: 'test1', - key: dummyStorageKey, - path: dummyStoragePath - } +const storagePath = path.join(os.tmpdir(), 'test/rename-storage') +test.beforeEach((t) => { + t.context.storage = TestDummy.dummyStorage(storagePath) + localStorage.setItem('storages', JSON.stringify([t.context.storage.cache])) +}) +test.serial('Rename a storage', (t) => { + const stoargeKey = t.context.storage.cache.key return Promise.resolve() - .then(function before () { - localStorage.setItem('storages', JSON.stringify([dummyRawStorage])) - }) - .then(function test () { - return renameStorage(dummyStorageKey, 'test2') + .then(function doTest () { + return renameStorage(stoargeKey, 'changed') }) .then(function assert (data) { - let rawStorages = JSON.parse(localStorage.getItem('storages')) - t.true(_.find(rawStorages, {key: dummyStorageKey}).name === 'test2') + let cachedStorageList = JSON.parse(localStorage.getItem('storages')) + t.true(_.find(cachedStorageList, {key: stoargeKey}).name === 'changed') }) }) test.after(function after () { localStorage.clear() + sander.rimrafSync(storagePath) })