Bluesky app fork with some witchin' additions 馃挮
witchsky.app
bluesky
fork
client
1import {beforeEach, describe, expect, it, jest} from '@jest/globals'
2
3jest.mock('@bsky.app/react-native-mmkv', () => ({
4 MMKV: class MMKVMock {
5 _store = new Map<string, string>()
6
7 getString(key: string) {
8 return this._store.get(key)
9 }
10
11 set(key: string, value: string) {
12 this._store.set(key, value)
13 }
14
15 delete(key: string) {
16 this._store.delete(key)
17 }
18
19 clearAll() {
20 this._store.clear()
21 }
22 },
23}))
24
25import {createPersistedQueryStorage} from '../persisted-query-storage'
26
27describe('createPersistedQueryStorage', () => {
28 it('should create isolated storage instances', async () => {
29 const storage1 = createPersistedQueryStorage('store1')
30 const storage2 = createPersistedQueryStorage('store2')
31
32 await storage1.setItem('key', 'value1')
33 await storage2.setItem('key', 'value2')
34
35 expect(await storage1.getItem('key')).toBe('value1')
36 expect(await storage2.getItem('key')).toBe('value2')
37 })
38
39 describe('storage operations', () => {
40 let storage: ReturnType<typeof createPersistedQueryStorage>
41
42 beforeEach(() => {
43 storage = createPersistedQueryStorage('test_store')
44 })
45
46 it('should return null for non-existent keys', async () => {
47 const result = await storage.getItem('non-existent-key')
48 expect(result).toBeNull()
49 })
50
51 it('should store and retrieve a value', async () => {
52 const testValue = JSON.stringify({data: 'test'})
53 await storage.setItem('test-key', testValue)
54 const result = await storage.getItem('test-key')
55 expect(result).toBe(testValue)
56 })
57
58 it('should remove a value', async () => {
59 const testValue = JSON.stringify({data: 'test'})
60 await storage.setItem('test-key', testValue)
61 await storage.removeItem('test-key')
62 const result = await storage.getItem('test-key')
63 expect(result).toBeNull()
64 })
65
66 it('should handle complex JSON data', async () => {
67 const complexData = JSON.stringify({
68 queries: [
69 {key: 'query1', data: {nested: {value: 123}}},
70 {key: 'query2', data: {array: [1, 2, 3]}},
71 ],
72 timestamp: Date.now(),
73 })
74 await storage.setItem('complex-key', complexData)
75 const result = await storage.getItem('complex-key')
76 expect(result).toBe(complexData)
77 expect(JSON.parse(result!)).toEqual(JSON.parse(complexData))
78 })
79
80 it('should overwrite existing values', async () => {
81 await storage.setItem('test-key', 'value1')
82 await storage.setItem('test-key', 'value2')
83 const result = await storage.getItem('test-key')
84 expect(result).toBe('value2')
85 })
86 })
87})