@antelopejs/interface-data-api 0.0.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.
- package/LICENSE +190 -0
- package/README.md +45 -0
- package/dist/antelope.test.d.ts +2 -0
- package/dist/antelope.test.js +59 -0
- package/dist/antelope.test.js.map +1 -0
- package/dist/components.d.ts +72 -0
- package/dist/components.js +344 -0
- package/dist/components.js.map +1 -0
- package/dist/index.d.ts +93 -0
- package/dist/index.js +217 -0
- package/dist/index.js.map +1 -0
- package/dist/metadata.d.ts +290 -0
- package/dist/metadata.js +444 -0
- package/dist/metadata.js.map +1 -0
- package/dist/tests/components/access_control.test.d.ts +1 -0
- package/dist/tests/components/access_control.test.js +138 -0
- package/dist/tests/components/access_control.test.js.map +1 -0
- package/dist/tests/components/listable.test.d.ts +1 -0
- package/dist/tests/components/listable.test.js +361 -0
- package/dist/tests/components/listable.test.js.map +1 -0
- package/dist/tests/components/mandatory.test.d.ts +1 -0
- package/dist/tests/components/mandatory.test.js +193 -0
- package/dist/tests/components/mandatory.test.js.map +1 -0
- package/dist/tests/components/per_action_access.test.d.ts +1 -0
- package/dist/tests/components/per_action_access.test.js +115 -0
- package/dist/tests/components/per_action_access.test.js.map +1 -0
- package/dist/tests/components/validator.test.d.ts +1 -0
- package/dist/tests/components/validator.test.js +178 -0
- package/dist/tests/components/validator.test.js.map +1 -0
- package/dist/tests/constants.d.ts +3 -0
- package/dist/tests/constants.js +7 -0
- package/dist/tests/constants.js.map +1 -0
- package/dist/tests/index/routes.test.d.ts +1 -0
- package/dist/tests/index/routes.test.js +210 -0
- package/dist/tests/index/routes.test.js.map +1 -0
- package/dist/tests/integration.test.d.ts +1 -0
- package/dist/tests/integration.test.js +838 -0
- package/dist/tests/integration.test.js.map +1 -0
- package/dist/tests/utils.d.ts +12 -0
- package/dist/tests/utils.js +70 -0
- package/dist/tests/utils.js.map +1 -0
- package/package.json +78 -0
|
@@ -0,0 +1,361 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
16
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
17
|
+
const interface_data_api_1 = require("@antelopejs/interface-data-api");
|
|
18
|
+
const metadata_1 = require("@antelopejs/interface-data-api/metadata");
|
|
19
|
+
const interface_database_1 = require("@antelopejs/interface-database");
|
|
20
|
+
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
21
|
+
const chai_1 = require("chai");
|
|
22
|
+
const utils_1 = require("../utils");
|
|
23
|
+
const currentTestName = node_path_1.default
|
|
24
|
+
.basename(__filename)
|
|
25
|
+
.replace(/\.test\.(ts|js)$/, "");
|
|
26
|
+
const productTableName = `products-${currentTestName}`;
|
|
27
|
+
const schemaName = "default";
|
|
28
|
+
let Product = class Product extends interface_database_decorators_1.Table {
|
|
29
|
+
};
|
|
30
|
+
__decorate([
|
|
31
|
+
(0, interface_database_decorators_1.Index)(),
|
|
32
|
+
__metadata("design:type", String)
|
|
33
|
+
], Product.prototype, "reference", void 0);
|
|
34
|
+
Product = __decorate([
|
|
35
|
+
(0, interface_database_decorators_1.RegisterTable)(productTableName, schemaName)
|
|
36
|
+
], Product);
|
|
37
|
+
class ProductModel extends (0, interface_database_decorators_1.BasicDataModel)(Product, productTableName) {
|
|
38
|
+
}
|
|
39
|
+
const defaultProductDataset = [
|
|
40
|
+
{
|
|
41
|
+
name: "OneSung X",
|
|
42
|
+
description: "Smartphone with a 6.7-inch display based on an Tensilica Xtensa LX6 chip.",
|
|
43
|
+
price: 929.99,
|
|
44
|
+
reference: "OS-X",
|
|
45
|
+
addedAt: new Date("2025-06-15"),
|
|
46
|
+
internalNotes: "This should not be visible in lists",
|
|
47
|
+
metadata: "idk what to put here",
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
name: "Kine Earth Max",
|
|
51
|
+
description: "AI powered shoes, adjusting the sole's flexibility based on the ground",
|
|
52
|
+
price: 129.99,
|
|
53
|
+
reference: "KE-MAX",
|
|
54
|
+
addedAt: new Date("1900-01-01"),
|
|
55
|
+
internalNotes: "This should not be visible in lists either",
|
|
56
|
+
metadata: "seriously, no idea what to put here. At least there's a string",
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: "Pocket Potato",
|
|
60
|
+
description: "A potato that fits in your pocket",
|
|
61
|
+
price: 1.99,
|
|
62
|
+
reference: "PP-1",
|
|
63
|
+
addedAt: new Date("3000-12-31"),
|
|
64
|
+
internalNotes: "Again, not visible in lists",
|
|
65
|
+
metadata: "still does not matter",
|
|
66
|
+
},
|
|
67
|
+
];
|
|
68
|
+
describe("Field Listable", () => {
|
|
69
|
+
it("default listing", async () => await defaultListing());
|
|
70
|
+
it("list only detailed fields", async () => await listDetailedFields());
|
|
71
|
+
it("list nonexistant pluck mode", async () => await listNonexistantPluckMode());
|
|
72
|
+
it("list only 2 rows per page", async () => await listOnly2RowsPerPage());
|
|
73
|
+
it("list from 2nd page", async () => await listFrom2ndPage());
|
|
74
|
+
it("list only 2 first pages", async () => await listOnly2FirstPages());
|
|
75
|
+
it("list only 2nd page", async () => await listOnly2ndPage());
|
|
76
|
+
it("sorting by string (name), ascending", async () => await sortByNameAscending());
|
|
77
|
+
it("sorting by string (name), descending", async () => await sortByNameDescending());
|
|
78
|
+
it("sorting by number (price), ascending", async () => await sortByPriceAscending());
|
|
79
|
+
it("sorting by number (price), descending", async () => await sortByPriceDescending());
|
|
80
|
+
it("sorting by date (addedAt), ascending", async () => await sortByAddedAtAscending());
|
|
81
|
+
it("sorting by date (addedAt), descending", async () => await sortByAddedAtDescending());
|
|
82
|
+
after(async () => { });
|
|
83
|
+
});
|
|
84
|
+
async function _createDataController(testName, route, product) {
|
|
85
|
+
let _ListableTestAPI = class _ListableTestAPI extends (0, interface_data_api_1.DataController)(Product, route, (0, interface_api_1.Controller)(`/${testName}`)) {
|
|
86
|
+
};
|
|
87
|
+
__decorate([
|
|
88
|
+
(0, metadata_1.ModelReference)(),
|
|
89
|
+
(0, interface_database_decorators_1.Model)(ProductModel),
|
|
90
|
+
__metadata("design:type", ProductModel)
|
|
91
|
+
], _ListableTestAPI.prototype, "productModel", void 0);
|
|
92
|
+
__decorate([
|
|
93
|
+
(0, metadata_1.Listable)(),
|
|
94
|
+
(0, metadata_1.Listable)(true, "detailed"),
|
|
95
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly),
|
|
96
|
+
__metadata("design:type", String)
|
|
97
|
+
], _ListableTestAPI.prototype, "_id", void 0);
|
|
98
|
+
__decorate([
|
|
99
|
+
(0, metadata_1.Listable)(),
|
|
100
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly),
|
|
101
|
+
(0, metadata_1.Sortable)({ noIndex: true }),
|
|
102
|
+
__metadata("design:type", String)
|
|
103
|
+
], _ListableTestAPI.prototype, "name", void 0);
|
|
104
|
+
__decorate([
|
|
105
|
+
(0, metadata_1.Listable)(),
|
|
106
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly),
|
|
107
|
+
(0, metadata_1.Sortable)({ noIndex: true }),
|
|
108
|
+
__metadata("design:type", Number)
|
|
109
|
+
], _ListableTestAPI.prototype, "price", void 0);
|
|
110
|
+
__decorate([
|
|
111
|
+
(0, metadata_1.Listable)(),
|
|
112
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly),
|
|
113
|
+
__metadata("design:type", String)
|
|
114
|
+
], _ListableTestAPI.prototype, "reference", void 0);
|
|
115
|
+
__decorate([
|
|
116
|
+
(0, metadata_1.Listable)(),
|
|
117
|
+
__metadata("design:type", String)
|
|
118
|
+
], _ListableTestAPI.prototype, "internalNotes", void 0);
|
|
119
|
+
__decorate([
|
|
120
|
+
(0, metadata_1.Listable)(),
|
|
121
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly),
|
|
122
|
+
(0, metadata_1.Sortable)({ noIndex: true }),
|
|
123
|
+
__metadata("design:type", Date)
|
|
124
|
+
], _ListableTestAPI.prototype, "addedAt", void 0);
|
|
125
|
+
__decorate([
|
|
126
|
+
(0, metadata_1.Listable)(true, "detailed"),
|
|
127
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly),
|
|
128
|
+
__metadata("design:type", String)
|
|
129
|
+
], _ListableTestAPI.prototype, "metadata", void 0);
|
|
130
|
+
__decorate([
|
|
131
|
+
(0, metadata_1.Listable)(true, "detailed"),
|
|
132
|
+
(0, metadata_1.Listable)(true, "nonexistent"),
|
|
133
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly),
|
|
134
|
+
__metadata("design:type", String)
|
|
135
|
+
], _ListableTestAPI.prototype, "description", void 0);
|
|
136
|
+
_ListableTestAPI = __decorate([
|
|
137
|
+
(0, interface_data_api_1.RegisterDataController)()
|
|
138
|
+
], _ListableTestAPI);
|
|
139
|
+
await (0, interface_database_decorators_1.CreateDatabaseSchemaInstance)(schemaName);
|
|
140
|
+
await _dropProductTable();
|
|
141
|
+
const productModel = new ProductModel((0, utils_1.getSchemaInstance)(schemaName));
|
|
142
|
+
const insertResults = await productModel.insert(product);
|
|
143
|
+
return { ids: insertResults, productModel };
|
|
144
|
+
}
|
|
145
|
+
async function _dropProductTable() {
|
|
146
|
+
const schema = interface_database_1.Schema.get(schemaName);
|
|
147
|
+
if (schema) {
|
|
148
|
+
await schema.instance().table(productTableName).delete();
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
async function _getDatabaseProducts(ids, productModel) {
|
|
152
|
+
const database_products = [];
|
|
153
|
+
for (const id of ids) {
|
|
154
|
+
const product = await productModel.get(id);
|
|
155
|
+
(0, chai_1.expect)(product).to.not.equal(undefined);
|
|
156
|
+
if (product) {
|
|
157
|
+
database_products.push(product);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return database_products;
|
|
161
|
+
}
|
|
162
|
+
async function defaultListing() {
|
|
163
|
+
const { ids, productModel } = await _createDataController((0, utils_1.getFunctionName)(), { list: interface_data_api_1.DefaultRoutes.List }, defaultProductDataset);
|
|
164
|
+
const response = await (0, utils_1.listRequest)((0, utils_1.getFunctionName)(), {});
|
|
165
|
+
(0, chai_1.expect)(response.status).to.equal(200);
|
|
166
|
+
const data = (await response.json());
|
|
167
|
+
(0, chai_1.expect)(data.results).to.have.length(defaultProductDataset.length);
|
|
168
|
+
const listed_products = data.results;
|
|
169
|
+
const database_products = await _getDatabaseProducts(Object.values(ids), productModel);
|
|
170
|
+
await (0, utils_1.validateObjectList)(listed_products, database_products, [
|
|
171
|
+
"_id",
|
|
172
|
+
"name",
|
|
173
|
+
"price",
|
|
174
|
+
"reference",
|
|
175
|
+
]);
|
|
176
|
+
for (const product of listed_products) {
|
|
177
|
+
(0, chai_1.expect)(product.internalNotes).to.equal(undefined);
|
|
178
|
+
(0, chai_1.expect)(product.description).to.equal(undefined);
|
|
179
|
+
(0, chai_1.expect)(product.metadata).to.equal(undefined);
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
async function listDetailedFields() {
|
|
183
|
+
const { ids, productModel } = await _createDataController((0, utils_1.getFunctionName)(), {
|
|
184
|
+
detailed: interface_data_api_1.DefaultRoutes.WithOptions(interface_data_api_1.DefaultRoutes.List, {
|
|
185
|
+
pluckMode: "detailed",
|
|
186
|
+
}),
|
|
187
|
+
}, defaultProductDataset);
|
|
188
|
+
const response = await (0, utils_1.request)((0, utils_1.getFunctionName)(), "detailed", "GET", undefined, {});
|
|
189
|
+
(0, chai_1.expect)(response.status).to.equal(200);
|
|
190
|
+
const data = (await response.json());
|
|
191
|
+
(0, chai_1.expect)(data.results).to.have.length(defaultProductDataset.length);
|
|
192
|
+
const listed_products = data.results;
|
|
193
|
+
const database_products = await _getDatabaseProducts(Object.values(ids), productModel);
|
|
194
|
+
await (0, utils_1.validateObjectList)(listed_products, database_products, [
|
|
195
|
+
"_id",
|
|
196
|
+
"metadata",
|
|
197
|
+
"description",
|
|
198
|
+
]);
|
|
199
|
+
for (const product of listed_products) {
|
|
200
|
+
(0, chai_1.expect)(product.internalNotes).to.equal(undefined);
|
|
201
|
+
(0, chai_1.expect)(product.name).to.equal(undefined);
|
|
202
|
+
(0, chai_1.expect)(product.price).to.equal(undefined);
|
|
203
|
+
(0, chai_1.expect)(product.reference).to.equal(undefined);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
async function listNonexistantPluckMode() {
|
|
207
|
+
await _createDataController((0, utils_1.getFunctionName)(), {
|
|
208
|
+
detailed: interface_data_api_1.DefaultRoutes.WithOptions(interface_data_api_1.DefaultRoutes.List, {
|
|
209
|
+
pluckMode: "detailed",
|
|
210
|
+
}),
|
|
211
|
+
}, defaultProductDataset);
|
|
212
|
+
const response = await (0, utils_1.request)((0, utils_1.getFunctionName)(), "nonexistent", "GET", undefined, {});
|
|
213
|
+
(0, chai_1.expect)(response.status).to.equal(404);
|
|
214
|
+
}
|
|
215
|
+
async function listOnly2RowsPerPage() {
|
|
216
|
+
await _createDataController((0, utils_1.getFunctionName)(), { list: interface_data_api_1.DefaultRoutes.List }, defaultProductDataset);
|
|
217
|
+
const response = await (0, utils_1.listRequest)((0, utils_1.getFunctionName)(), { limit: "2" });
|
|
218
|
+
(0, chai_1.expect)(response.status).to.equal(200);
|
|
219
|
+
const data = (await response.json());
|
|
220
|
+
(0, chai_1.expect)(data.results).to.have.length(2);
|
|
221
|
+
(0, chai_1.expect)(data.total).to.equal(defaultProductDataset.length);
|
|
222
|
+
(0, chai_1.expect)(data.limit).to.equal(2);
|
|
223
|
+
(0, chai_1.expect)(data.offset).to.equal(0);
|
|
224
|
+
(0, chai_1.expect)(data.results[0]._id).to.not.equal(undefined);
|
|
225
|
+
(0, chai_1.expect)(data.results[1]._id).to.not.equal(undefined);
|
|
226
|
+
}
|
|
227
|
+
async function listFrom2ndPage() {
|
|
228
|
+
await _createDataController((0, utils_1.getFunctionName)(), { list: interface_data_api_1.DefaultRoutes.List }, defaultProductDataset);
|
|
229
|
+
const response = await (0, utils_1.listRequest)((0, utils_1.getFunctionName)(), { offset: "2" });
|
|
230
|
+
(0, chai_1.expect)(response.status).to.equal(200);
|
|
231
|
+
const data = (await response.json());
|
|
232
|
+
(0, chai_1.expect)(data.results).to.have.length(1);
|
|
233
|
+
(0, chai_1.expect)(data.total).to.equal(defaultProductDataset.length);
|
|
234
|
+
(0, chai_1.expect)(data.offset).to.equal(2);
|
|
235
|
+
(0, chai_1.expect)(data.results[0]._id).to.not.equal(undefined);
|
|
236
|
+
}
|
|
237
|
+
async function listOnly2FirstPages() {
|
|
238
|
+
await _createDataController((0, utils_1.getFunctionName)(), { list: interface_data_api_1.DefaultRoutes.List }, defaultProductDataset);
|
|
239
|
+
const response = await (0, utils_1.listRequest)((0, utils_1.getFunctionName)(), { maxPage: "2" });
|
|
240
|
+
(0, chai_1.expect)(response.status).to.equal(200);
|
|
241
|
+
const data = (await response.json());
|
|
242
|
+
(0, chai_1.expect)(data.results).to.have.length(defaultProductDataset.length);
|
|
243
|
+
(0, chai_1.expect)(data.total).to.equal(defaultProductDataset.length);
|
|
244
|
+
(0, chai_1.expect)(data.results[0]._id).to.not.equal(undefined);
|
|
245
|
+
}
|
|
246
|
+
async function listOnly2ndPage() {
|
|
247
|
+
await _createDataController((0, utils_1.getFunctionName)(), { list: interface_data_api_1.DefaultRoutes.List }, defaultProductDataset);
|
|
248
|
+
const response = await (0, utils_1.listRequest)((0, utils_1.getFunctionName)(), {
|
|
249
|
+
offset: "2",
|
|
250
|
+
limit: "1",
|
|
251
|
+
});
|
|
252
|
+
(0, chai_1.expect)(response.status).to.equal(200);
|
|
253
|
+
const data = (await response.json());
|
|
254
|
+
(0, chai_1.expect)(data.results).to.have.length(1);
|
|
255
|
+
(0, chai_1.expect)(data.total).to.equal(defaultProductDataset.length);
|
|
256
|
+
(0, chai_1.expect)(data.offset).to.equal(2);
|
|
257
|
+
(0, chai_1.expect)(data.limit).to.equal(1);
|
|
258
|
+
(0, chai_1.expect)(data.results[0]._id).to.not.equal(undefined);
|
|
259
|
+
}
|
|
260
|
+
function _getSortedField(dataset, field, direction) {
|
|
261
|
+
const mappedField = dataset.map((product) => product[field]);
|
|
262
|
+
const filteredField = mappedField.filter((v) => v !== undefined && v !== null);
|
|
263
|
+
filteredField.sort((a, b) => {
|
|
264
|
+
if (a instanceof Date && b instanceof Date) {
|
|
265
|
+
return direction === "asc"
|
|
266
|
+
? a.getTime() - b.getTime()
|
|
267
|
+
: b.getTime() - a.getTime();
|
|
268
|
+
}
|
|
269
|
+
if (typeof a === "number" && typeof b === "number") {
|
|
270
|
+
return direction === "asc" ? a - b : b - a;
|
|
271
|
+
}
|
|
272
|
+
if (typeof a === "string" && typeof b === "string") {
|
|
273
|
+
return direction === "asc" ? a.localeCompare(b) : b.localeCompare(a);
|
|
274
|
+
}
|
|
275
|
+
return 0;
|
|
276
|
+
});
|
|
277
|
+
return filteredField;
|
|
278
|
+
}
|
|
279
|
+
async function sortByNameAscending() {
|
|
280
|
+
await _createDataController((0, utils_1.getFunctionName)(), { list: interface_data_api_1.DefaultRoutes.List }, defaultProductDataset);
|
|
281
|
+
const response = await (0, utils_1.listRequest)((0, utils_1.getFunctionName)(), {
|
|
282
|
+
sortKey: "name",
|
|
283
|
+
sortDirection: "asc",
|
|
284
|
+
});
|
|
285
|
+
(0, chai_1.expect)(response.status).to.equal(200);
|
|
286
|
+
const data = (await response.json());
|
|
287
|
+
(0, chai_1.expect)(data.results).to.have.length(defaultProductDataset.length);
|
|
288
|
+
const sortedNames = data.results.map((product) => product.name);
|
|
289
|
+
const expectedNames = _getSortedField(defaultProductDataset, "name", "asc");
|
|
290
|
+
(0, chai_1.expect)(sortedNames).to.deep.equal(expectedNames);
|
|
291
|
+
}
|
|
292
|
+
async function sortByNameDescending() {
|
|
293
|
+
await _createDataController((0, utils_1.getFunctionName)(), { list: interface_data_api_1.DefaultRoutes.List }, defaultProductDataset);
|
|
294
|
+
const response = await (0, utils_1.listRequest)((0, utils_1.getFunctionName)(), {
|
|
295
|
+
sortKey: "name",
|
|
296
|
+
sortDirection: "desc",
|
|
297
|
+
});
|
|
298
|
+
(0, chai_1.expect)(response.status).to.equal(200);
|
|
299
|
+
const data = (await response.json());
|
|
300
|
+
(0, chai_1.expect)(data.results).to.have.length(defaultProductDataset.length);
|
|
301
|
+
const sortedNames = data.results.map((product) => product.name);
|
|
302
|
+
const expectedNames = _getSortedField(defaultProductDataset, "name", "desc");
|
|
303
|
+
(0, chai_1.expect)(sortedNames).to.deep.equal(expectedNames);
|
|
304
|
+
}
|
|
305
|
+
async function sortByPriceAscending() {
|
|
306
|
+
await _createDataController((0, utils_1.getFunctionName)(), { list: interface_data_api_1.DefaultRoutes.List }, defaultProductDataset);
|
|
307
|
+
const response = await (0, utils_1.listRequest)((0, utils_1.getFunctionName)(), {
|
|
308
|
+
sortKey: "price",
|
|
309
|
+
sortDirection: "asc",
|
|
310
|
+
});
|
|
311
|
+
(0, chai_1.expect)(response.status).to.equal(200);
|
|
312
|
+
const data = (await response.json());
|
|
313
|
+
(0, chai_1.expect)(data.results).to.have.length(defaultProductDataset.length);
|
|
314
|
+
const sortedPrices = data.results.map((product) => product.price);
|
|
315
|
+
const expectedPrices = _getSortedField(defaultProductDataset, "price", "asc");
|
|
316
|
+
(0, chai_1.expect)(sortedPrices).to.deep.equal(expectedPrices);
|
|
317
|
+
}
|
|
318
|
+
async function sortByPriceDescending() {
|
|
319
|
+
await _createDataController((0, utils_1.getFunctionName)(), { list: interface_data_api_1.DefaultRoutes.List }, defaultProductDataset);
|
|
320
|
+
const response = await (0, utils_1.listRequest)((0, utils_1.getFunctionName)(), {
|
|
321
|
+
sortKey: "price",
|
|
322
|
+
sortDirection: "desc",
|
|
323
|
+
});
|
|
324
|
+
(0, chai_1.expect)(response.status).to.equal(200);
|
|
325
|
+
const data = (await response.json());
|
|
326
|
+
(0, chai_1.expect)(data.results).to.have.length(defaultProductDataset.length);
|
|
327
|
+
const sortedPrices = data.results.map((product) => product.price);
|
|
328
|
+
const expectedPrices = _getSortedField(defaultProductDataset, "price", "desc");
|
|
329
|
+
(0, chai_1.expect)(sortedPrices).to.deep.equal(expectedPrices);
|
|
330
|
+
}
|
|
331
|
+
async function sortByAddedAtAscending() {
|
|
332
|
+
await _createDataController((0, utils_1.getFunctionName)(), { list: interface_data_api_1.DefaultRoutes.List }, defaultProductDataset);
|
|
333
|
+
const response = await (0, utils_1.listRequest)((0, utils_1.getFunctionName)(), {
|
|
334
|
+
sortKey: "addedAt",
|
|
335
|
+
sortDirection: "asc",
|
|
336
|
+
});
|
|
337
|
+
(0, chai_1.expect)(response.status).to.equal(200);
|
|
338
|
+
const data = (await response.json());
|
|
339
|
+
(0, chai_1.expect)(data.results).to.have.length(defaultProductDataset.length);
|
|
340
|
+
const sortedDates = data.results.map((product) => new Date(product.addedAt).getTime());
|
|
341
|
+
const expectedDates = _getSortedField(defaultProductDataset, "addedAt", "asc")
|
|
342
|
+
.filter((value) => value instanceof Date)
|
|
343
|
+
.map((date) => date.getTime());
|
|
344
|
+
(0, chai_1.expect)(sortedDates).to.deep.equal(expectedDates);
|
|
345
|
+
}
|
|
346
|
+
async function sortByAddedAtDescending() {
|
|
347
|
+
await _createDataController((0, utils_1.getFunctionName)(), { list: interface_data_api_1.DefaultRoutes.List }, defaultProductDataset);
|
|
348
|
+
const response = await (0, utils_1.listRequest)((0, utils_1.getFunctionName)(), {
|
|
349
|
+
sortKey: "addedAt",
|
|
350
|
+
sortDirection: "desc",
|
|
351
|
+
});
|
|
352
|
+
(0, chai_1.expect)(response.status).to.equal(200);
|
|
353
|
+
const data = (await response.json());
|
|
354
|
+
(0, chai_1.expect)(data.results).to.have.length(defaultProductDataset.length);
|
|
355
|
+
const sortedDates = data.results.map((product) => new Date(product.addedAt).getTime());
|
|
356
|
+
const expectedDates = _getSortedField(defaultProductDataset, "addedAt", "desc")
|
|
357
|
+
.filter((value) => value instanceof Date)
|
|
358
|
+
.map((date) => date.getTime());
|
|
359
|
+
(0, chai_1.expect)(sortedDates).to.deep.equal(expectedDates);
|
|
360
|
+
}
|
|
361
|
+
//# sourceMappingURL=listable.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"listable.test.js","sourceRoot":"","sources":["../../../src/tests/components/listable.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
3
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
4
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
5
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
6
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
7
|
+
};
|
|
8
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
9
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
10
|
+
};
|
|
11
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
16
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
17
|
+
const interface_data_api_1 = require("@antelopejs/interface-data-api");
|
|
18
|
+
const metadata_1 = require("@antelopejs/interface-data-api/metadata");
|
|
19
|
+
const interface_database_1 = require("@antelopejs/interface-database");
|
|
20
|
+
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
21
|
+
const chai_1 = require("chai");
|
|
22
|
+
const utils_1 = require("../utils");
|
|
23
|
+
const currentTestName = node_path_1.default
|
|
24
|
+
.basename(__filename)
|
|
25
|
+
.replace(/\.test\.(ts|js)$/, "");
|
|
26
|
+
const orderTableName = `orders-${currentTestName}`;
|
|
27
|
+
const schemaName = "default";
|
|
28
|
+
let Order = class Order extends interface_database_decorators_1.Table {
|
|
29
|
+
};
|
|
30
|
+
__decorate([
|
|
31
|
+
(0, interface_database_decorators_1.Index)(),
|
|
32
|
+
__metadata("design:type", String)
|
|
33
|
+
], Order.prototype, "internalReference", void 0);
|
|
34
|
+
Order = __decorate([
|
|
35
|
+
(0, interface_database_decorators_1.RegisterTable)(orderTableName, schemaName)
|
|
36
|
+
], Order);
|
|
37
|
+
class OrderModel extends (0, interface_database_decorators_1.BasicDataModel)(Order, orderTableName) {
|
|
38
|
+
}
|
|
39
|
+
const validOrderDataset = {
|
|
40
|
+
default: {
|
|
41
|
+
customerName: "Bob",
|
|
42
|
+
customerEmail: "bob@example.com",
|
|
43
|
+
totalAmount: 99.99,
|
|
44
|
+
status: "pending",
|
|
45
|
+
notes: "Customer requested express shipping",
|
|
46
|
+
internalReference: "INT-REF-001",
|
|
47
|
+
},
|
|
48
|
+
alternative: {
|
|
49
|
+
customerName: "Alice",
|
|
50
|
+
customerEmail: "alice@example.com",
|
|
51
|
+
totalAmount: 149.99,
|
|
52
|
+
status: "processing",
|
|
53
|
+
notes: "Customer requested express shipping",
|
|
54
|
+
internalReference: "INT-REF-002",
|
|
55
|
+
},
|
|
56
|
+
};
|
|
57
|
+
describe("Field Mandatory", () => {
|
|
58
|
+
it("new row with all mandatory fields", async () => await newWithAllMandatoryFields());
|
|
59
|
+
it("new row with missing mandatory fields", async () => await newWithMissingMandatoryFields());
|
|
60
|
+
it("edit row with all mandatory fields", async () => await editWithAllMandatoryFields());
|
|
61
|
+
it("edit row with missing mandatory fields", async () => await editWithMissingMandatoryFields());
|
|
62
|
+
it("skip mandatory validation when noMandatory is true", async () => await skipMandatoryValidationWhenNoMandatory());
|
|
63
|
+
after(async () => { });
|
|
64
|
+
});
|
|
65
|
+
async function _dropOrderTable() {
|
|
66
|
+
const schema = interface_database_1.Schema.get(schemaName);
|
|
67
|
+
if (schema) {
|
|
68
|
+
await schema.instance().table(orderTableName).delete();
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
async function _createDataController(testName, route, order) {
|
|
72
|
+
let _MandatoryTestAPI = class _MandatoryTestAPI extends (0, interface_data_api_1.DataController)(Order, route, (0, interface_api_1.Controller)(`/${testName}`)) {
|
|
73
|
+
};
|
|
74
|
+
__decorate([
|
|
75
|
+
(0, metadata_1.ModelReference)(),
|
|
76
|
+
(0, interface_database_decorators_1.Model)(OrderModel),
|
|
77
|
+
__metadata("design:type", OrderModel)
|
|
78
|
+
], _MandatoryTestAPI.prototype, "orderModel", void 0);
|
|
79
|
+
__decorate([
|
|
80
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
|
|
81
|
+
(0, metadata_1.Mandatory)("new", "edit"),
|
|
82
|
+
__metadata("design:type", String)
|
|
83
|
+
], _MandatoryTestAPI.prototype, "customerName", void 0);
|
|
84
|
+
__decorate([
|
|
85
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
|
|
86
|
+
(0, metadata_1.Mandatory)("new"),
|
|
87
|
+
__metadata("design:type", String)
|
|
88
|
+
], _MandatoryTestAPI.prototype, "customerEmail", void 0);
|
|
89
|
+
__decorate([
|
|
90
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
|
|
91
|
+
(0, metadata_1.Mandatory)("new", "edit"),
|
|
92
|
+
__metadata("design:type", Number)
|
|
93
|
+
], _MandatoryTestAPI.prototype, "totalAmount", void 0);
|
|
94
|
+
__decorate([
|
|
95
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
|
|
96
|
+
(0, metadata_1.Mandatory)("edit"),
|
|
97
|
+
__metadata("design:type", String)
|
|
98
|
+
], _MandatoryTestAPI.prototype, "status", void 0);
|
|
99
|
+
__decorate([
|
|
100
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
|
|
101
|
+
__metadata("design:type", String)
|
|
102
|
+
], _MandatoryTestAPI.prototype, "notes", void 0);
|
|
103
|
+
__decorate([
|
|
104
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadWrite),
|
|
105
|
+
__metadata("design:type", String)
|
|
106
|
+
], _MandatoryTestAPI.prototype, "internalReference", void 0);
|
|
107
|
+
_MandatoryTestAPI = __decorate([
|
|
108
|
+
(0, interface_data_api_1.RegisterDataController)()
|
|
109
|
+
], _MandatoryTestAPI);
|
|
110
|
+
await (0, interface_database_decorators_1.CreateDatabaseSchemaInstance)(schemaName);
|
|
111
|
+
await _dropOrderTable();
|
|
112
|
+
const orderModel = new OrderModel((0, utils_1.getSchemaInstance)(schemaName));
|
|
113
|
+
if (order) {
|
|
114
|
+
const insertResult = await orderModel.insert(order);
|
|
115
|
+
return { id: insertResult[0], orderModel };
|
|
116
|
+
}
|
|
117
|
+
return { orderModel };
|
|
118
|
+
}
|
|
119
|
+
async function newWithAllMandatoryFields() {
|
|
120
|
+
const { orderModel } = await _createDataController((0, utils_1.getFunctionName)(), { new: interface_data_api_1.DefaultRoutes.New }, validOrderDataset.alternative);
|
|
121
|
+
const response = await (0, utils_1.newRequest)((0, utils_1.getFunctionName)(), {
|
|
122
|
+
customerName: validOrderDataset.default.customerName,
|
|
123
|
+
customerEmail: validOrderDataset.default.customerEmail,
|
|
124
|
+
totalAmount: validOrderDataset.default.totalAmount,
|
|
125
|
+
});
|
|
126
|
+
(0, chai_1.expect)(response.status).to.equal(200);
|
|
127
|
+
const result = (await response.json());
|
|
128
|
+
(0, chai_1.expect)(result).to.be.an("array");
|
|
129
|
+
(0, chai_1.expect)(result).to.have.length(1);
|
|
130
|
+
(0, chai_1.expect)(result[0]).to.be.a("string");
|
|
131
|
+
const order = await orderModel.get(result[0]);
|
|
132
|
+
(0, chai_1.expect)(order).to.not.equal(undefined);
|
|
133
|
+
if (order) {
|
|
134
|
+
await (0, utils_1.validateObject)(order, validOrderDataset.default, [
|
|
135
|
+
"customerName",
|
|
136
|
+
"customerEmail",
|
|
137
|
+
"totalAmount",
|
|
138
|
+
]);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
async function newWithMissingMandatoryFields() {
|
|
142
|
+
await _createDataController((0, utils_1.getFunctionName)(), { new: interface_data_api_1.DefaultRoutes.New });
|
|
143
|
+
const response = await (0, utils_1.newRequest)((0, utils_1.getFunctionName)(), {
|
|
144
|
+
customerName: validOrderDataset.default.customerName,
|
|
145
|
+
totalAmount: validOrderDataset.default.totalAmount,
|
|
146
|
+
});
|
|
147
|
+
(0, chai_1.expect)(response.status).to.equal(400);
|
|
148
|
+
const result = await response.text();
|
|
149
|
+
(0, chai_1.expect)(result).to.include("Missing mandatory fields: customerEmail");
|
|
150
|
+
}
|
|
151
|
+
async function editWithAllMandatoryFields() {
|
|
152
|
+
const { id, orderModel } = await _createDataController((0, utils_1.getFunctionName)(), { edit: interface_data_api_1.DefaultRoutes.Edit }, validOrderDataset.default);
|
|
153
|
+
if (!id)
|
|
154
|
+
throw new Error("Expected id from _createDataController");
|
|
155
|
+
const response = await (0, utils_1.editRequest)((0, utils_1.getFunctionName)(), {
|
|
156
|
+
customerName: validOrderDataset.alternative.customerName,
|
|
157
|
+
totalAmount: validOrderDataset.alternative.totalAmount,
|
|
158
|
+
status: validOrderDataset.alternative.status,
|
|
159
|
+
}, { id });
|
|
160
|
+
(0, chai_1.expect)(response.status).to.equal(200);
|
|
161
|
+
const order = await orderModel.get(id);
|
|
162
|
+
(0, chai_1.expect)(order).to.be.an("object");
|
|
163
|
+
(0, chai_1.expect)(order).to.have.property("customerName", validOrderDataset.alternative.customerName);
|
|
164
|
+
(0, chai_1.expect)(order).to.have.property("totalAmount", validOrderDataset.alternative.totalAmount);
|
|
165
|
+
(0, chai_1.expect)(order).to.have.property("status", validOrderDataset.alternative.status);
|
|
166
|
+
}
|
|
167
|
+
async function editWithMissingMandatoryFields() {
|
|
168
|
+
const { id } = await _createDataController((0, utils_1.getFunctionName)(), { edit: interface_data_api_1.DefaultRoutes.Edit }, validOrderDataset.default);
|
|
169
|
+
if (!id)
|
|
170
|
+
throw new Error("Expected id from _createDataController");
|
|
171
|
+
const response = await (0, utils_1.editRequest)((0, utils_1.getFunctionName)(), {
|
|
172
|
+
customerName: validOrderDataset.alternative.customerName,
|
|
173
|
+
totalAmount: validOrderDataset.alternative.totalAmount,
|
|
174
|
+
}, { id });
|
|
175
|
+
(0, chai_1.expect)(response.status).to.equal(400);
|
|
176
|
+
const text = await response.text();
|
|
177
|
+
(0, chai_1.expect)(text).to.include("Missing mandatory fields: status");
|
|
178
|
+
}
|
|
179
|
+
async function skipMandatoryValidationWhenNoMandatory() {
|
|
180
|
+
const { id, orderModel } = await _createDataController((0, utils_1.getFunctionName)(), {
|
|
181
|
+
editNoMandatory: interface_data_api_1.DefaultRoutes.WithOptions(interface_data_api_1.DefaultRoutes.Edit, {
|
|
182
|
+
noMandatory: "true",
|
|
183
|
+
}),
|
|
184
|
+
}, validOrderDataset.default);
|
|
185
|
+
if (!id)
|
|
186
|
+
throw new Error("Expected id from _createDataController");
|
|
187
|
+
const response = await (0, utils_1.request)((0, utils_1.getFunctionName)(), "editNoMandatory", "PUT", { notes: "Updated notes" }, { id });
|
|
188
|
+
(0, chai_1.expect)(response.status).to.equal(200);
|
|
189
|
+
const order = await orderModel.get(id);
|
|
190
|
+
(0, chai_1.expect)(order).to.be.an("object");
|
|
191
|
+
(0, chai_1.expect)(order).to.have.property("notes", "Updated notes");
|
|
192
|
+
}
|
|
193
|
+
//# sourceMappingURL=mandatory.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mandatory.test.js","sourceRoot":"","sources":["../../../src/tests/components/mandatory.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|