|
10 | 10 | jest.autoMockOff();
|
11 | 11 |
|
12 | 12 | const mockRNStorageInterface = require('./test_helpers/mockRNStorage');
|
| 13 | +const mockStorageInterface = require('./test_helpers/mockStorageInteface'); |
| 14 | +const mockIndexedDB = require('./test_helpers/mockIndexedDB'); |
13 | 15 | const mockWeChat = require('./test_helpers/mockWeChat');
|
14 | 16 | const CoreManager = require('../CoreManager');
|
15 | 17 |
|
16 | 18 | global.wx = mockWeChat;
|
17 |
| - |
18 |
| -let mockStorage = {}; |
19 |
| -const mockStorageInterface = { |
20 |
| - getItem(path) { |
21 |
| - return mockStorage[path] || null; |
22 |
| - }, |
23 |
| - |
24 |
| - getItemAsync(path) { |
25 |
| - return Promise.resolve(mockStorageInterface.getItem(path)); |
26 |
| - }, |
27 |
| - |
28 |
| - setItem(path, value) { |
29 |
| - mockStorage[path] = value; |
30 |
| - }, |
31 |
| - |
32 |
| - setItemAsync(path, value) { |
33 |
| - return Promise.resolve(mockStorageInterface.setItem(path, value)); |
34 |
| - }, |
35 |
| - |
36 |
| - removeItem(path) { |
37 |
| - delete mockStorage[path]; |
38 |
| - }, |
39 |
| - |
40 |
| - removeItemAsync(path) { |
41 |
| - return Promise.resolve(mockStorageInterface.removeItem(path)); |
42 |
| - }, |
43 |
| - |
44 |
| - clear() { |
45 |
| - mockStorage = {}; |
46 |
| - }, |
47 |
| -}; |
48 |
| - |
49 | 19 | global.localStorage = mockStorageInterface;
|
| 20 | +jest.mock('idb-keyval', () => { |
| 21 | + return mockIndexedDB; |
| 22 | +}); |
50 | 23 |
|
51 | 24 | const BrowserStorageController = require('../StorageController.browser');
|
52 | 25 |
|
@@ -192,6 +165,46 @@ describe('React Native StorageController', () => {
|
192 | 165 | });
|
193 | 166 | });
|
194 | 167 |
|
| 168 | +const IndexedDBStorageController = require('../IndexedDBStorageController'); |
| 169 | + |
| 170 | +describe('React Native StorageController', () => { |
| 171 | + beforeEach(() => { |
| 172 | + IndexedDBStorageController.clear(); |
| 173 | + }); |
| 174 | + |
| 175 | + it('is asynchronous', () => { |
| 176 | + expect(IndexedDBStorageController.async).toBe(1); |
| 177 | + expect(typeof IndexedDBStorageController.getItemAsync).toBe('function'); |
| 178 | + expect(typeof IndexedDBStorageController.setItemAsync).toBe('function'); |
| 179 | + expect(typeof IndexedDBStorageController.removeItemAsync).toBe('function'); |
| 180 | + }); |
| 181 | + |
| 182 | + it('can store and retrieve values', async () => { |
| 183 | + let result = await IndexedDBStorageController.getItemAsync('myKey'); |
| 184 | + expect(result).toBe(null); |
| 185 | + await IndexedDBStorageController.setItemAsync('myKey', 'myValue'); |
| 186 | + result = await IndexedDBStorageController.getItemAsync('myKey'); |
| 187 | + expect(result).toBe('myValue'); |
| 188 | + }); |
| 189 | + |
| 190 | + it('can remove values', async () => { |
| 191 | + await IndexedDBStorageController.setItemAsync('myKey', 'myValue'); |
| 192 | + let result = await IndexedDBStorageController.getItemAsync('myKey'); |
| 193 | + expect(result).toBe('myValue'); |
| 194 | + await IndexedDBStorageController.removeItemAsync('myKey'); |
| 195 | + result = await IndexedDBStorageController.getItemAsync('myKey'); |
| 196 | + expect(result).toBe(null); |
| 197 | + }); |
| 198 | + |
| 199 | + it('can getAllKeys', async () => { |
| 200 | + await IndexedDBStorageController.setItemAsync('myKey', 'myValue'); |
| 201 | + const result = await IndexedDBStorageController.getItemAsync('myKey'); |
| 202 | + expect(result).toBe('myValue'); |
| 203 | + const keys = await IndexedDBStorageController.getAllKeysAsync(); |
| 204 | + expect(keys[0]).toBe('myKey'); |
| 205 | + }); |
| 206 | +}); |
| 207 | + |
195 | 208 | const DefaultStorageController = require('../StorageController.default');
|
196 | 209 |
|
197 | 210 | describe('Default StorageController', () => {
|
|
0 commit comments