forked from hplush/slowreader
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest.ts
More file actions
82 lines (74 loc) · 2.05 KB
/
test.ts
File metadata and controls
82 lines (74 loc) · 2.05 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
import { MemoryStore } from '@logux/core'
import { atom } from 'nanostores'
import type { Credentials } from './auth.ts'
import type { EnvironmentAndStore } from './environment.ts'
import { type BaseRoute, stringifyPopups } from './router.ts'
export let testSession: string | undefined
const testRouter = atom<BaseRoute | undefined>()
/**
* Ensures a route has a hash property, adding an empty string if missing.
*
* Syntax sugar to avoid setting `hash` in every route in tests.
*/
export function addHashToBaseRoute(
route: BaseRoute | Omit<BaseRoute, 'hash'> | undefined
): BaseRoute | undefined {
if (!route) return undefined
return { hash: '', ...route } as BaseRoute
}
export function setBaseTestRoute(
route: BaseRoute | Omit<BaseRoute, 'hash'> | undefined
): void {
testRouter.set(addHashToBaseRoute(route))
}
export function getTestEnvironment(): EnvironmentAndStore {
testSession = undefined
let persistentStore: Record<string, string> = {}
return {
baseRouter: testRouter,
cleanStorage() {
for (let key in persistentStore) {
delete persistentStore[key]
}
},
errorEvents: { addEventListener() {} },
getSession() {
return testSession
},
locale: atom('en'),
logStoreCreator() {
return new MemoryStore()
},
networkType() {
return { saveData: undefined, type: undefined }
},
openRoute(route) {
setBaseTestRoute({ ...route, hash: stringifyPopups(route.popups) })
},
persistentEvents: { addEventListener() {}, removeEventListener() {} },
persistentStore,
restartApp() {},
saveFile() {},
savePassword() {
return Promise.resolve()
},
saveSession(session) {
testSession = session
},
server: 'localhost:2554',
translationLoader() {
return Promise.resolve({})
},
warn() {}
}
}
/**
* Useful for visual tests and cases where need reproducible result.
*/
export function testCredentials(): Credentials {
return {
encryptionKey: '5>@v9xbKP!',
password: '&5$K?EJuJ=',
userId: '2750177048377147'
}
}