@saltcorn/admin-models 0.6.4-beta.2

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.
@@ -0,0 +1,339 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const index_1 = __importDefault(require("@saltcorn/data/db/index"));
7
+ const pack_1 = __importDefault(require("../models/pack"));
8
+ const { table_pack, view_pack, plugin_pack, page_pack, fetch_available_packs, fetch_pack_by_name, install_pack, can_install_pack, uninstall_pack, } = pack_1.default;
9
+ const { isStale } = require("@saltcorn/data/utils");
10
+ const { getState } = require("@saltcorn/data/db/state");
11
+ const table_1 = __importDefault(require("@saltcorn/data/models/table"));
12
+ const globals_1 = require("@jest/globals");
13
+ getState().registerPlugin("base", require("@saltcorn/data/base-plugin"));
14
+ (0, globals_1.beforeAll)(async () => {
15
+ await require("@saltcorn/data/db/reset_schema")();
16
+ await require("@saltcorn/data/db/fixtures")();
17
+ });
18
+ (0, globals_1.afterAll)(async () => {
19
+ await require("@saltcorn/data/db/reset_schema")();
20
+ await require("@saltcorn/data/db/fixtures")();
21
+ await index_1.default.close();
22
+ });
23
+ jest.setTimeout(30000);
24
+ (0, globals_1.describe)("pack create", () => {
25
+ (0, globals_1.it)("creates table pack", async () => {
26
+ const tpack = await table_pack("patients");
27
+ (0, globals_1.expect)(tpack.fields.length > 1).toBe(true);
28
+ (0, globals_1.expect)(tpack.name).toBe("patients");
29
+ });
30
+ (0, globals_1.it)("creates view pack", async () => {
31
+ const vpack = await view_pack("authorlist");
32
+ (0, globals_1.expect)(vpack).toEqual({
33
+ configuration: {
34
+ columns: [
35
+ { field_name: "author", state_field: "on", type: "Field" },
36
+ { type: "ViewLink", view: "Own:authorshow" },
37
+ { action_name: "Delete", type: "Action" },
38
+ {
39
+ agg_field: "name",
40
+ agg_relation: "patients.favbook",
41
+ stat: "Count",
42
+ type: "Aggregation",
43
+ },
44
+ ],
45
+ },
46
+ min_role: 10,
47
+ name: "authorlist",
48
+ menu_label: undefined,
49
+ table: "books",
50
+ viewtemplate: "List",
51
+ default_render_page: null,
52
+ });
53
+ });
54
+ (0, globals_1.it)("creates plugin pack", async () => {
55
+ const ppack = await plugin_pack("base");
56
+ (0, globals_1.expect)(ppack).toStrictEqual({
57
+ configuration: null,
58
+ location: "@saltcorn/base-plugin",
59
+ name: "base",
60
+ deploy_private_key: null,
61
+ source: "npm",
62
+ });
63
+ });
64
+ (0, globals_1.it)("creates page pack", async () => {
65
+ const ppack = await page_pack("a_page");
66
+ (0, globals_1.expect)(ppack).toEqual({
67
+ name: "a_page",
68
+ title: "grgw",
69
+ description: "rgerg",
70
+ menu_label: undefined,
71
+ min_role: 10,
72
+ layout: {
73
+ above: [
74
+ {
75
+ type: "blank",
76
+ block: false,
77
+ contents: "Hello world",
78
+ textStyle: "",
79
+ },
80
+ { type: "line_break" },
81
+ { type: "blank", isHTML: true, contents: "<h1> foo</h1>" },
82
+ {
83
+ url: "https://saltcorn.com/",
84
+ text: "Click here",
85
+ type: "link",
86
+ block: false,
87
+ textStyle: "",
88
+ },
89
+ {
90
+ type: "card",
91
+ title: "header",
92
+ contents: {
93
+ above: [
94
+ null,
95
+ {
96
+ aligns: ["left", "left"],
97
+ widths: [6, 6],
98
+ besides: [
99
+ {
100
+ above: [
101
+ null,
102
+ {
103
+ type: "blank",
104
+ block: false,
105
+ contents: "Hello world",
106
+ textStyle: "",
107
+ },
108
+ ],
109
+ },
110
+ {
111
+ above: [
112
+ null,
113
+ {
114
+ type: "blank",
115
+ block: false,
116
+ contents: "Bye bye",
117
+ textStyle: "",
118
+ },
119
+ ],
120
+ },
121
+ ],
122
+ },
123
+ ],
124
+ },
125
+ },
126
+ ],
127
+ },
128
+ fixed_states: {},
129
+ root_page_for_roles: [],
130
+ });
131
+ });
132
+ });
133
+ (0, globals_1.describe)("pack store", () => {
134
+ let packs = new Array();
135
+ (0, globals_1.it)("reset the pack store cache", async () => {
136
+ getState().deleteConfig("available_packs");
137
+ getState().deleteConfig("available_packs_fetched_at");
138
+ });
139
+ (0, globals_1.it)("fetches the pack store", async () => {
140
+ packs = await fetch_available_packs();
141
+ (0, globals_1.expect)(packs.length > 0).toBe(true);
142
+ const cache = getState().getConfig("available_packs", false);
143
+ (0, globals_1.expect)(packs).toStrictEqual(cache);
144
+ });
145
+ (0, globals_1.it)("fetches packs from the pack store", async () => {
146
+ const pack = await fetch_pack_by_name(packs[0].name);
147
+ });
148
+ (0, globals_1.it)("tries to fetch dummy pack from the pack store", async () => {
149
+ const nopack = await fetch_pack_by_name("nosuchpack");
150
+ (0, globals_1.expect)(nopack).toBe(null);
151
+ });
152
+ (0, globals_1.it)("caches the pack store", async () => {
153
+ const stored_at = getState().getConfig("available_packs_fetched_at", false);
154
+ (0, globals_1.expect)(isStale(stored_at)).toBe(false);
155
+ await getState().setConfig("available_packs", []);
156
+ const packs1 = await fetch_available_packs();
157
+ (0, globals_1.expect)(packs1).toEqual([]);
158
+ });
159
+ (0, globals_1.it)("reset the pack store cache", async () => {
160
+ getState().deleteConfig("available_packs");
161
+ getState().deleteConfig("available_packs_fetched_at");
162
+ });
163
+ });
164
+ const todoPack = {
165
+ views: [
166
+ {
167
+ name: "EditTodo",
168
+ table: "TodoItems",
169
+ on_menu: false,
170
+ min_role: 10,
171
+ viewtemplate: "Edit",
172
+ configuration: {
173
+ fixed: { done: false },
174
+ layout: {
175
+ above: [
176
+ {
177
+ aligns: ["left", "left"],
178
+ widths: [2, 10],
179
+ besides: [
180
+ {
181
+ above: [
182
+ null,
183
+ {
184
+ type: "blank",
185
+ block: false,
186
+ contents: "Description",
187
+ textStyle: "",
188
+ },
189
+ ],
190
+ },
191
+ {
192
+ above: [
193
+ null,
194
+ {
195
+ type: "field",
196
+ block: false,
197
+ fieldview: "edit",
198
+ textStyle: "",
199
+ field_name: "description",
200
+ },
201
+ ],
202
+ },
203
+ ],
204
+ },
205
+ { type: "line_break" },
206
+ { type: "action", block: false, minRole: 10, action_name: "Save" },
207
+ ],
208
+ },
209
+ columns: [
210
+ { type: "Field", fieldview: "edit", field_name: "description" },
211
+ { type: "Action", minRole: 10, action_name: "Save" },
212
+ ],
213
+ viewname: "EditTodo",
214
+ view_when_done: "List Todos",
215
+ },
216
+ },
217
+ {
218
+ name: "List Todos",
219
+ table: "TodoItems",
220
+ min_role: 10,
221
+ menu_label: "List",
222
+ viewtemplate: "List",
223
+ configuration: {
224
+ columns: [
225
+ {
226
+ stat: "Count",
227
+ type: "Field",
228
+ view: "Own:EditTodo",
229
+ fieldview: "as_text",
230
+ field_name: "description",
231
+ join_field: "",
232
+ action_name: "Delete",
233
+ state_field: "on",
234
+ agg_relation: "",
235
+ },
236
+ {
237
+ stat: "Count",
238
+ type: "Field",
239
+ view: "Own:EditTodo",
240
+ fieldview: "show",
241
+ field_name: "done",
242
+ join_field: "",
243
+ action_name: "Delete",
244
+ state_field: "on",
245
+ agg_relation: "",
246
+ },
247
+ {
248
+ stat: "Count",
249
+ type: "Action",
250
+ view: "Own:EditTodo",
251
+ fieldview: "as_text",
252
+ field_name: "description",
253
+ join_field: "",
254
+ action_name: "Toggle done",
255
+ state_field: "on",
256
+ agg_relation: "",
257
+ },
258
+ ],
259
+ viewname: "List Todos",
260
+ default_state: { done: false, description: "" },
261
+ view_to_create: "EditTodo",
262
+ },
263
+ },
264
+ ],
265
+ tables: [
266
+ {
267
+ name: "TodoItems",
268
+ fields: [
269
+ {
270
+ name: "description",
271
+ type: "String",
272
+ label: "Description",
273
+ required: true,
274
+ is_unique: false,
275
+ attributes: { options: "" },
276
+ },
277
+ {
278
+ name: "done",
279
+ type: "Bool",
280
+ label: "Done",
281
+ required: true,
282
+ is_unique: false,
283
+ attributes: {},
284
+ },
285
+ ],
286
+ min_role_read: 1,
287
+ min_role_write: 1,
288
+ },
289
+ ],
290
+ pages: [
291
+ {
292
+ name: "FooPage",
293
+ menu_label: "FooPage",
294
+ title: "Foo",
295
+ description: "Foo",
296
+ layout: {},
297
+ min_role: 10,
298
+ root_page_for_roles: ["public"],
299
+ },
300
+ ],
301
+ plugins: [],
302
+ roles: [],
303
+ library: [],
304
+ triggers: [],
305
+ };
306
+ (0, globals_1.describe)("pack install", () => {
307
+ (0, globals_1.it)("installs pack", async () => {
308
+ const can = await can_install_pack(todoPack);
309
+ (0, globals_1.expect)(can).toBe(true);
310
+ await install_pack(todoPack, "Todo list", () => { });
311
+ const tbl = await table_1.default.findOne({ name: "TodoItems" });
312
+ (0, globals_1.expect)(!!tbl).toBe(true);
313
+ const menu = getState().getConfig("menu_items", []);
314
+ (0, globals_1.expect)(menu).toEqual([
315
+ { label: "List", type: "View", viewname: "List Todos", min_role: 10 },
316
+ { label: "FooPage", pagename: "FooPage", type: "Page", min_role: 10 },
317
+ ]);
318
+ const pubhome = getState().getConfig("public_home", []);
319
+ (0, globals_1.expect)(pubhome).toBe("FooPage");
320
+ });
321
+ (0, globals_1.it)("cannot install pack again", async () => {
322
+ const can = await can_install_pack(todoPack);
323
+ (0, globals_1.expect)(can).toStrictEqual({ error: "Tables already exist: todoitems" });
324
+ });
325
+ (0, globals_1.it)("warns about duplicates", async () => {
326
+ const { ...restOfPack } = todoPack;
327
+ restOfPack.tables = [];
328
+ const can = await can_install_pack(restOfPack);
329
+ (0, globals_1.expect)(can).toStrictEqual({
330
+ warning: "Clashing view EditTodo. Clashing view List Todos. Clashing page FooPage.",
331
+ });
332
+ });
333
+ (0, globals_1.it)("uninstalls pack", async () => {
334
+ await uninstall_pack(todoPack, "Todo list");
335
+ const tbl = await table_1.default.findOne({ name: "TodoItems" });
336
+ (0, globals_1.expect)(!!tbl).toBe(false);
337
+ });
338
+ });
339
+ //# sourceMappingURL=pack.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pack.test.js","sourceRoot":"","sources":["../../tests/pack.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=random.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random.test.d.ts","sourceRoot":"","sources":["../../tests/random.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const { random_table, fill_table_row, all_views, } = require("@saltcorn/data/models/random");
7
+ const index_1 = __importDefault(require("@saltcorn/data/db/index"));
8
+ const { getState } = require("@saltcorn/data/db/state");
9
+ getState().registerPlugin("base", require("@saltcorn/data/base-plugin"));
10
+ const { set_seed } = require("chaos-guinea-pig");
11
+ const generators_1 = __importDefault(require("@saltcorn/types/generators"));
12
+ const { oneOf, generateBool } = generators_1.default;
13
+ const form_1 = __importDefault(require("@saltcorn/data/models/form"));
14
+ const user_1 = __importDefault(require("@saltcorn/data/models/user"));
15
+ const markup_1 = __importDefault(require("@saltcorn/markup"));
16
+ const { renderForm } = markup_1.default;
17
+ const promises_1 = require("fs/promises");
18
+ const backup_1 = __importDefault(require("../models/backup"));
19
+ const { create_backup, restore, create_csv_from_rows } = backup_1.default;
20
+ const reset = require("@saltcorn/data/db/reset_schema");
21
+ const mocks_1 = __importDefault(require("@saltcorn/data/tests/mocks"));
22
+ const { mockReqRes, plugin_with_routes } = mocks_1.default;
23
+ const table_1 = __importDefault(require("@saltcorn/data/models/table"));
24
+ const tmp_promise_1 = require("tmp-promise");
25
+ const path_1 = require("path");
26
+ const assertions_1 = require("@saltcorn/data/tests/assertions");
27
+ const globals_1 = require("@jest/globals");
28
+ jest.setTimeout(80000);
29
+ (0, globals_1.afterAll)(index_1.default.close);
30
+ (0, globals_1.beforeAll)(async () => {
31
+ await require("@saltcorn/data/db/reset_schema")();
32
+ await require("@saltcorn/data/db/fixtures")();
33
+ getState().registerPlugin("mock_plugin", plugin_with_routes);
34
+ });
35
+ const seed = set_seed();
36
+ (0, globals_1.describe)("Random tables", () => {
37
+ let fnm;
38
+ let tableCounts = new Array();
39
+ (0, globals_1.it)("can create with seed " + seed, async () => {
40
+ if (!index_1.default.isSQLite)
41
+ await index_1.default.query('create extension if not exists "uuid-ossp";');
42
+ let has_rows = false;
43
+ for (let index = 0; index < 20; index++) {
44
+ //db.set_sql_logging(true);
45
+ const table = await random_table();
46
+ const rows = await table.getJoinedRows({});
47
+ const fields = await table.getFields();
48
+ const nonFkey = fields.filter((f) => !f.is_fkey && !f.primary_key);
49
+ (0, globals_1.expect)(rows.length > -1).toBe(true);
50
+ //enable versioning
51
+ if (generateBool())
52
+ await table.update({ versioned: true });
53
+ //update a row
54
+ let id;
55
+ if (rows.length > 0) {
56
+ has_rows = true;
57
+ id = oneOf(rows.map((r) => r.id));
58
+ const row = await table.getRow({ id });
59
+ if (nonFkey.length > 0) {
60
+ const f = oneOf(nonFkey);
61
+ row[f.name] = await f.generate();
62
+ await table.tryUpdateRow(row, row.id);
63
+ }
64
+ }
65
+ //insert
66
+ await fill_table_row(table);
67
+ //toggle bool
68
+ const prels = await table.get_parent_relations();
69
+ const crels = await table.get_child_relations();
70
+ // add non-required field
71
+ const form = new form_1.default({ action: "/", fields });
72
+ await form.fill_fkey_options();
73
+ const rendered = renderForm(form, "123");
74
+ (0, globals_1.expect)(rendered).toContain("<form");
75
+ const { list, show, edit } = await all_views(table, "List");
76
+ const listres = await list.run({}, mockReqRes);
77
+ (0, globals_1.expect)(listres).toContain("<table");
78
+ const editres = await edit.run({}, mockReqRes);
79
+ (0, globals_1.expect)(editres).toContain("<form");
80
+ if (id) {
81
+ const showres = await show.run({ id }, mockReqRes);
82
+ if (fields.length > 1 && showres !== "<br /><br />")
83
+ (0, globals_1.expect)(showres).toContain("<div");
84
+ const editres1 = await edit.run({ id }, mockReqRes);
85
+ (0, globals_1.expect)(editres1).toContain("<form");
86
+ }
87
+ }
88
+ (0, globals_1.expect)(has_rows).toBe(true);
89
+ });
90
+ (0, globals_1.it)("can backup random tables with seed " + seed, async () => {
91
+ const tables = await table_1.default.find({});
92
+ for (const table of tables) {
93
+ const count = await table.countRows();
94
+ await table.getFields();
95
+ tableCounts.push([table, count]);
96
+ }
97
+ fnm = await create_backup();
98
+ });
99
+ (0, globals_1.it)("can restore random tables with seed " + seed, async () => {
100
+ await reset();
101
+ if (!index_1.default.isSQLite)
102
+ await index_1.default.query('create extension if not exists "uuid-ossp";');
103
+ await user_1.default.create({
104
+ email: "admin@foo.com",
105
+ password: "AhGGr6rhu45",
106
+ role_id: 1,
107
+ });
108
+ const restoreres = await restore(fnm, (p) => { });
109
+ for (const [oldtable, n] of tableCounts) {
110
+ const table = await table_1.default.findOne({ name: oldtable.name });
111
+ (0, assertions_1.assertIsSet)(table);
112
+ (0, globals_1.expect)(!!table).toBe(true);
113
+ const count = await table.countRows();
114
+ (0, globals_1.expect)([table.name, count]).toEqual([oldtable.name, n]);
115
+ (0, globals_1.expect)(await table.owner_fieldname()).toEqual(await oldtable.owner_fieldname());
116
+ }
117
+ (0, globals_1.expect)(restoreres).toBe(undefined);
118
+ await (0, promises_1.unlink)(fnm);
119
+ });
120
+ });
121
+ (0, globals_1.describe)("Random table CSV io", () => {
122
+ (0, globals_1.it)("can create with seed " + seed, async () => {
123
+ for (let index = 0; index < 20; index++) {
124
+ const newDir = await (0, tmp_promise_1.dir)({ unsafeCleanup: false });
125
+ await reset();
126
+ if (!index_1.default.isSQLite)
127
+ await index_1.default.query('create extension if not exists "uuid-ossp";');
128
+ await user_1.default.create({
129
+ email: "admin@foo.com",
130
+ password: "AhGGr6rhu45",
131
+ role_id: 1,
132
+ });
133
+ await random_table();
134
+ const table = await random_table({ force_int_pk: true });
135
+ const rows1 = await table.getRows({}, { orderBy: "id" });
136
+ if (rows1.length > 0) {
137
+ const fnm = (0, path_1.join)(newDir.path, table.name + ".csv");
138
+ await create_csv_from_rows(rows1, fnm);
139
+ const crres = await table_1.default.create_from_csv("replica", fnm);
140
+ (0, assertions_1.assertsIsSuccessMessage)(crres);
141
+ const rows2 = await crres.table.getRows({}, { orderBy: "id" });
142
+ (0, globals_1.expect)(rows2.length).toBe(rows1.length);
143
+ //expect(rows2).toEqual(rows1);
144
+ }
145
+ }
146
+ });
147
+ });
148
+ //# sourceMappingURL=random.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"random.test.js","sourceRoot":"","sources":["../../tests/random.test.ts"],"names":[],"mappings":";;;;;AAAA,MAAM,EACJ,YAAY,EACZ,cAAc,EACd,SAAS,GACV,GAAG,OAAO,CAAC,8BAA8B,CAAC,CAAC;AAC5C,oEAAyC;AACzC,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,yBAAyB,CAAC,CAAC;AACxD,QAAQ,EAAE,CAAC,cAAc,CAAC,MAAM,EAAE,OAAO,CAAC,4BAA4B,CAAC,CAAC,CAAC;AACzE,MAAM,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;AACjD,4EAAoD;AACpD,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,oBAAU,CAAC;AAC3C,sEAA8C;AAC9C,sEAA8C;AAE9C,8DAAsC;AACtC,MAAM,EAAE,UAAU,EAAE,GAAG,gBAAM,CAAC;AAC9B,0CAAqC;AACrC,8DAAsC;AACtC,MAAM,EAAE,aAAa,EAAE,OAAO,EAAE,oBAAoB,EAAE,GAAG,gBAAM,CAAC;AAChE,MAAM,KAAK,GAAG,OAAO,CAAC,gCAAgC,CAAC,CAAC;AACxD,uEAA+C;AAC/C,MAAM,EAAE,UAAU,EAAE,kBAAkB,EAAE,GAAG,eAAK,CAAC;AACjD,wEAAgD;AAEhD,6CAAkC;AAClC,+BAA4B;AAE5B,gEAGyC;AACzC,2CAA0E;AAE1E,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;AAEvB,IAAA,kBAAQ,EAAC,eAAE,CAAC,KAAK,CAAC,CAAC;AAEnB,IAAA,mBAAS,EAAC,KAAK,IAAI,EAAE;IACnB,MAAM,OAAO,CAAC,gCAAgC,CAAC,EAAE,CAAC;IAClD,MAAM,OAAO,CAAC,4BAA4B,CAAC,EAAE,CAAC;IAC9C,QAAQ,EAAE,CAAC,cAAc,CAAC,aAAa,EAAE,kBAAkB,CAAC,CAAC;AAC/D,CAAC,CAAC,CAAC;AACH,MAAM,IAAI,GAAG,QAAQ,EAAE,CAAC;AAExB,IAAA,kBAAQ,EAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,IAAI,GAAW,CAAC;IAChB,IAAI,WAAW,GAAG,IAAI,KAAK,EAAiC,CAAC;IAC7D,IAAA,YAAE,EAAC,uBAAuB,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE;QAC5C,IAAI,CAAC,eAAE,CAAC,QAAQ;YACd,MAAM,eAAE,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAChE,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE;YACvC,2BAA2B;YAC3B,MAAM,KAAK,GAAG,MAAM,YAAY,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAC3C,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAQ,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;YAC1E,IAAA,gBAAM,EAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,mBAAmB;YACnB,IAAI,YAAY,EAAE;gBAAE,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;YAC5D,cAAc;YACd,IAAI,EAAE,CAAC;YACP,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnB,QAAQ,GAAG,IAAI,CAAC;gBAChB,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACvC,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;gBAEvC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBACtB,MAAM,CAAC,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;oBACzB,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;oBACjC,MAAM,KAAK,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;iBACvC;aACF;YAED,QAAQ;YACR,MAAM,cAAc,CAAC,KAAK,CAAC,CAAC;YAE5B,aAAa;YACb,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,oBAAoB,EAAE,CAAC;YACjD,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,mBAAmB,EAAE,CAAC;YAEhD,yBAAyB;YAEzB,MAAM,IAAI,GAAG,IAAI,cAAI,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/C,MAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC/B,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACzC,IAAA,gBAAM,EAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAEpC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,MAAM,SAAS,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;YAC5D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;YAC/C,IAAA,gBAAM,EAAC,OAAO,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,UAAU,CAAC,CAAC;YAC/C,IAAA,gBAAM,EAAC,OAAO,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACnC,IAAI,EAAE,EAAE;gBACN,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;gBACnD,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,OAAO,KAAK,cAAc;oBACjD,IAAA,gBAAM,EAAC,OAAO,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBACpC,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,CAAC,CAAC;gBACpD,IAAA,gBAAM,EAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;aACrC;SACF;QACD,IAAA,gBAAM,EAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9B,CAAC,CAAC,CAAC;IAEH,IAAA,YAAE,EAAC,qCAAqC,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE;QAC1D,MAAM,MAAM,GAAG,MAAM,eAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;YAC1B,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC;YACtC,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC;YACxB,WAAW,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;SAClC;QAED,GAAG,GAAG,MAAM,aAAa,EAAE,CAAC;IAC9B,CAAC,CAAC,CAAC;IACH,IAAA,YAAE,EAAC,sCAAsC,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE;QAC3D,MAAM,KAAK,EAAE,CAAC;QACd,IAAI,CAAC,eAAE,CAAC,QAAQ;YACd,MAAM,eAAE,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;QAChE,MAAM,cAAI,CAAC,MAAM,CAAC;YAChB,KAAK,EAAE,eAAe;YACtB,QAAQ,EAAE,aAAa;YACvB,OAAO,EAAE,CAAC;SACX,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,EAAE,GAAE,CAAC,CAAC,CAAC;QACjD,KAAK,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,WAAW,EAAE;YACvC,MAAM,KAAK,GAAG,MAAM,eAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;YAC3D,IAAA,wBAAW,EAAC,KAAK,CAAC,CAAC;YACnB,IAAA,gBAAM,EAAC,CAAC,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,SAAS,EAAE,CAAC;YACtC,IAAA,gBAAM,EAAC,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACxD,IAAA,gBAAM,EAAC,MAAM,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,CAC3C,MAAM,QAAQ,CAAC,eAAe,EAAE,CACjC,CAAC;SACH;QAED,IAAA,gBAAM,EAAC,UAAU,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACnC,MAAM,IAAA,iBAAM,EAAC,GAAG,CAAC,CAAC;IACpB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AACH,IAAA,kBAAQ,EAAC,qBAAqB,EAAE,GAAG,EAAE;IACnC,IAAA,YAAE,EAAC,uBAAuB,GAAG,IAAI,EAAE,KAAK,IAAI,EAAE;QAC5C,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE;YACvC,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAG,EAAC,EAAE,aAAa,EAAE,KAAK,EAAE,CAAC,CAAC;YACnD,MAAM,KAAK,EAAE,CAAC;YACd,IAAI,CAAC,eAAE,CAAC,QAAQ;gBACd,MAAM,eAAE,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;YAChE,MAAM,cAAI,CAAC,MAAM,CAAC;gBAChB,KAAK,EAAE,eAAe;gBACtB,QAAQ,EAAE,aAAa;gBACvB,OAAO,EAAE,CAAC;aACX,CAAC,CAAC;YACH,MAAM,YAAY,EAAE,CAAC;YACrB,MAAM,KAAK,GAAG,MAAM,YAAY,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YACzD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpB,MAAM,GAAG,GAAG,IAAA,WAAI,EAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC,CAAC;gBACnD,MAAM,oBAAoB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACvC,MAAM,KAAK,GAAG,MAAM,eAAK,CAAC,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;gBAC1D,IAAA,oCAAuB,EAAC,KAAK,CAAC,CAAC;gBAC/B,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBAC/D,IAAA,gBAAM,EAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBACxC,+BAA+B;aAChC;SACF;IACH,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=tenant.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.test.d.ts","sourceRoot":"","sources":["../../tests/tenant.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const index_1 = __importDefault(require("@saltcorn/data/db/index"));
7
+ const { getState, add_tenant, init_multi_tenant, restart_tenant, } = require("@saltcorn/data/db/state");
8
+ getState().registerPlugin("base", require("@saltcorn/data/base-plugin"));
9
+ const tenant_1 = __importDefault(require("../models/tenant"));
10
+ const { create_tenant, deleteTenant, getAllTenants, switchToTenant, insertTenant, } = tenant_1.default;
11
+ const config_1 = __importDefault(require("@saltcorn/data/models/config"));
12
+ const { getConfig } = config_1.default;
13
+ const globals_1 = require("@jest/globals");
14
+ (0, globals_1.afterAll)(index_1.default.close);
15
+ (0, globals_1.beforeAll)(async () => {
16
+ if (!index_1.default.isSQLite)
17
+ await index_1.default.query(`drop schema if exists test10 CASCADE `);
18
+ });
19
+ (0, globals_1.describe)("Tenant", () => {
20
+ if (!index_1.default.isSQLite) {
21
+ (0, globals_1.it)("can create a new tenant", async () => {
22
+ index_1.default.enable_multi_tenant();
23
+ getState().setConfig("base_url", "http://example.com/");
24
+ const tenant_template = getState().getConfig("tenant_template");
25
+ await switchToTenant(await insertTenant("test10"), "http://test10.example.com/");
26
+ add_tenant("test10");
27
+ await create_tenant({
28
+ t: "test10",
29
+ plugin_loader: () => { },
30
+ tenant_template,
31
+ });
32
+ index_1.default.runWithTenant("test10", async () => {
33
+ const ten = index_1.default.getTenantSchema();
34
+ (0, globals_1.expect)(ten).toBe("test10");
35
+ const base = await getConfig("base_url");
36
+ (0, globals_1.expect)(base).toBe("http://test10.example.com/");
37
+ });
38
+ const tens = await getAllTenants();
39
+ (0, globals_1.expect)(tens).toContain("test10");
40
+ (0, globals_1.expect)(tens).not.toContain("public");
41
+ await init_multi_tenant(() => { }, undefined, tens);
42
+ });
43
+ (0, globals_1.it)("can restart a tenant", async () => {
44
+ await index_1.default.runWithTenant("test10", async () => {
45
+ await restart_tenant(() => { });
46
+ });
47
+ });
48
+ (0, globals_1.it)("can delete a tenant", async () => {
49
+ index_1.default.enable_multi_tenant();
50
+ await deleteTenant("test10");
51
+ });
52
+ }
53
+ else {
54
+ (0, globals_1.it)("does not support tenants on SQLite", async () => {
55
+ (0, globals_1.expect)(index_1.default.isSQLite).toBe(true);
56
+ });
57
+ }
58
+ });
59
+ //# sourceMappingURL=tenant.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tenant.test.js","sourceRoot":"","sources":["../../tests/tenant.test.ts"],"names":[],"mappings":"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"}