@saltcorn/admin-models 1.6.0-alpha.9 → 1.6.0-beta.1
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/dist/index.d.ts.map +1 -1
- package/dist/models/backup.d.ts.map +1 -1
- package/dist/models/backup.js +1 -1
- package/dist/models/backup.js.map +1 -1
- package/dist/models/pack.d.ts.map +1 -1
- package/dist/models/pack.js +105 -1
- package/dist/models/pack.js.map +1 -1
- package/dist/models/tenant.d.ts.map +1 -1
- package/dist/models/tenant.js +2 -1
- package/dist/models/tenant.js.map +1 -1
- package/package.json +6 -6
- package/dist/tests/backup.test.d.ts +0 -2
- package/dist/tests/backup.test.d.ts.map +0 -1
- package/dist/tests/backup.test.js +0 -204
- package/dist/tests/backup.test.js.map +0 -1
- package/dist/tests/cfgcheck.test.d.ts +0 -2
- package/dist/tests/cfgcheck.test.d.ts.map +0 -1
- package/dist/tests/cfgcheck.test.js +0 -33
- package/dist/tests/cfgcheck.test.js.map +0 -1
- package/dist/tests/pack.test.d.ts +0 -2
- package/dist/tests/pack.test.d.ts.map +0 -1
- package/dist/tests/pack.test.js +0 -624
- package/dist/tests/pack.test.js.map +0 -1
- package/dist/tests/random.test.d.ts +0 -2
- package/dist/tests/random.test.d.ts.map +0 -1
- package/dist/tests/random.test.js +0 -152
- package/dist/tests/random.test.js.map +0 -1
- package/dist/tests/tenant.test.d.ts +0 -2
- package/dist/tests/tenant.test.d.ts.map +0 -1
- package/dist/tests/tenant.test.js +0 -104
- package/dist/tests/tenant.test.js.map +0 -1
|
@@ -1,152 +0,0 @@
|
|
|
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 index_2 = __importDefault(require("@saltcorn/markup/index"));
|
|
16
|
-
const { renderForm } = index_2.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 = 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
|
-
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 = 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
|
-
if (count !== n) {
|
|
115
|
-
console.log(restoreres);
|
|
116
|
-
console.log(JSON.stringify(table, null, 2));
|
|
117
|
-
}
|
|
118
|
-
(0, globals_1.expect)([table.name, count]).toEqual([oldtable.name, n]);
|
|
119
|
-
(0, globals_1.expect)(await table.owner_fieldname()).toEqual(await oldtable.owner_fieldname());
|
|
120
|
-
}
|
|
121
|
-
(0, globals_1.expect)(restoreres).toBe(undefined);
|
|
122
|
-
await (0, promises_1.unlink)(fnm);
|
|
123
|
-
});
|
|
124
|
-
});
|
|
125
|
-
(0, globals_1.describe)("Random table CSV io", () => {
|
|
126
|
-
(0, globals_1.it)("can create with seed " + seed, async () => {
|
|
127
|
-
for (let index = 0; index < 20; index++) {
|
|
128
|
-
const newDir = await (0, tmp_promise_1.dir)({ unsafeCleanup: false });
|
|
129
|
-
await reset();
|
|
130
|
-
if (!index_1.default.isSQLite)
|
|
131
|
-
await index_1.default.query('create extension if not exists "uuid-ossp";');
|
|
132
|
-
await user_1.default.create({
|
|
133
|
-
email: "admin@foo.com",
|
|
134
|
-
password: "AhGGr6rhu45",
|
|
135
|
-
role_id: 1,
|
|
136
|
-
});
|
|
137
|
-
await random_table();
|
|
138
|
-
const table = await random_table({ force_int_pk: true });
|
|
139
|
-
const rows1 = await table.getRows({}, { orderBy: "id" });
|
|
140
|
-
if (rows1.length > 0) {
|
|
141
|
-
const fnm = (0, path_1.join)(newDir.path, table.name + ".csv");
|
|
142
|
-
await create_csv_from_rows(rows1, fnm);
|
|
143
|
-
const crres = await table_1.default.create_from_csv("replica", fnm);
|
|
144
|
-
(0, assertions_1.assertsIsSuccessMessage)(crres);
|
|
145
|
-
const rows2 = await crres.table.getRows({}, { orderBy: "id" });
|
|
146
|
-
(0, globals_1.expect)(rows2.length).toBe(rows1.length);
|
|
147
|
-
//expect(rows2).toEqual(rows1);
|
|
148
|
-
}
|
|
149
|
-
}
|
|
150
|
-
});
|
|
151
|
-
});
|
|
152
|
-
//# sourceMappingURL=random.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"random.test.js","sourceRoot":"","sources":["../../tests/random.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tenant.test.d.ts","sourceRoot":"","sources":["../../tests/tenant.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,104 +0,0 @@
|
|
|
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, getAllTenantRows, eachTenant, } = 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
|
-
if (!index_1.default.isSQLite)
|
|
19
|
-
await index_1.default.query(`drop schema if exists test11 CASCADE `);
|
|
20
|
-
});
|
|
21
|
-
(0, globals_1.describe)("Tenant", () => {
|
|
22
|
-
if (!index_1.default.isSQLite) {
|
|
23
|
-
(0, globals_1.it)("can create a new tenant", async () => {
|
|
24
|
-
index_1.default.enable_multi_tenant();
|
|
25
|
-
await getState().setConfig("base_url", "http://example.com/");
|
|
26
|
-
await index_1.default.query(`drop schema if exists test10 CASCADE `);
|
|
27
|
-
add_tenant("test10");
|
|
28
|
-
await switchToTenant(await insertTenant("test10", "foo@foo.com", "tenant test10 will be template for test11"), "http://test10.example.com/");
|
|
29
|
-
await create_tenant({
|
|
30
|
-
t: "test10",
|
|
31
|
-
loadAndSaveNewPlugin(plugin) { },
|
|
32
|
-
plugin_loader() { },
|
|
33
|
-
});
|
|
34
|
-
index_1.default.runWithTenant("test10", async () => {
|
|
35
|
-
const ten = index_1.default.getTenantSchema();
|
|
36
|
-
(0, globals_1.expect)(ten).toBe("test10");
|
|
37
|
-
// test base url
|
|
38
|
-
const base = await getConfig("base_url");
|
|
39
|
-
(0, globals_1.expect)(base).toBe("http://test10.example.com/");
|
|
40
|
-
const state = getState();
|
|
41
|
-
(0, globals_1.expect)(!!state).toBe(true);
|
|
42
|
-
const tables = state.tables;
|
|
43
|
-
(0, globals_1.expect)(tables.length).toBe(1);
|
|
44
|
-
(0, globals_1.expect)(tables[0].name).toBe("users");
|
|
45
|
-
});
|
|
46
|
-
});
|
|
47
|
-
(0, globals_1.it)("check tenant list", async () => {
|
|
48
|
-
const tens = await getAllTenants();
|
|
49
|
-
(0, globals_1.expect)(tens).toContain("test10");
|
|
50
|
-
(0, globals_1.expect)(tens).not.toContain("public");
|
|
51
|
-
await init_multi_tenant(() => { }, undefined, tens);
|
|
52
|
-
});
|
|
53
|
-
(0, globals_1.it)("can update template", async () => {
|
|
54
|
-
await Tenant.update("test10", { description: "new description 123" });
|
|
55
|
-
const t = await Tenant.findOne({ subdomain: "test10" });
|
|
56
|
-
(0, globals_1.expect)(t?.description).toBe("new description 123");
|
|
57
|
-
});
|
|
58
|
-
(0, globals_1.it)("can create a new tenant with template without description", async () => {
|
|
59
|
-
await getState().setConfig("tenant_template", "test10");
|
|
60
|
-
const tenant_template = getState().getConfig("tenant_template");
|
|
61
|
-
await index_1.default.query(`drop schema if exists test11 CASCADE `);
|
|
62
|
-
add_tenant("test11");
|
|
63
|
-
await switchToTenant(await insertTenant("test11", undefined, undefined, tenant_template), "http://test11.example.com/");
|
|
64
|
-
await create_tenant({
|
|
65
|
-
t: "test11",
|
|
66
|
-
loadAndSaveNewPlugin(plugin) { },
|
|
67
|
-
plugin_loader() { },
|
|
68
|
-
tenant_template,
|
|
69
|
-
});
|
|
70
|
-
// check template
|
|
71
|
-
const t = await Tenant.findOne({ subdomain: "test11" });
|
|
72
|
-
(0, globals_1.expect)(t?.template).toBe(tenant_template);
|
|
73
|
-
});
|
|
74
|
-
(0, globals_1.it)("can find tenant", async () => {
|
|
75
|
-
const ten = await Tenant.find({ subdomain: "test11" });
|
|
76
|
-
(0, globals_1.expect)(ten[0]?.subdomain).toContain("test11");
|
|
77
|
-
});
|
|
78
|
-
(0, globals_1.it)("can get all tenant rows", async () => {
|
|
79
|
-
const tens = await getAllTenantRows();
|
|
80
|
-
(0, globals_1.expect)(tens[0]?.subdomain).toContain("test10");
|
|
81
|
-
});
|
|
82
|
-
(0, globals_1.it)("can run function for each tenant", async () => {
|
|
83
|
-
await eachTenant(async () => {
|
|
84
|
-
const domain = index_1.default.getTenantSchema();
|
|
85
|
-
(0, globals_1.expect)(domain).toBeDefined();
|
|
86
|
-
});
|
|
87
|
-
});
|
|
88
|
-
(0, globals_1.it)("can restart a tenant", async () => {
|
|
89
|
-
await index_1.default.runWithTenant("test10", async () => {
|
|
90
|
-
await restart_tenant(() => { });
|
|
91
|
-
});
|
|
92
|
-
});
|
|
93
|
-
(0, globals_1.it)("can delete a tenant", async () => {
|
|
94
|
-
index_1.default.enable_multi_tenant();
|
|
95
|
-
await deleteTenant("test10");
|
|
96
|
-
});
|
|
97
|
-
}
|
|
98
|
-
else {
|
|
99
|
-
(0, globals_1.it)("does not support tenants on SQLite", async () => {
|
|
100
|
-
(0, globals_1.expect)(index_1.default.isSQLite).toBe(true);
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
});
|
|
104
|
-
//# sourceMappingURL=tenant.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tenant.test.js","sourceRoot":"","sources":["../../tests/tenant.test.ts"],"names":[],"mappings":"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"}
|