1
0
mirror of https://github.com/BoostIo/Boostnote synced 2025-12-16 11:15:12 +00:00

renew renameStorage api

This commit is contained in:
Dick Choi
2016-08-27 15:18:28 +09:00
parent 5558403358
commit eb163ef03c
2 changed files with 26 additions and 30 deletions

View File

@@ -8,24 +8,20 @@ const _ = require('lodash')
function renameStorage (key, name) { function renameStorage (key, name) {
if (!_.isString(name)) return Promise.reject(new Error('Name must be a string.')) if (!_.isString(name)) return Promise.reject(new Error('Name must be a string.'))
let rawStorages let cachedStorageList
try { try {
rawStorages = JSON.parse(localStorage.getItem('storages')) cachedStorageList = JSON.parse(localStorage.getItem('storages'))
if (!_.isArray(rawStorages)) throw new Error('invalid storages') if (!_.isArray(cachedStorageList)) throw new Error('invalid storages')
} catch (e) { } catch (err) {
console.warn(e) console.log('error got')
rawStorages = [] console.error(err)
return Promise.reject(err)
} }
let targetStorage = _.find(cachedStorageList, {key: key})
if (targetStorage == null) return Promise.reject('Storage')
let targetStorage targetStorage.name = name
for (let i = 0; i < rawStorages.length; i++) { localStorage.setItem('storages', JSON.stringify(cachedStorageList))
if (rawStorages[i].key === key) {
rawStorages[i].name = name
targetStorage = rawStorages[i]
}
}
localStorage.setItem('storages', JSON.stringify(rawStorages))
return Promise.resolve(targetStorage) return Promise.resolve(targetStorage)
} }

View File

@@ -10,29 +10,29 @@ const localStorage = window.localStorage = global.localStorage = new Storage(nul
const path = require('path') const path = require('path')
const crypto = require('crypto') const crypto = require('crypto')
const _ = require('lodash') const _ = require('lodash')
const TestDummy = require('../fixtures/TestDummy')
const sander = require('sander')
const os = require('os')
test('Rename a storage', (t) => { const storagePath = path.join(os.tmpdir(), 'test/rename-storage')
const dummyStoragePath = path.join(__dirname, '..', 'dummy/dummyStorage') test.beforeEach((t) => {
const dummyStorageKey = crypto.randomBytes(6).toString('hex') t.context.storage = TestDummy.dummyStorage(storagePath)
const dummyRawStorage = { localStorage.setItem('storages', JSON.stringify([t.context.storage.cache]))
name: 'test1', })
key: dummyStorageKey,
path: dummyStoragePath
}
test.serial('Rename a storage', (t) => {
const stoargeKey = t.context.storage.cache.key
return Promise.resolve() return Promise.resolve()
.then(function before () { .then(function doTest () {
localStorage.setItem('storages', JSON.stringify([dummyRawStorage])) return renameStorage(stoargeKey, 'changed')
})
.then(function test () {
return renameStorage(dummyStorageKey, 'test2')
}) })
.then(function assert (data) { .then(function assert (data) {
let rawStorages = JSON.parse(localStorage.getItem('storages')) let cachedStorageList = JSON.parse(localStorage.getItem('storages'))
t.true(_.find(rawStorages, {key: dummyStorageKey}).name === 'test2') t.true(_.find(cachedStorageList, {key: stoargeKey}).name === 'changed')
}) })
}) })
test.after(function after () { test.after(function after () {
localStorage.clear() localStorage.clear()
sander.rimrafSync(storagePath)
}) })