@antelopejs/interface-data-api 0.3.0 → 0.5.0
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/README.md +1 -1
- package/dist/components.d.ts +32 -9
- package/dist/components.js +113 -628
- package/dist/components.js.map +1 -1
- package/dist/index.d.ts +41 -36
- package/dist/index.js +94 -92
- package/dist/index.js.map +1 -1
- package/dist/internal/computed.d.ts +6 -0
- package/dist/internal/computed.js +43 -0
- package/dist/internal/computed.js.map +1 -0
- package/dist/internal/controller-types.d.ts +19 -0
- package/dist/internal/controller-types.js +4 -0
- package/dist/internal/controller-types.js.map +1 -0
- package/dist/internal/default-filter.d.ts +4 -0
- package/dist/internal/default-filter.js +19 -0
- package/dist/internal/default-filter.js.map +1 -0
- package/dist/internal/deferred-joined-stream.d.ts +11 -0
- package/dist/internal/deferred-joined-stream.js +112 -0
- package/dist/internal/deferred-joined-stream.js.map +1 -0
- package/dist/internal/field-types.d.ts +183 -0
- package/dist/internal/field-types.js +4 -0
- package/dist/internal/field-types.js.map +1 -0
- package/dist/internal/filters.d.ts +4 -0
- package/dist/internal/filters.js +15 -0
- package/dist/internal/filters.js.map +1 -0
- package/dist/internal/foreign.d.ts +6 -0
- package/dist/internal/foreign.js +116 -0
- package/dist/internal/foreign.js.map +1 -0
- package/dist/internal/guards.d.ts +20 -0
- package/dist/internal/guards.js +74 -0
- package/dist/internal/guards.js.map +1 -0
- package/dist/internal/joined.d.ts +28 -0
- package/dist/internal/joined.js +127 -0
- package/dist/internal/joined.js.map +1 -0
- package/dist/internal/list.d.ts +16 -0
- package/dist/internal/list.js +178 -0
- package/dist/internal/list.js.map +1 -0
- package/dist/internal/meta-records.d.ts +17 -0
- package/dist/internal/meta-records.js +73 -0
- package/dist/internal/meta-records.js.map +1 -0
- package/dist/internal/properties.d.ts +4 -0
- package/dist/internal/properties.js +43 -0
- package/dist/internal/properties.js.map +1 -0
- package/dist/internal/table-reference.d.ts +11 -0
- package/dist/internal/table-reference.js +46 -0
- package/dist/internal/table-reference.js.map +1 -0
- package/dist/internal/tables.d.ts +18 -0
- package/dist/internal/tables.js +37 -0
- package/dist/internal/tables.js.map +1 -0
- package/dist/internal/validation.d.ts +11 -0
- package/dist/internal/validation.js +88 -0
- package/dist/internal/validation.js.map +1 -0
- package/dist/metadata.d.ts +27 -228
- package/dist/metadata.js +61 -188
- package/dist/metadata.js.map +1 -1
- package/dist/tests/components/access_control.test.js +20 -20
- package/dist/tests/components/access_control.test.js.map +1 -1
- package/dist/tests/components/computed.test.js +28 -30
- package/dist/tests/components/computed.test.js.map +1 -1
- package/dist/tests/components/cross_instance.test.js +8 -6
- package/dist/tests/components/cross_instance.test.js.map +1 -1
- package/dist/tests/components/deferred_joined.test.js +56 -53
- package/dist/tests/components/deferred_joined.test.js.map +1 -1
- package/dist/tests/components/filter_options.test.js +8 -7
- package/dist/tests/components/filter_options.test.js.map +1 -1
- package/dist/tests/components/foreign_computed.test.js +14 -16
- package/dist/tests/components/foreign_computed.test.js.map +1 -1
- package/dist/tests/components/foreign_joined.test.js +19 -27
- package/dist/tests/components/foreign_joined.test.js.map +1 -1
- package/dist/tests/components/joined.test.js +41 -45
- package/dist/tests/components/joined.test.js.map +1 -1
- package/dist/tests/components/listable.test.js +59 -58
- package/dist/tests/components/listable.test.js.map +1 -1
- package/dist/tests/components/localized_sort.test.d.ts +1 -0
- package/dist/tests/components/localized_sort.test.js +131 -0
- package/dist/tests/components/localized_sort.test.js.map +1 -0
- package/dist/tests/components/mandatory.test.js +33 -28
- package/dist/tests/components/mandatory.test.js.map +1 -1
- package/dist/tests/components/modifier_key.test.js +19 -18
- package/dist/tests/components/modifier_key.test.js.map +1 -1
- package/dist/tests/components/parse_body.test.d.ts +1 -0
- package/dist/tests/components/parse_body.test.js +75 -0
- package/dist/tests/components/parse_body.test.js.map +1 -0
- package/dist/tests/components/parsed_value.test.js +27 -21
- package/dist/tests/components/parsed_value.test.js.map +1 -1
- package/dist/tests/components/partial_edit.test.js +33 -32
- package/dist/tests/components/partial_edit.test.js.map +1 -1
- package/dist/tests/components/per_action_access.test.js +12 -12
- package/dist/tests/components/per_action_access.test.js.map +1 -1
- package/dist/tests/components/validator.test.js +45 -37
- package/dist/tests/components/validator.test.js.map +1 -1
- package/dist/tests/helpers/other-instance.d.ts +11 -1
- package/dist/tests/helpers/other-instance.js +27 -5
- package/dist/tests/helpers/other-instance.js.map +1 -1
- package/dist/tests/index/get_guard.test.js +6 -6
- package/dist/tests/index/get_guard.test.js.map +1 -1
- package/dist/tests/index/inheritance.test.js +10 -9
- package/dist/tests/index/inheritance.test.js.map +1 -1
- package/dist/tests/index/routes.test.js +40 -44
- package/dist/tests/index/routes.test.js.map +1 -1
- package/dist/tests/integration.test.d.ts +1 -1
- package/dist/tests/integration.test.js +53 -729
- package/dist/tests/integration.test.js.map +1 -1
- package/dist/tests/internal/http.d.ts +23 -0
- package/dist/tests/internal/http.js +35 -0
- package/dist/tests/internal/http.js.map +1 -0
- package/dist/tests/internal/shop-api.d.ts +1 -0
- package/dist/tests/internal/shop-api.js +331 -0
- package/dist/tests/internal/shop-api.js.map +1 -0
- package/dist/tests/internal/shop-schema.d.ts +154 -0
- package/dist/tests/internal/shop-schema.js +387 -0
- package/dist/tests/internal/shop-schema.js.map +1 -0
- package/dist/tests/utils.d.ts +5 -5
- package/dist/tests/utils.js +1 -3
- package/dist/tests/utils.js.map +1 -1
- package/dist/tests/utils.test.js +10 -11
- package/dist/tests/utils.test.js.map +1 -1
- package/docs/3.routes.md +8 -3
- package/docs/5.validators.md +16 -7
- package/docs/6.listable.md +4 -0
- package/docs/8.filters.md +7 -3
- package/package.json +17 -6
- package/skills/data-api-interface/SKILL.md +4 -0
- package/skills/data-api-interface/cases.json +99 -0
|
@@ -16,9 +16,11 @@ const node_path_1 = __importDefault(require("node:path"));
|
|
|
16
16
|
const chai_1 = require("chai");
|
|
17
17
|
const interface_api_1 = require("@antelopejs/interface-api");
|
|
18
18
|
const interface_database_1 = require("@antelopejs/interface-database");
|
|
19
|
-
const
|
|
20
|
-
const
|
|
19
|
+
const index_1 = require("../../index");
|
|
20
|
+
const components_1 = require("../../components");
|
|
21
|
+
const metadata_1 = require("../../metadata");
|
|
21
22
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
23
|
+
const http_1 = require("../internal/http");
|
|
22
24
|
const utils_1 = require("../utils");
|
|
23
25
|
const currentTestName = node_path_1.default
|
|
24
26
|
.basename(__filename)
|
|
@@ -76,13 +78,12 @@ const validOrderDataset = {
|
|
|
76
78
|
},
|
|
77
79
|
};
|
|
78
80
|
describe("Field Mandatory", () => {
|
|
79
|
-
it("new row with all mandatory fields", async () => await
|
|
80
|
-
it("new row with missing mandatory fields", async () => await
|
|
81
|
-
it("edit row with all mandatory fields", async () => await
|
|
82
|
-
it("edit row without a mandatory field keeps its value", async () => await
|
|
83
|
-
it("edit row clearing a mandatory field", async () => await
|
|
84
|
-
it("skip mandatory validation when noMandatory is true", async () => await
|
|
85
|
-
after(async () => { });
|
|
81
|
+
it("new row with all mandatory fields", async () => await expectNewWithAllMandatoryFields());
|
|
82
|
+
it("new row with missing mandatory fields", async () => await expectNewWithMissingMandatoryFields());
|
|
83
|
+
it("edit row with all mandatory fields", async () => await expectEditWithAllMandatoryFields());
|
|
84
|
+
it("edit row without a mandatory field keeps its value", async () => await expectEditWithoutMandatoryFieldKeepsValue());
|
|
85
|
+
it("edit row clearing a mandatory field", async () => await expectEditClearingMandatoryField());
|
|
86
|
+
it("skip mandatory validation when noMandatory is true", async () => await expectSkipMandatoryValidationWhenNoMandatory());
|
|
86
87
|
});
|
|
87
88
|
async function _dropOrderTable() {
|
|
88
89
|
const schema = interface_database_1.Schema.get(schemaName);
|
|
@@ -91,7 +92,7 @@ async function _dropOrderTable() {
|
|
|
91
92
|
}
|
|
92
93
|
}
|
|
93
94
|
async function _createDataController(testName, route, order) {
|
|
94
|
-
let _MandatoryTestAPI = class _MandatoryTestAPI extends (0,
|
|
95
|
+
let _MandatoryTestAPI = class _MandatoryTestAPI extends (0, index_1.DataController)(Order, route, (0, interface_api_1.Controller)(`/${testName}`)) {
|
|
95
96
|
};
|
|
96
97
|
__decorate([
|
|
97
98
|
(0, metadata_1.ModelReference)(),
|
|
@@ -127,7 +128,7 @@ async function _createDataController(testName, route, order) {
|
|
|
127
128
|
__metadata("design:type", String)
|
|
128
129
|
], _MandatoryTestAPI.prototype, "internalReference", void 0);
|
|
129
130
|
_MandatoryTestAPI = __decorate([
|
|
130
|
-
(0,
|
|
131
|
+
(0, index_1.RegisterDataController)()
|
|
131
132
|
], _MandatoryTestAPI);
|
|
132
133
|
await (0, interface_database_decorators_1.RegisterSchema)(schemaName);
|
|
133
134
|
await _dropOrderTable();
|
|
@@ -138,15 +139,15 @@ async function _createDataController(testName, route, order) {
|
|
|
138
139
|
}
|
|
139
140
|
return { orderModel };
|
|
140
141
|
}
|
|
141
|
-
async function
|
|
142
|
-
const { orderModel } = await _createDataController((0, utils_1.getFunctionName)(), { new:
|
|
142
|
+
async function expectNewWithAllMandatoryFields() {
|
|
143
|
+
const { orderModel } = await _createDataController((0, utils_1.getFunctionName)(), { new: index_1.DefaultRoutes.New }, validOrderDataset.alternative);
|
|
143
144
|
const response = await (0, utils_1.newRequest)((0, utils_1.getFunctionName)(), {
|
|
144
145
|
customerName: validOrderDataset.default.customerName,
|
|
145
146
|
customerEmail: validOrderDataset.default.customerEmail,
|
|
146
147
|
totalAmount: validOrderDataset.default.totalAmount,
|
|
147
148
|
});
|
|
148
149
|
(0, chai_1.expect)(response.status).to.equal(200);
|
|
149
|
-
const created =
|
|
150
|
+
const created = await (0, http_1.readJson)(response);
|
|
150
151
|
(0, chai_1.expect)(created._id).to.be.a("string");
|
|
151
152
|
const order = await orderModel.get(created._id);
|
|
152
153
|
(0, chai_1.expect)(order).to.not.equal(undefined);
|
|
@@ -158,18 +159,20 @@ async function newWithAllMandatoryFields() {
|
|
|
158
159
|
]);
|
|
159
160
|
}
|
|
160
161
|
}
|
|
161
|
-
async function
|
|
162
|
-
await _createDataController((0, utils_1.getFunctionName)(), { new:
|
|
162
|
+
async function expectNewWithMissingMandatoryFields() {
|
|
163
|
+
await _createDataController((0, utils_1.getFunctionName)(), { new: index_1.DefaultRoutes.New });
|
|
163
164
|
const response = await (0, utils_1.newRequest)((0, utils_1.getFunctionName)(), {
|
|
164
165
|
customerName: validOrderDataset.default.customerName,
|
|
165
166
|
totalAmount: validOrderDataset.default.totalAmount,
|
|
166
167
|
});
|
|
167
168
|
(0, chai_1.expect)(response.status).to.equal(400);
|
|
168
|
-
|
|
169
|
-
|
|
169
|
+
(0, chai_1.expect)(await response.json()).to.deep.equal({
|
|
170
|
+
code: components_1.Validation.MISSING_MANDATORY_FIELDS,
|
|
171
|
+
fields: ["customerEmail"],
|
|
172
|
+
});
|
|
170
173
|
}
|
|
171
|
-
async function
|
|
172
|
-
const { id, orderModel } = await _createDataController((0, utils_1.getFunctionName)(), { edit:
|
|
174
|
+
async function expectEditWithAllMandatoryFields() {
|
|
175
|
+
const { id, orderModel } = await _createDataController((0, utils_1.getFunctionName)(), { edit: index_1.DefaultRoutes.Edit }, validOrderDataset.default);
|
|
173
176
|
if (!id)
|
|
174
177
|
throw new Error("Expected id from _createDataController");
|
|
175
178
|
const response = await (0, utils_1.editRequest)((0, utils_1.getFunctionName)(), {
|
|
@@ -191,8 +194,8 @@ async function editWithAllMandatoryFields() {
|
|
|
191
194
|
]);
|
|
192
195
|
}
|
|
193
196
|
}
|
|
194
|
-
async function
|
|
195
|
-
const { id, orderModel } = await _createDataController((0, utils_1.getFunctionName)(), { edit:
|
|
197
|
+
async function expectEditWithoutMandatoryFieldKeepsValue() {
|
|
198
|
+
const { id, orderModel } = await _createDataController((0, utils_1.getFunctionName)(), { edit: index_1.DefaultRoutes.Edit }, validOrderDataset.default);
|
|
196
199
|
if (!id)
|
|
197
200
|
throw new Error("Expected id from _createDataController");
|
|
198
201
|
const response = await (0, utils_1.editRequest)((0, utils_1.getFunctionName)(), {
|
|
@@ -203,22 +206,24 @@ async function editWithoutMandatoryFieldKeepsValue() {
|
|
|
203
206
|
const order = await orderModel.get(id);
|
|
204
207
|
(0, chai_1.expect)(order).to.have.property("status", validOrderDataset.default.status);
|
|
205
208
|
}
|
|
206
|
-
async function
|
|
207
|
-
const { id, orderModel } = await _createDataController((0, utils_1.getFunctionName)(), { edit:
|
|
209
|
+
async function expectEditClearingMandatoryField() {
|
|
210
|
+
const { id, orderModel } = await _createDataController((0, utils_1.getFunctionName)(), { edit: index_1.DefaultRoutes.Edit }, validOrderDataset.default);
|
|
208
211
|
if (!id)
|
|
209
212
|
throw new Error("Expected id from _createDataController");
|
|
210
213
|
for (const clearedValue of [null, "", []]) {
|
|
211
214
|
const response = await (0, utils_1.editRequest)((0, utils_1.getFunctionName)(), { status: clearedValue }, { id });
|
|
212
215
|
(0, chai_1.expect)(response.status).to.equal(400);
|
|
213
|
-
|
|
214
|
-
|
|
216
|
+
(0, chai_1.expect)(await response.json()).to.deep.equal({
|
|
217
|
+
code: components_1.Validation.MISSING_MANDATORY_FIELDS,
|
|
218
|
+
fields: ["status"],
|
|
219
|
+
});
|
|
215
220
|
}
|
|
216
221
|
const order = await orderModel.get(id);
|
|
217
222
|
(0, chai_1.expect)(order).to.have.property("status", validOrderDataset.default.status);
|
|
218
223
|
}
|
|
219
|
-
async function
|
|
224
|
+
async function expectSkipMandatoryValidationWhenNoMandatory() {
|
|
220
225
|
const { id, orderModel } = await _createDataController((0, utils_1.getFunctionName)(), {
|
|
221
|
-
editNoMandatory:
|
|
226
|
+
editNoMandatory: index_1.DefaultRoutes.WithOptions(index_1.DefaultRoutes.Edit, {
|
|
222
227
|
noMandatory: "true",
|
|
223
228
|
}),
|
|
224
229
|
}, validOrderDataset.default);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mandatory.test.js","sourceRoot":"","sources":["../../../src/tests/components/mandatory.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,0DAA6B;AAC7B,+BAA8B;AAC9B,6DAAuD;AACvD,uEAAwD;AACxD,
|
|
1
|
+
{"version":3,"file":"mandatory.test.js","sourceRoot":"","sources":["../../../src/tests/components/mandatory.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,0DAA6B;AAC7B,+BAA8B;AAC9B,6DAAuD;AACvD,uEAAwD;AACxD,uCAIqB;AACrB,iDAA8C;AAC9C,6CAA+E;AAC/E,6FAQmD;AAEnD,2CAA4C;AAC5C,oCAQkB;AAElB,MAAM,eAAe,GAAG,mBAAI;KACzB,QAAQ,CAAC,UAAU,CAAC;KACpB,OAAO,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;AACnC,MAAM,cAAc,GAAG,UAAU,eAAe,EAAE,CAAC;AACnD,MAAM,UAAU,GAAG,SAAS,CAAC;AAG7B,IAAM,KAAK,GAAX,MAAM,KAAM,SAAQ,qCAAK;CAqBxB,CAAA;AAhBS;IAFP,IAAA,qCAAK,GAAE;IACP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;gDACkB;AAG1B;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;2CACa;AAGrB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;4CACc;AAGtB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;0CACY;AAGpB;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;qCACO;AAGf;IADP,IAAA,qCAAK,EAAC,QAAQ,CAAC;;oCACM;AApBlB,KAAK;IADV,IAAA,6CAAa,EAAC,cAAc,EAAE,UAAU,CAAC;GACpC,KAAK,CAqBV;AACD,MAAM,UAAW,SAAQ,IAAA,8CAAc,EAAC,KAAK,EAAE,cAAc,CAAC;CAAG;AAEjE,MAAM,iBAAiB,GAAG;IACxB,OAAO,EAAE;QACP,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,iBAAiB;QAChC,WAAW,EAAE,KAAK;QAClB,MAAM,EAAE,SAAS;QACjB,KAAK,EAAE,qCAAqC;QAC5C,iBAAiB,EAAE,aAAa;KACjC;IACD,WAAW,EAAE;QACX,YAAY,EAAE,OAAO;QACrB,aAAa,EAAE,mBAAmB;QAClC,WAAW,EAAE,MAAM;QACnB,MAAM,EAAE,YAAY;QACpB,KAAK,EAAE,qCAAqC;QAC5C,iBAAiB,EAAE,aAAa;KACjC;CACuC,CAAC;AAE3C,QAAQ,CAAC,iBAAiB,EAAE,GAAG,EAAE;IAC/B,EAAE,CAAC,mCAAmC,EAAE,KAAK,IAAI,EAAE,CACjD,MAAM,+BAA+B,EAAE,CAAC,CAAC;IAC3C,EAAE,CAAC,uCAAuC,EAAE,KAAK,IAAI,EAAE,CACrD,MAAM,mCAAmC,EAAE,CAAC,CAAC;IAC/C,EAAE,CAAC,oCAAoC,EAAE,KAAK,IAAI,EAAE,CAClD,MAAM,gCAAgC,EAAE,CAAC,CAAC;IAC5C,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE,CAClE,MAAM,yCAAyC,EAAE,CAAC,CAAC;IACrD,EAAE,CAAC,qCAAqC,EAAE,KAAK,IAAI,EAAE,CACnD,MAAM,gCAAgC,EAAE,CAAC,CAAC;IAC5C,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE,CAClE,MAAM,4CAA4C,EAAE,CAAC,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEH,KAAK,UAAU,eAAe;IAC5B,MAAM,MAAM,GAAG,2BAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IACtC,IAAI,MAAM,EAAE,CAAC;QACX,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,MAAM,EAAE,CAAC;IACzD,CAAC;AACH,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,QAAgB,EAChB,KAAU,EACV,KAAsB;IAGtB,IAAM,iBAAiB,GAAvB,MAAM,iBAAkB,SAAQ,IAAA,sBAAc,EAC5C,KAAK,EACL,KAAK,EACL,IAAA,0BAAU,EAAC,IAAI,QAAQ,EAAE,CAAC,CAC3B;KA4BA,CAAA;IAzBS;QAFP,IAAA,yBAAc,GAAE;QAChB,IAAA,qCAAK,EAAC,UAAU,CAAC;kCACE,UAAU;yDAAC;IAMvB;QAFP,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;QAC5B,IAAA,oBAAS,EAAC,KAAK,EAAE,MAAM,CAAC;;2DACI;IAIrB;QAFP,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;QAC5B,IAAA,oBAAS,EAAC,KAAK,CAAC;;4DACa;IAItB;QAFP,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;QAC5B,IAAA,oBAAS,EAAC,KAAK,EAAE,MAAM,CAAC;;0DACG;IAIpB;QAFP,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;QAC5B,IAAA,oBAAS,EAAC,MAAM,CAAC;;qDACK;IAGf;QADP,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;;oDACP;IAGd;QADP,IAAA,iBAAM,EAAC,qBAAU,CAAC,SAAS,CAAC;;gEACK;IA/B9B,iBAAiB;QADtB,IAAA,8BAAsB,GAAE;OACnB,iBAAiB,CAgCtB;IACD,MAAM,IAAA,8CAAc,EAAC,UAAU,CAAC,CAAC;IACjC,MAAM,eAAe,EAAE,CAAC;IACxB,MAAM,UAAU,GAAG,IAAI,UAAU,CAAC,IAAA,yBAAiB,EAAC,UAAU,CAAC,CAAC,CAAC;IAEjE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACpD,OAAO,EAAE,EAAE,EAAE,YAAY,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC;IAC7C,CAAC;IACD,OAAO,EAAE,UAAU,EAAE,CAAC;AACxB,CAAC;AAED,KAAK,UAAU,+BAA+B;IAC5C,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,qBAAqB,CAChD,IAAA,uBAAe,GAAE,EACjB,EAAE,GAAG,EAAE,qBAAa,CAAC,GAAG,EAAE,EAC1B,iBAAiB,CAAC,WAAW,CAC9B,CAAC;IAEF,MAAM,QAAQ,GAAG,MAAM,IAAA,kBAAU,EAAC,IAAA,uBAAe,GAAE,EAAE;QACnD,YAAY,EAAE,iBAAiB,CAAC,OAAO,CAAC,YAAY;QACpD,aAAa,EAAE,iBAAiB,CAAC,OAAO,CAAC,aAAa;QACtD,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC,WAAW;KACnD,CAAC,CAAC;IACH,IAAA,aAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,IAAA,eAAQ,EAAa,QAAQ,CAAC,CAAC;IACrD,IAAA,aAAM,EAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChD,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACtC,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAA,sBAAc,EAAC,KAAK,EAAE,iBAAiB,CAAC,OAAO,EAAE;YACrD,cAAc;YACd,eAAe;YACf,aAAa;SACd,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,mCAAmC;IAChD,MAAM,qBAAqB,CAAC,IAAA,uBAAe,GAAE,EAAE,EAAE,GAAG,EAAE,qBAAa,CAAC,GAAG,EAAE,CAAC,CAAC;IAE3E,MAAM,QAAQ,GAAG,MAAM,IAAA,kBAAU,EAAC,IAAA,uBAAe,GAAE,EAAE;QACnD,YAAY,EAAE,iBAAiB,CAAC,OAAO,CAAC,YAAY;QACpD,WAAW,EAAE,iBAAiB,CAAC,OAAO,CAAC,WAAW;KACnD,CAAC,CAAC;IACH,IAAA,aAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACtC,IAAA,aAAM,EAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;QAC1C,IAAI,EAAE,uBAAU,CAAC,wBAAwB;QACzC,MAAM,EAAE,CAAC,eAAe,CAAC;KAC1B,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,gCAAgC;IAC7C,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,MAAM,qBAAqB,CACpD,IAAA,uBAAe,GAAE,EACjB,EAAE,IAAI,EAAE,qBAAa,CAAC,IAAI,EAAE,EAC5B,iBAAiB,CAAC,OAAO,CAC1B,CAAC;IACF,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAEnE,MAAM,QAAQ,GAAG,MAAM,IAAA,mBAAW,EAChC,IAAA,uBAAe,GAAE,EACjB;QACE,YAAY,EAAE,iBAAiB,CAAC,WAAW,CAAC,YAAY;QACxD,WAAW,EAAE,iBAAiB,CAAC,WAAW,CAAC,WAAW;QACtD,MAAM,EAAE,iBAAiB,CAAC,WAAW,CAAC,MAAM;KAC7C,EACD,EAAE,EAAE,EAAE,CACP,CAAC;IACF,IAAA,aAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEtC,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACvC,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IACjC,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAC5B,cAAc,EACd,iBAAiB,CAAC,WAAW,CAAC,YAAY,CAC3C,CAAC;IACF,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAC5B,aAAa,EACb,iBAAiB,CAAC,WAAW,CAAC,WAAW,CAC1C,CAAC;IACF,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAC5B,QAAQ,EACR,iBAAiB,CAAC,WAAW,CAAC,MAAM,CACrC,CAAC;IACF,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,IAAA,sBAAc,EAAC,KAAK,EAAE,iBAAiB,CAAC,OAAO,EAAE;YACrD,eAAe;YACf,OAAO;YACP,mBAAmB;SACpB,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,KAAK,UAAU,yCAAyC;IACtD,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,MAAM,qBAAqB,CACpD,IAAA,uBAAe,GAAE,EACjB,EAAE,IAAI,EAAE,qBAAa,CAAC,IAAI,EAAE,EAC5B,iBAAiB,CAAC,OAAO,CAC1B,CAAC;IACF,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAEnE,MAAM,QAAQ,GAAG,MAAM,IAAA,mBAAW,EAChC,IAAA,uBAAe,GAAE,EACjB;QACE,YAAY,EAAE,iBAAiB,CAAC,WAAW,CAAC,YAAY;QACxD,WAAW,EAAE,iBAAiB,CAAC,WAAW,CAAC,WAAW;KACvD,EACD,EAAE,EAAE,EAAE,CACP,CAAC;IACF,IAAA,aAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEtC,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACvC,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7E,CAAC;AAED,KAAK,UAAU,gCAAgC;IAC7C,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,MAAM,qBAAqB,CACpD,IAAA,uBAAe,GAAE,EACjB,EAAE,IAAI,EAAE,qBAAa,CAAC,IAAI,EAAE,EAC5B,iBAAiB,CAAC,OAAO,CAC1B,CAAC;IACF,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAEnE,KAAK,MAAM,YAAY,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QAC1C,MAAM,QAAQ,GAAG,MAAM,IAAA,mBAAW,EAChC,IAAA,uBAAe,GAAE,EACjB,EAAE,MAAM,EAAE,YAAY,EAAE,EACxB,EAAE,EAAE,EAAE,CACP,CAAC;QACF,IAAA,aAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACtC,IAAA,aAAM,EAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC;YAC1C,IAAI,EAAE,uBAAU,CAAC,wBAAwB;YACzC,MAAM,EAAE,CAAC,QAAQ,CAAC;SACnB,CAAC,CAAC;IACL,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACvC,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,iBAAiB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;AAC7E,CAAC;AAED,KAAK,UAAU,4CAA4C;IACzD,MAAM,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,MAAM,qBAAqB,CACpD,IAAA,uBAAe,GAAE,EACjB;QACE,eAAe,EAAE,qBAAa,CAAC,WAAW,CAAC,qBAAa,CAAC,IAAI,EAAE;YAC7D,WAAW,EAAE,MAAM;SACpB,CAAC;KACH,EACD,iBAAiB,CAAC,OAAO,CAC1B,CAAC;IACF,IAAI,CAAC,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAEnE,MAAM,QAAQ,GAAG,MAAM,IAAA,eAAO,EAC5B,IAAA,uBAAe,GAAE,EACjB,iBAAiB,EACjB,KAAK,EACL,EAAE,KAAK,EAAE,eAAe,EAAE,EAC1B,EAAE,EAAE,EAAE,CACP,CAAC;IACF,IAAA,aAAM,EAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAEtC,MAAM,KAAK,GAAG,MAAM,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IACvC,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;IACjC,IAAA,aAAM,EAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -16,9 +16,10 @@ const node_path_1 = __importDefault(require("node:path"));
|
|
|
16
16
|
const chai_1 = require("chai");
|
|
17
17
|
const interface_database_1 = require("@antelopejs/interface-database");
|
|
18
18
|
const interface_api_1 = require("@antelopejs/interface-api");
|
|
19
|
-
const
|
|
20
|
-
const metadata_1 = require("
|
|
19
|
+
const index_1 = require("../../index");
|
|
20
|
+
const metadata_1 = require("../../metadata");
|
|
21
21
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
22
|
+
const http_1 = require("../internal/http");
|
|
22
23
|
const utils_1 = require("../utils");
|
|
23
24
|
const currentTestName = node_path_1.default
|
|
24
25
|
.basename(__filename)
|
|
@@ -63,15 +64,15 @@ const authorDataset = [
|
|
|
63
64
|
];
|
|
64
65
|
const orphanAuthorId = "orphan-author-id";
|
|
65
66
|
describe("Modifier key with foreign fields", () => {
|
|
66
|
-
it("gets row with resolved foreign reference", async () => await
|
|
67
|
-
it("gets row with null foreign reference", async () => await
|
|
68
|
-
it("gets row with dangling foreign reference", async () => await
|
|
69
|
-
it("lists rows containing null foreign references", async () => await
|
|
67
|
+
it("gets row with resolved foreign reference", async () => await expectGetsRowWithResolvedForeignReference());
|
|
68
|
+
it("gets row with null foreign reference", async () => await expectGetsRowWithNullForeignReference());
|
|
69
|
+
it("gets row with dangling foreign reference", async () => await expectGetsRowWithDanglingForeignReference());
|
|
70
|
+
it("lists rows containing null foreign references", async () => await expectListsRowsContainingNullForeignReferences());
|
|
70
71
|
});
|
|
71
72
|
async function _createDataController(testName) {
|
|
72
|
-
let _ModifierKeyTestAPI = class _ModifierKeyTestAPI extends (0,
|
|
73
|
-
list:
|
|
74
|
-
get:
|
|
73
|
+
let _ModifierKeyTestAPI = class _ModifierKeyTestAPI extends (0, index_1.DataController)(Post, {
|
|
74
|
+
list: index_1.DefaultRoutes.List,
|
|
75
|
+
get: index_1.DefaultRoutes.Get,
|
|
75
76
|
}, (0, interface_api_1.Controller)(`/${testName}`)) {
|
|
76
77
|
};
|
|
77
78
|
__decorate([
|
|
@@ -101,7 +102,7 @@ async function _createDataController(testName) {
|
|
|
101
102
|
__metadata("design:type", String)
|
|
102
103
|
], _ModifierKeyTestAPI.prototype, "title", void 0);
|
|
103
104
|
_ModifierKeyTestAPI = __decorate([
|
|
104
|
-
(0,
|
|
105
|
+
(0, index_1.RegisterDataController)()
|
|
105
106
|
], _ModifierKeyTestAPI);
|
|
106
107
|
await (0, interface_database_decorators_1.RegisterSchema)(schemaName);
|
|
107
108
|
await _dropTables();
|
|
@@ -126,42 +127,42 @@ async function _dropTables() {
|
|
|
126
127
|
await schema.instance().table(authorTableName).delete();
|
|
127
128
|
}
|
|
128
129
|
}
|
|
129
|
-
async function
|
|
130
|
+
async function expectGetsRowWithResolvedForeignReference() {
|
|
130
131
|
const { postIds } = await _createDataController((0, utils_1.getFunctionName)());
|
|
131
132
|
const response = await (0, utils_1.getRequest)((0, utils_1.getFunctionName)(), {
|
|
132
133
|
id: postIds[0],
|
|
133
134
|
locale,
|
|
134
135
|
});
|
|
135
136
|
(0, chai_1.expect)(response.status).to.equal(200);
|
|
136
|
-
const post =
|
|
137
|
+
const post = await (0, http_1.readJson)(response);
|
|
137
138
|
(0, chai_1.expect)(post.authorId).to.not.equal(null);
|
|
138
139
|
(0, chai_1.expect)(post.authorId?.name).to.equal("Alice Carter");
|
|
139
140
|
}
|
|
140
|
-
async function
|
|
141
|
+
async function expectGetsRowWithNullForeignReference() {
|
|
141
142
|
const { postIds } = await _createDataController((0, utils_1.getFunctionName)());
|
|
142
143
|
const response = await (0, utils_1.getRequest)((0, utils_1.getFunctionName)(), {
|
|
143
144
|
id: postIds[2],
|
|
144
145
|
locale,
|
|
145
146
|
});
|
|
146
147
|
(0, chai_1.expect)(response.status).to.equal(200);
|
|
147
|
-
const post =
|
|
148
|
+
const post = await (0, http_1.readJson)(response);
|
|
148
149
|
(0, chai_1.expect)(post.authorId).to.equal(null);
|
|
149
150
|
}
|
|
150
|
-
async function
|
|
151
|
+
async function expectGetsRowWithDanglingForeignReference() {
|
|
151
152
|
const { postIds } = await _createDataController((0, utils_1.getFunctionName)());
|
|
152
153
|
const response = await (0, utils_1.getRequest)((0, utils_1.getFunctionName)(), {
|
|
153
154
|
id: postIds[1],
|
|
154
155
|
locale,
|
|
155
156
|
});
|
|
156
157
|
(0, chai_1.expect)(response.status).to.equal(200);
|
|
157
|
-
const post =
|
|
158
|
+
const post = await (0, http_1.readJson)(response);
|
|
158
159
|
(0, chai_1.expect)(post.authorId).to.equal(null);
|
|
159
160
|
}
|
|
160
|
-
async function
|
|
161
|
+
async function expectListsRowsContainingNullForeignReferences() {
|
|
161
162
|
await _createDataController((0, utils_1.getFunctionName)());
|
|
162
163
|
const response = await (0, utils_1.listRequest)((0, utils_1.getFunctionName)(), { locale });
|
|
163
164
|
(0, chai_1.expect)(response.status).to.equal(200);
|
|
164
|
-
const data =
|
|
165
|
+
const data = await (0, http_1.readJson)(response);
|
|
165
166
|
(0, chai_1.expect)(data.results).to.have.lengthOf(3);
|
|
166
167
|
const nullAuthorPosts = data.results.filter((post) => post.authorId == null);
|
|
167
168
|
(0, chai_1.expect)(nullAuthorPosts).to.have.lengthOf(2);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"modifier_key.test.js","sourceRoot":"","sources":["../../../src/tests/components/modifier_key.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,0DAA6B;AAC7B,+BAA8B;AAC9B,uEAAwD;AACxD,6DAAkE;AAClE,
|
|
1
|
+
{"version":3,"file":"modifier_key.test.js","sourceRoot":"","sources":["../../../src/tests/components/modifier_key.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_1 = require("chai");
|
|
4
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
5
|
+
const components_1 = require("../../components");
|
|
6
|
+
function statusOfRefusal(body) {
|
|
7
|
+
try {
|
|
8
|
+
components_1.Validation.ParseBody(body);
|
|
9
|
+
}
|
|
10
|
+
catch (error) {
|
|
11
|
+
return error instanceof interface_api_1.HTTPResult ? error.getStatus() : undefined;
|
|
12
|
+
}
|
|
13
|
+
return 200;
|
|
14
|
+
}
|
|
15
|
+
function body(fields) {
|
|
16
|
+
return Buffer.from(JSON.stringify(fields));
|
|
17
|
+
}
|
|
18
|
+
class Money {
|
|
19
|
+
amount = 1;
|
|
20
|
+
}
|
|
21
|
+
describe("Validation.ParseBody", () => {
|
|
22
|
+
it("parses a JSON object", () => (0, chai_1.expect)(components_1.Validation.ParseBody(body({ name: "a", tags: [1, null] }))).to.eql({
|
|
23
|
+
name: "a",
|
|
24
|
+
tags: [1, null],
|
|
25
|
+
}));
|
|
26
|
+
it("hands back a body a route already parsed, with dates and undefined", () => {
|
|
27
|
+
const stamped = {
|
|
28
|
+
at: new Date(0),
|
|
29
|
+
nested: { list: [new Date(1), "x"], gone: undefined },
|
|
30
|
+
};
|
|
31
|
+
(0, chai_1.expect)(components_1.Validation.ParseBody(stamped)).to.equal(stamped);
|
|
32
|
+
});
|
|
33
|
+
it("refuses a body that is not a JSON object", () => {
|
|
34
|
+
(0, chai_1.expect)([
|
|
35
|
+
statusOfRefusal(Buffer.from("{")),
|
|
36
|
+
statusOfRefusal(body([1])),
|
|
37
|
+
statusOfRefusal(Buffer.from("null")),
|
|
38
|
+
statusOfRefusal(Buffer.from('"text"')),
|
|
39
|
+
]).to.eql([400, 400, 400, 400]);
|
|
40
|
+
});
|
|
41
|
+
it("accepts a body nested far deeper than the call stack allows", () => {
|
|
42
|
+
const depth = 50000;
|
|
43
|
+
const nested = `{"a":${"[".repeat(depth)}${"]".repeat(depth)}}`;
|
|
44
|
+
(0, chai_1.expect)(Object.keys(components_1.Validation.ParseBody(Buffer.from(nested)))).to.eql([
|
|
45
|
+
"a",
|
|
46
|
+
]);
|
|
47
|
+
});
|
|
48
|
+
it("refuses a body nested deeper than the call stack allows that ends in a function", () => {
|
|
49
|
+
const deepest = Object.create(null);
|
|
50
|
+
deepest.run = () => 1;
|
|
51
|
+
let nested = deepest;
|
|
52
|
+
for (let level = 0; level < 50000; level++)
|
|
53
|
+
nested = { next: nested };
|
|
54
|
+
(0, chai_1.expect)(statusOfRefusal(nested)).to.equal(400);
|
|
55
|
+
});
|
|
56
|
+
it("accepts a body without a prototype", () => {
|
|
57
|
+
const bare = Object.create(null);
|
|
58
|
+
bare.name = "a";
|
|
59
|
+
(0, chai_1.expect)(components_1.Validation.ParseBody(bare)).to.equal(bare);
|
|
60
|
+
});
|
|
61
|
+
it("refuses a parsed body holding what JSON cannot", () => {
|
|
62
|
+
const withFunction = Object.create(null);
|
|
63
|
+
withFunction.run = () => 1;
|
|
64
|
+
const withInstance = Object.create(null);
|
|
65
|
+
withInstance.price = new Money();
|
|
66
|
+
const withBigInt = Object.create(null);
|
|
67
|
+
withBigInt.count = 1n;
|
|
68
|
+
const withUndefined = Object.create(null);
|
|
69
|
+
withUndefined.list = [1, undefined];
|
|
70
|
+
const cyclic = {};
|
|
71
|
+
cyclic.self = cyclic;
|
|
72
|
+
(0, chai_1.expect)([withFunction, withInstance, withBigInt, withUndefined, cyclic].map(statusOfRefusal)).to.eql([400, 400, 400, 400, 400]);
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
//# sourceMappingURL=parse_body.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parse_body.test.js","sourceRoot":"","sources":["../../../src/tests/components/parse_body.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,10 +16,13 @@ const node_path_1 = __importDefault(require("node:path"));
|
|
|
16
16
|
const chai_1 = require("chai");
|
|
17
17
|
const interface_api_1 = require("@antelopejs/interface-api");
|
|
18
18
|
const interface_database_1 = require("@antelopejs/interface-database");
|
|
19
|
-
const
|
|
20
|
-
const
|
|
19
|
+
const index_1 = require("../../index");
|
|
20
|
+
const components_1 = require("../../components");
|
|
21
|
+
const metadata_1 = require("../../metadata");
|
|
21
22
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
23
|
+
const http_1 = require("../internal/http");
|
|
22
24
|
const utils_1 = require("../utils");
|
|
25
|
+
const guards_1 = require("../../internal/guards");
|
|
23
26
|
const currentTestName = node_path_1.default
|
|
24
27
|
.basename(__filename)
|
|
25
28
|
.replace(/\.test\.(ts|js)$/, "");
|
|
@@ -46,23 +49,23 @@ Event = __decorate([
|
|
|
46
49
|
], Event);
|
|
47
50
|
class EventModel extends (0, interface_database_decorators_1.BasicDataModel)(Event, eventTableName) {
|
|
48
51
|
}
|
|
49
|
-
|
|
50
|
-
if (
|
|
52
|
+
const parseDate = (value) => {
|
|
53
|
+
if (!(0, guards_1.isString)(value) || Number.isNaN(Date.parse(value))) {
|
|
51
54
|
return { success: false };
|
|
52
55
|
}
|
|
53
56
|
return { success: true, data: new Date(value) };
|
|
54
|
-
}
|
|
55
|
-
async
|
|
56
|
-
if (
|
|
57
|
+
};
|
|
58
|
+
const normalizeCode = async (value) => {
|
|
59
|
+
if (!(0, guards_1.isString)(value)) {
|
|
57
60
|
return { success: false };
|
|
58
61
|
}
|
|
59
62
|
return { success: true, data: value.trim().toUpperCase() };
|
|
60
|
-
}
|
|
63
|
+
};
|
|
61
64
|
describe("Field Validator parsed value", () => {
|
|
62
|
-
it("writes the parsed value on new", async () => await
|
|
63
|
-
it("writes the parsed value on edit", async () => await
|
|
64
|
-
it("writes the value of an asynchronous parse", async () => await
|
|
65
|
-
it("rejects a failed parse with the invalid field message", async () => await
|
|
65
|
+
it("writes the parsed value on new", async () => await expectWritesParsedValueOnNew());
|
|
66
|
+
it("writes the parsed value on edit", async () => await expectWritesParsedValueOnEdit());
|
|
67
|
+
it("writes the value of an asynchronous parse", async () => await expectWritesAsyncParsedValue());
|
|
68
|
+
it("rejects a failed parse with the invalid field message", async () => await expectRejectsFailedParse());
|
|
66
69
|
});
|
|
67
70
|
async function _dropEventTable() {
|
|
68
71
|
const schema = interface_database_1.Schema.get(schemaName);
|
|
@@ -71,7 +74,7 @@ async function _dropEventTable() {
|
|
|
71
74
|
}
|
|
72
75
|
}
|
|
73
76
|
async function _createDataController(testName, event) {
|
|
74
|
-
let _ParsedValueTestAPI = class _ParsedValueTestAPI extends (0,
|
|
77
|
+
let _ParsedValueTestAPI = class _ParsedValueTestAPI extends (0, index_1.DataController)(Event, { new: index_1.DefaultRoutes.New, edit: index_1.DefaultRoutes.Edit }, (0, interface_api_1.Controller)(`/${testName}`)) {
|
|
75
78
|
};
|
|
76
79
|
__decorate([
|
|
77
80
|
(0, metadata_1.ModelReference)(),
|
|
@@ -93,7 +96,7 @@ async function _createDataController(testName, event) {
|
|
|
93
96
|
__metadata("design:type", String)
|
|
94
97
|
], _ParsedValueTestAPI.prototype, "code", void 0);
|
|
95
98
|
_ParsedValueTestAPI = __decorate([
|
|
96
|
-
(0,
|
|
99
|
+
(0, index_1.RegisterDataController)()
|
|
97
100
|
], _ParsedValueTestAPI);
|
|
98
101
|
await (0, interface_database_decorators_1.RegisterSchema)(schemaName);
|
|
99
102
|
await _dropEventTable();
|
|
@@ -104,19 +107,19 @@ async function _createDataController(testName, event) {
|
|
|
104
107
|
}
|
|
105
108
|
return { eventModel };
|
|
106
109
|
}
|
|
107
|
-
async function
|
|
110
|
+
async function expectWritesParsedValueOnNew() {
|
|
108
111
|
const { eventModel } = await _createDataController((0, utils_1.getFunctionName)());
|
|
109
112
|
const response = await (0, utils_1.newRequest)((0, utils_1.getFunctionName)(), {
|
|
110
113
|
name: "Launch",
|
|
111
114
|
startsAt,
|
|
112
115
|
});
|
|
113
116
|
(0, chai_1.expect)(response.status).to.equal(200);
|
|
114
|
-
const { _id: id } =
|
|
117
|
+
const { _id: id } = await (0, http_1.readJson)(response);
|
|
115
118
|
const event = await eventModel.get(id);
|
|
116
119
|
(0, chai_1.expect)(event?.startsAt).to.be.instanceOf(Date);
|
|
117
120
|
(0, chai_1.expect)(event?.startsAt.toISOString()).to.equal(startsAt);
|
|
118
121
|
}
|
|
119
|
-
async function
|
|
122
|
+
async function expectWritesParsedValueOnEdit() {
|
|
120
123
|
const { id, eventModel } = await _createDataController((0, utils_1.getFunctionName)(), {
|
|
121
124
|
name: "Launch",
|
|
122
125
|
startsAt: new Date(startsAt),
|
|
@@ -129,24 +132,27 @@ async function writesParsedValueOnEdit() {
|
|
|
129
132
|
(0, chai_1.expect)(event?.startsAt).to.be.instanceOf(Date);
|
|
130
133
|
(0, chai_1.expect)(event?.startsAt.toISOString()).to.equal(editedStartsAt);
|
|
131
134
|
}
|
|
132
|
-
async function
|
|
135
|
+
async function expectWritesAsyncParsedValue() {
|
|
133
136
|
const { eventModel } = await _createDataController((0, utils_1.getFunctionName)());
|
|
134
137
|
const response = await (0, utils_1.newRequest)((0, utils_1.getFunctionName)(), {
|
|
135
138
|
name: "Launch",
|
|
136
139
|
code: " launch-26 ",
|
|
137
140
|
});
|
|
138
141
|
(0, chai_1.expect)(response.status).to.equal(200);
|
|
139
|
-
const { _id: id } =
|
|
142
|
+
const { _id: id } = await (0, http_1.readJson)(response);
|
|
140
143
|
const event = await eventModel.get(id);
|
|
141
144
|
(0, chai_1.expect)(event?.code).to.equal("LAUNCH-26");
|
|
142
145
|
}
|
|
143
|
-
async function
|
|
146
|
+
async function expectRejectsFailedParse() {
|
|
144
147
|
await _createDataController((0, utils_1.getFunctionName)());
|
|
145
148
|
const response = await (0, utils_1.newRequest)((0, utils_1.getFunctionName)(), {
|
|
146
149
|
name: "Launch",
|
|
147
150
|
startsAt: "not-a-date",
|
|
148
151
|
});
|
|
149
152
|
(0, chai_1.expect)(response.status).to.equal(400);
|
|
150
|
-
(0, chai_1.expect)(await response.
|
|
153
|
+
(0, chai_1.expect)(await response.json()).to.deep.equal({
|
|
154
|
+
code: components_1.Validation.INVALID_FIELD_TYPES,
|
|
155
|
+
fields: ["startsAt"],
|
|
156
|
+
});
|
|
151
157
|
}
|
|
152
158
|
//# sourceMappingURL=parsed_value.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"parsed_value.test.js","sourceRoot":"","sources":["../../../src/tests/components/parsed_value.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;AAAA,0DAA6B;AAC7B,+BAA8B;AAC9B,6DAAuD;AACvD,uEAAwD;AACxD,
|
|
1
|
+
{"version":3,"file":"parsed_value.test.js","sourceRoot":"","sources":["../../../src/tests/components/parsed_value.test.ts"],"names":[],"mappings":"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"}
|