@proteinjs/db-settings 1.3.45 → 1.3.47
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +20 -0
- package/dist/generated/index.d.ts.map +1 -1
- package/dist/generated/index.js +3 -1
- package/dist/generated/index.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/src/Settings.d.ts +10 -1
- package/dist/src/Settings.d.ts.map +1 -1
- package/dist/src/Settings.js +30 -9
- package/dist/src/Settings.js.map +1 -1
- package/dist/src/migrations/DeduplicateSettingRows.d.ts +34 -0
- package/dist/src/migrations/DeduplicateSettingRows.d.ts.map +1 -0
- package/dist/src/migrations/DeduplicateSettingRows.js +171 -0
- package/dist/src/migrations/DeduplicateSettingRows.js.map +1 -0
- package/dist/src/tables/SettingTable.d.ts +8 -0
- package/dist/src/tables/SettingTable.d.ts.map +1 -1
- package/dist/src/tables/SettingTable.js +10 -0
- package/dist/src/tables/SettingTable.js.map +1 -1
- package/dist/test/DeduplicateSettingRows.test.d.ts +3 -0
- package/dist/test/DeduplicateSettingRows.test.d.ts.map +1 -0
- package/dist/test/DeduplicateSettingRows.test.js +195 -0
- package/dist/test/DeduplicateSettingRows.test.js.map +1 -0
- package/dist/test/SettingsOneRowPerName.test.d.ts +3 -0
- package/dist/test/SettingsOneRowPerName.test.d.ts.map +1 -0
- package/dist/test/SettingsOneRowPerName.test.js +213 -0
- package/dist/test/SettingsOneRowPerName.test.js.map +1 -0
- package/dist/test/util/HeldFirstWriteDriver.d.ts +36 -0
- package/dist/test/util/HeldFirstWriteDriver.d.ts.map +1 -0
- package/dist/test/util/HeldFirstWriteDriver.js +130 -0
- package/dist/test/util/HeldFirstWriteDriver.js.map +1 -0
- package/dist/test/util/TestSession.d.ts +22 -0
- package/dist/test/util/TestSession.d.ts.map +1 -0
- package/dist/test/util/TestSession.js +49 -0
- package/dist/test/util/TestSession.js.map +1 -0
- package/generated/index.ts +3 -1
- package/index.ts +2 -0
- package/jest.config.js +2 -0
- package/package.json +9 -5
- package/src/Settings.ts +20 -5
- package/src/migrations/DeduplicateSettingRows.ts +78 -0
- package/src/tables/SettingTable.ts +11 -1
- package/test/DeduplicateSettingRows.test.ts +83 -0
- package/test/SettingsOneRowPerName.test.ts +104 -0
- package/test/setup.js +2 -0
- package/test/util/HeldFirstWriteDriver.ts +110 -0
- package/test/util/TestSession.ts +35 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { SourceRepository } from '@proteinjs/reflection';
|
|
2
|
+
import { Session, SessionData, SessionDataStorage } from '@proteinjs/server-api';
|
|
3
|
+
import { UserRepo } from '@proteinjs/user';
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
* The one session a suite's calls run in: a process-wide session store (the async-context store a
|
|
7
|
+
* server uses does not survive jest's hook and test boundaries), registered where `Session` looks
|
|
8
|
+
* for one, carrying the user the scoped db reads its scope from. `as(user)` re-seats the session
|
|
9
|
+
* on another user, so a suite can act as two people.
|
|
10
|
+
*/
|
|
11
|
+
export class TestSession implements SessionDataStorage {
|
|
12
|
+
environment = 'node' as const;
|
|
13
|
+
priority = 1;
|
|
14
|
+
private static data: SessionData = { sessionId: 'settings-test', user: undefined, data: {} };
|
|
15
|
+
|
|
16
|
+
/** Act as `user` from here on: the session's user, and the scope every scoped write and query carries. */
|
|
17
|
+
static as(user: { id: string; email: string; name: string }): void {
|
|
18
|
+
TestSession.register();
|
|
19
|
+
Session.setData({ sessionId: 'settings-test', user: user.email, data: {} });
|
|
20
|
+
new UserRepo().setUser({ ...user, roles: [] } as unknown as Parameters<UserRepo['setUser']>[0]);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
setData(data: SessionData): void {
|
|
24
|
+
TestSession.data = data;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
getData(): SessionData {
|
|
28
|
+
return TestSession.data;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
private static register(): void {
|
|
32
|
+
const repository = SourceRepository.get() as unknown as { objectCache: { [type: string]: unknown[] } };
|
|
33
|
+
repository.objectCache['@proteinjs/server-api/SessionDataStorage'] = [new TestSession()];
|
|
34
|
+
}
|
|
35
|
+
}
|