Bluesky app fork with some witchin' additions 馃挮 witchsky.app
bluesky fork client
119
fork

Configure Feed

Select the types of activity you want to include in your feed.

at a876aae44ea07494ebea9727350aa060b81f317b 81 lines 2.2 kB view raw
1import {beforeEach, expect, jest, test} from '@jest/globals' 2 3import {Storage} from '#/storage' 4 5jest.mock('react-native-mmkv', () => ({ 6 MMKV: class MMKVMock { 7 _store = new Map() 8 9 set(key: string, value: unknown) { 10 this._store.set(key, value) 11 } 12 13 getString(key: string) { 14 return this._store.get(key) 15 } 16 17 delete(key: string) { 18 return this._store.delete(key) 19 } 20 }, 21})) 22 23type Schema = { 24 boo: boolean 25 str: string | null 26 num: number 27 obj: Record<string, unknown> 28} 29 30const scope = `account` 31const store = new Storage<['account'], Schema>({id: 'test'}) 32 33beforeEach(() => { 34 store.removeMany([scope], ['boo', 'str', 'num', 'obj']) 35}) 36 37test(`stores and retrieves data`, () => { 38 store.set([scope, 'boo'], true) 39 store.set([scope, 'str'], 'string') 40 store.set([scope, 'num'], 1) 41 expect(store.get([scope, 'boo'])).toEqual(true) 42 expect(store.get([scope, 'str'])).toEqual('string') 43 expect(store.get([scope, 'num'])).toEqual(1) 44}) 45 46test(`removes data`, () => { 47 store.set([scope, 'boo'], true) 48 expect(store.get([scope, 'boo'])).toEqual(true) 49 store.remove([scope, 'boo']) 50 expect(store.get([scope, 'boo'])).toEqual(undefined) 51}) 52 53test(`removes multiple keys at once`, () => { 54 store.set([scope, 'boo'], true) 55 store.set([scope, 'str'], 'string') 56 store.set([scope, 'num'], 1) 57 store.removeMany([scope], ['boo', 'str', 'num']) 58 expect(store.get([scope, 'boo'])).toEqual(undefined) 59 expect(store.get([scope, 'str'])).toEqual(undefined) 60 expect(store.get([scope, 'num'])).toEqual(undefined) 61}) 62 63test(`concatenates keys`, () => { 64 store.remove([scope, 'str']) 65 store.set([scope, 'str'], 'concat') 66 // @ts-ignore accessing these properties for testing purposes only 67 expect(store.store.getString(`${scope}${store.sep}str`)).toBeTruthy() 68}) 69 70test(`can store falsy values`, () => { 71 store.set([scope, 'str'], null) 72 store.set([scope, 'num'], 0) 73 expect(store.get([scope, 'str'])).toEqual(null) 74 expect(store.get([scope, 'num'])).toEqual(0) 75}) 76 77test(`can store objects`, () => { 78 const obj = {foo: true} 79 store.set([scope, 'obj'], obj) 80 expect(store.get([scope, 'obj'])).toEqual(obj) 81})