Skip to content

Commit

Permalink
feat(taro-rn): 增加storage的测试用例
Browse files Browse the repository at this point in the history
  • Loading branch information
Bless-L committed Jul 24, 2018
1 parent 5daa25d commit 7b98274
Show file tree
Hide file tree
Showing 7 changed files with 266 additions and 33 deletions.
9 changes: 8 additions & 1 deletion packages/taro-rn/.babelrc
@@ -1,3 +1,10 @@
{
"presets": ["react-native"]
"presets": ["react-native"],
"env": {
"test": {
"plugins": [
"transform-es2015-modules-commonjs"
]
}
}
}
11 changes: 10 additions & 1 deletion packages/taro-rn/jest.config.js
@@ -1,4 +1,13 @@
module.exports = {
verbose: true,
preset: 'jest-react-native',
testMatch: ['<rootDir>/src/__tests__/**/*.test.js']
rootDir: __dirname,
transform: {
'^.+\\.js$': 'babel-jest'
},
moduleNameMapper: {
'^@/(.*)$': '<rootDir>/src/$1'
},
testMatch: ['<rootDir>/src/__tests__/**/*.test.js'],
transformIgnorePatterns: ['node_modules/(?!(react-native|static-container|react-native-root-siblings|react-native-image-zoom-viewer|react-native-image-pan-zoom|react-native-root-toast)/)']
}
6 changes: 5 additions & 1 deletion packages/taro-rn/package.json
Expand Up @@ -29,10 +29,14 @@
"react-native-stylekit": "^1.0.0"
},
"devDependencies": {
"babel-core": "^6.26.3",
"babel-jest": "^23.0.1",
"babel-preset-env": "^1.7.0",
"jest": "^23.1.0",
"jest-react-native": "^18.0.0",
"mock-socket": "^7.1.0",
"react-native": "^0.55.4"
"react": "^16.4.1",
"react-native": "^0.55.4",
"redux": "^4.0.0"
}
}
9 changes: 9 additions & 0 deletions packages/taro-rn/src/__tests__/__mock__/mockAsyncStorage.js
Expand Up @@ -34,4 +34,13 @@ export default class MockStorage {
getAllKeys = jest.fn((key) => {
return new Promise((resolve, reject) => resolve(Object.keys(this.storageCache)))
})

multiRemove = jest.fn((keys) => {
return new Promise((resolve, reject) => {
keys.forEach(key => {
this.removeItem(key)
})
resolve()
})
})
}
91 changes: 91 additions & 0 deletions packages/taro-rn/src/__tests__/storage.test.js
Expand Up @@ -90,4 +90,95 @@ describe('storage', () => {
expect(res.data).toBe(data)
})
})

describe('removeStorage', () => {
test('能根据key删除Storage里的值', async () => {
const key = 'bar'
const data = 'foo'
const success = jest.fn()
const fail = jest.fn()
const complete = jest.fn()

await AsyncStorage.setItem(key, JSON.stringify(data))
const getData = await AsyncStorage.getItem(key)

expect(JSON.parse(getData)).toBe(data)

const res = await Taro.removeStorage({
key,
success,
fail,
complete
})
const expectMsg = 'removeStorage:ok'

expect.assertions(8)

expect(success.mock.calls.length).toBe(1)
expect(success.mock.calls[0][0]).toEqual(res)
expect(fail.mock.calls.length).toBe(0)
expect(complete.mock.calls.length).toBe(1)
expect(complete.mock.calls[0][0]).toEqual(res)
expect(res.errMsg).toMatch(expectMsg)
expect(res.data).toBeUndefined()
})
})

describe('getStorageInfo', () => {
test('获得正确的StorageInfo', async () => {
const key1 = 'bar'
const key2 = 'foo'
const data = 'data'
const success = jest.fn()
const fail = jest.fn()
const complete = jest.fn()

await AsyncStorage.setItem(key1, JSON.stringify(data))
await AsyncStorage.setItem(key2, JSON.stringify(data))

const res = await Taro.getStorageInfo({
success,
fail,
complete
})
const expectMsg = 'getStorageInfo:ok'

expect.assertions(9)

expect(success.mock.calls.length).toBe(1)
expect(success.mock.calls[0][0]).toEqual(res)
expect(fail.mock.calls.length).toBe(0)
expect(complete.mock.calls.length).toBe(1)
expect(complete.mock.calls[0][0]).toEqual(res)
expect(res.errMsg).toMatch(expectMsg)
expect(res.keys).toEqual([key1, key2])
expect(res.currentSize).toBeNull()
expect(res.limitSize).toBeNull()
})
})

describe('clearStorage', () => {
test('clearStorage能清楚所有的Storage', async () => {
const key1 = 'bar'
const key2 = 'foo'
const data = 'data'

await AsyncStorage.setItem(key1, JSON.stringify(data))
await AsyncStorage.setItem(key2, JSON.stringify(data))

const getData1 = await AsyncStorage.getItem(key1)
const getData2 = await AsyncStorage.getItem(key2)

expect(JSON.parse(getData1)).toBe(data)
expect(JSON.parse(getData2)).toBe(data)

await Taro.clearStorage()

const res = await AsyncStorage.getAllKeys()

expect.assertions(3)

expect(res).toEqual([])
})
})
})
4 changes: 1 addition & 3 deletions packages/taro-rn/src/api/storage/index.js
Expand Up @@ -82,9 +82,7 @@ export function removeStorage (opts = {}) {
}

export async function clearStorage () {
const res = await getStorageInfo()
const keys = res.keys
return AsyncStorage.multiRemove(keys)
return AsyncStorage.clear()
}

let unSupportApis = ['setStorageSync', 'getStorageSync', 'getStorageInfoSync', 'removeStorageSync', 'clearStorageSync']
Expand Down

0 comments on commit 7b98274

Please sign in to comment.