@antelopejs/interface-data-api 0.4.0 → 0.6.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 +26 -22
- package/dist/antelope.test.js +1 -5
- package/dist/antelope.test.js.map +1 -1
- package/dist/components.d.ts +67 -39
- package/dist/components.js +106 -685
- package/dist/components.js.map +1 -1
- package/dist/index.d.ts +57 -68
- package/dist/index.js +114 -100
- package/dist/index.js.map +1 -1
- package/dist/internal/computed.d.ts +6 -0
- package/dist/internal/computed.js +51 -0
- package/dist/internal/computed.js.map +1 -0
- package/dist/internal/controller-types.d.ts +34 -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 +29 -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 +125 -0
- package/dist/internal/deferred-joined-stream.js.map +1 -0
- package/dist/internal/extractors.d.ts +25 -0
- package/dist/internal/extractors.js +31 -0
- package/dist/internal/extractors.js.map +1 -0
- package/dist/internal/field-types.d.ts +199 -0
- package/dist/internal/field-types.js +4 -0
- package/dist/internal/field-types.js.map +1 -0
- package/dist/internal/filters.d.ts +6 -0
- package/dist/internal/filters.js +22 -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 +39 -0
- package/dist/internal/guards.js +116 -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 +182 -0
- package/dist/internal/list.js.map +1 -0
- package/dist/internal/meta-records.d.ts +19 -0
- package/dist/internal/meta-records.js +78 -0
- package/dist/internal/meta-records.js.map +1 -0
- package/dist/internal/properties.d.ts +4 -0
- package/dist/internal/properties.js +45 -0
- package/dist/internal/properties.js.map +1 -0
- package/dist/internal/prototypes.d.ts +14 -0
- package/dist/internal/prototypes.js +38 -0
- package/dist/internal/prototypes.js.map +1 -0
- package/dist/internal/read-properties.d.ts +3 -0
- package/dist/internal/read-properties.js +29 -0
- package/dist/internal/read-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 +28 -0
- package/dist/internal/tables.js +48 -0
- package/dist/internal/tables.js.map +1 -0
- package/dist/internal/validation.d.ts +12 -0
- package/dist/internal/validation.js +100 -0
- package/dist/internal/validation.js.map +1 -0
- package/dist/metadata.d.ts +27 -228
- package/dist/metadata.js +84 -213
- package/dist/metadata.js.map +1 -1
- package/dist/tests/components/access_control.test.js +28 -20
- package/dist/tests/components/access_control.test.js.map +1 -1
- package/dist/tests/components/computed.test.js +36 -27
- 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 +57 -54
- package/dist/tests/components/deferred_joined.test.js.map +1 -1
- package/dist/tests/components/extract_generic.test.d.ts +1 -0
- package/dist/tests/components/extract_generic.test.js +64 -0
- package/dist/tests/components/extract_generic.test.js.map +1 -0
- package/dist/tests/components/filter_comparisons.test.d.ts +1 -0
- package/dist/tests/components/filter_comparisons.test.js +34 -0
- package/dist/tests/components/filter_comparisons.test.js.map +1 -0
- package/dist/tests/components/filter_list_route.test.d.ts +1 -0
- package/dist/tests/components/filter_list_route.test.js +182 -0
- package/dist/tests/components/filter_list_route.test.js.map +1 -0
- package/dist/tests/components/filter_options.test.js +11 -10
- package/dist/tests/components/filter_options.test.js.map +1 -1
- package/dist/tests/components/foreign_computed.test.js +23 -14
- package/dist/tests/components/foreign_computed.test.js.map +1 -1
- package/dist/tests/components/foreign_joined.test.js +31 -27
- package/dist/tests/components/foreign_joined.test.js.map +1 -1
- package/dist/tests/components/joined.test.js +59 -45
- package/dist/tests/components/joined.test.js.map +1 -1
- package/dist/tests/components/listable.test.js +78 -58
- package/dist/tests/components/listable.test.js.map +1 -1
- package/dist/tests/components/localized_sort.test.js +14 -11
- package/dist/tests/components/localized_sort.test.js.map +1 -1
- package/dist/tests/components/mandatory.test.js +25 -25
- package/dist/tests/components/mandatory.test.js.map +1 -1
- package/dist/tests/components/modifier_key.test.js +27 -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 +76 -0
- package/dist/tests/components/parse_body.test.js.map +1 -0
- package/dist/tests/components/parsed_value.test.js +23 -21
- package/dist/tests/components/parsed_value.test.js.map +1 -1
- package/dist/tests/components/partial_edit.test.js +38 -32
- package/dist/tests/components/partial_edit.test.js.map +1 -1
- package/dist/tests/components/per_action_access.test.js +20 -12
- package/dist/tests/components/per_action_access.test.js.map +1 -1
- package/dist/tests/components/prototype_named_filter.test.d.ts +1 -0
- package/dist/tests/components/prototype_named_filter.test.js +87 -0
- package/dist/tests/components/prototype_named_filter.test.js.map +1 -0
- package/dist/tests/components/validator.test.js +45 -37
- package/dist/tests/components/validator.test.js.map +1 -1
- package/dist/tests/components/written_row.test.d.ts +1 -0
- package/dist/tests/components/written_row.test.js +99 -0
- package/dist/tests/components/written_row.test.js.map +1 -0
- package/dist/tests/helpers/other-instance.d.ts +11 -1
- package/dist/tests/helpers/other-instance.js +35 -9
- package/dist/tests/helpers/other-instance.js.map +1 -1
- package/dist/tests/index/field_decorator_target.test.d.ts +1 -0
- package/dist/tests/index/field_decorator_target.test.js +20 -0
- package/dist/tests/index/field_decorator_target.test.js.map +1 -0
- 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 +14 -9
- package/dist/tests/index/inheritance.test.js.map +1 -1
- package/dist/tests/index/metadata_names.test.d.ts +1 -0
- package/dist/tests/index/metadata_names.test.js +91 -0
- package/dist/tests/index/metadata_names.test.js.map +1 -0
- package/dist/tests/index/routes.test.js +49 -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 +66 -729
- package/dist/tests/integration.test.js.map +1 -1
- package/dist/tests/internal/controller-fields.test.d.ts +1 -0
- package/dist/tests/internal/controller-fields.test.js +25 -0
- package/dist/tests/internal/controller-fields.test.js.map +1 -0
- package/dist/tests/internal/http.d.ts +35 -0
- package/dist/tests/internal/http.js +56 -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 +162 -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 +8 -10
- 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/1.introduction.md +38 -35
- package/docs/10.joined.md +51 -40
- package/docs/11.computed.md +91 -47
- package/docs/2.data-controllers.md +50 -42
- package/docs/3.routes.md +156 -134
- package/docs/4.access-rights.md +48 -44
- package/docs/5.validators.md +65 -47
- package/docs/6.listable.md +53 -49
- package/docs/7.foreign-keys.md +55 -48
- package/docs/8.filters.md +65 -54
- package/docs/9.modifiers.md +29 -25
- package/package.json +34 -13
- package/skills/data-api-interface/SKILL.md +13 -3
- package/skills/data-api-interface/cases.json +99 -0
|
@@ -15,11 +15,12 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
15
15
|
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
|
-
const components_1 = require("
|
|
18
|
+
const components_1 = require("../../components");
|
|
19
19
|
const interface_database_1 = require("@antelopejs/interface-database");
|
|
20
|
-
const
|
|
20
|
+
const index_1 = require("../../index");
|
|
21
21
|
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
22
|
-
const metadata_1 = require("
|
|
22
|
+
const metadata_1 = require("../../metadata");
|
|
23
|
+
const http_1 = require("../internal/http");
|
|
23
24
|
const utils_1 = require("../utils");
|
|
24
25
|
const currentTestName = node_path_1.default
|
|
25
26
|
.basename(__filename)
|
|
@@ -57,8 +58,8 @@ Book = __decorate([
|
|
|
57
58
|
], Book);
|
|
58
59
|
class BookModel extends (0, interface_database_decorators_1.BasicDataModel)(Book, bookTableName) {
|
|
59
60
|
}
|
|
60
|
-
let _DeferredJoinedTestAPI = class _DeferredJoinedTestAPI extends (0,
|
|
61
|
-
list:
|
|
61
|
+
let _DeferredJoinedTestAPI = class _DeferredJoinedTestAPI extends (0, index_1.DataController)(Book, {
|
|
62
|
+
list: index_1.DefaultRoutes.List,
|
|
62
63
|
}, (0, interface_api_1.Controller)(`/${currentTestName}`)) {
|
|
63
64
|
};
|
|
64
65
|
__decorate([
|
|
@@ -102,7 +103,7 @@ __decorate([
|
|
|
102
103
|
__metadata("design:type", String)
|
|
103
104
|
], _DeferredJoinedTestAPI.prototype, "email", void 0);
|
|
104
105
|
_DeferredJoinedTestAPI = __decorate([
|
|
105
|
-
(0,
|
|
106
|
+
(0, index_1.RegisterDataController)()
|
|
106
107
|
], _DeferredJoinedTestAPI);
|
|
107
108
|
const authorsDataset = [
|
|
108
109
|
{ name: "Alice Carter", email: "alice@example.com" },
|
|
@@ -110,22 +111,22 @@ const authorsDataset = [
|
|
|
110
111
|
{ name: "Carol Wilde", email: "carol@example.com" },
|
|
111
112
|
];
|
|
112
113
|
const orphanAuthorId = "orphan-author-id";
|
|
113
|
-
const reqCtx =
|
|
114
|
+
const reqCtx = (0, http_1.createRequestContext)();
|
|
114
115
|
describe("Query.List deferred joined self-resolution", () => {
|
|
115
|
-
it("resolves joined fields on a paged two-element destructure", async () => await
|
|
116
|
-
it("keeps page lookups after the slice and off the count pipeline", async () => await
|
|
117
|
-
it("materializes joined fields for a caller-added filter", async () => await
|
|
118
|
-
it("resolves joined fields on a directly awaited stream", async () => await
|
|
119
|
-
it("resolves joined fields on an nth datum", async () => await
|
|
120
|
-
it("orders by a joined field when the caller sorts the stream", async () => await
|
|
121
|
-
it("materializes the whole joined group when sorting through List", async () => await
|
|
122
|
-
it("exposes the deferred set and raw stream only on demand", async () => await
|
|
123
|
-
it("keeps the change feed on the raw pipeline", async () => await
|
|
124
|
-
it("scopes field aggregates to the joined fields they read", async () => await
|
|
125
|
-
it("still pages the lookups after a cast", async () => await
|
|
126
|
-
it("materializes joined fields when embedded in another query", async () => await
|
|
127
|
-
it("resolves joined fields on async iteration", async () => await
|
|
128
|
-
it("returns the unresolved names when no database is provided", async () => await
|
|
116
|
+
it("resolves joined fields on a paged two-element destructure", async () => await expectResolvesJoinedFieldsOnPagedTwoElementDestructure());
|
|
117
|
+
it("keeps page lookups after the slice and off the count pipeline", async () => await expectKeepsLookupsAfterSliceAndOffCountPipeline());
|
|
118
|
+
it("materializes joined fields for a caller-added filter", async () => await expectMaterializesJoinedFieldsForCallerFilter());
|
|
119
|
+
it("resolves joined fields on a directly awaited stream", async () => await expectResolvesJoinedFieldsOnDirectAwait());
|
|
120
|
+
it("resolves joined fields on an nth datum", async () => await expectResolvesJoinedFieldsOnNthDatum());
|
|
121
|
+
it("orders by a joined field when the caller sorts the stream", async () => await expectOrdersByJoinedFieldOnCallerSort());
|
|
122
|
+
it("materializes the whole joined group when sorting through List", async () => await expectMaterializesJoinedGroupOnListSort());
|
|
123
|
+
it("exposes the deferred set and raw stream only on demand", async () => await expectExposesDeferredSetOnDemand());
|
|
124
|
+
it("keeps the change feed on the raw pipeline", async () => await expectKeepsChangeFeedOnRawPipeline());
|
|
125
|
+
it("scopes field aggregates to the joined fields they read", async () => await expectScopesFieldAggregatesToJoinedFields());
|
|
126
|
+
it("still pages the lookups after a cast", async () => await expectStillPagesLookupsAfterCast());
|
|
127
|
+
it("materializes joined fields when embedded in another query", async () => await expectMaterializesJoinedFieldsWhenEmbedded());
|
|
128
|
+
it("resolves joined fields on async iteration", async () => await expectResolvesJoinedFieldsOnAsyncIteration());
|
|
129
|
+
it("returns the unresolved names when no database is provided", async () => await expectReturnsUnresolvedNamesWithoutDatabase());
|
|
129
130
|
});
|
|
130
131
|
async function _seedTables() {
|
|
131
132
|
await (0, interface_database_decorators_1.RegisterSchema)(schemaName);
|
|
@@ -147,22 +148,23 @@ async function _seedTables() {
|
|
|
147
148
|
{ authorId: orphanAuthorId, title: "Lost Chapter" },
|
|
148
149
|
];
|
|
149
150
|
await bookModel.insert(booksDataset);
|
|
150
|
-
const thisObj =
|
|
151
|
+
const thisObj = new _DeferredJoinedTestAPI();
|
|
151
152
|
return { thisObj, model: bookModel };
|
|
152
153
|
}
|
|
153
154
|
function listAsConsumer(harness) {
|
|
154
|
-
const meta = (0,
|
|
155
|
-
|
|
155
|
+
const meta = (0, index_1.GetDataControllerMeta)(harness.thisObj);
|
|
156
|
+
const [query, total, deferredJoined] = components_1.Query.List(harness.thisObj, meta, harness.model.table, reqCtx, undefined, undefined, harness.model.database);
|
|
157
|
+
return [query.cast(), total, deferredJoined];
|
|
156
158
|
}
|
|
157
159
|
function stageNames(staged) {
|
|
158
160
|
return staged.build().map((entry) => entry.stage);
|
|
159
161
|
}
|
|
160
|
-
async function
|
|
162
|
+
async function expectResolvesJoinedFieldsOnPagedTwoElementDestructure() {
|
|
161
163
|
const harness = await _seedTables();
|
|
162
164
|
const [query, queryTotal] = listAsConsumer(harness);
|
|
163
|
-
const page =
|
|
165
|
+
const page = await query
|
|
164
166
|
.slice(0, 10)
|
|
165
|
-
.pluck("_internal", "title", "name", "email")
|
|
167
|
+
.pluck("_internal", "title", "name", "email");
|
|
166
168
|
(0, chai_1.expect)(await queryTotal).to.equal(5);
|
|
167
169
|
(0, chai_1.expect)(page).to.have.lengthOf(5);
|
|
168
170
|
const alphaRising = page.find((book) => book.title === "Alpha Rising");
|
|
@@ -172,7 +174,7 @@ async function resolvesJoinedFieldsOnPagedTwoElementDestructure() {
|
|
|
172
174
|
(0, chai_1.expect)(lostChapter?.name).to.equal(null);
|
|
173
175
|
(0, chai_1.expect)(lostChapter?.email).to.equal(null);
|
|
174
176
|
}
|
|
175
|
-
async function
|
|
177
|
+
async function expectKeepsLookupsAfterSliceAndOffCountPipeline() {
|
|
176
178
|
const harness = await _seedTables();
|
|
177
179
|
const [query, queryTotal] = listAsConsumer(harness);
|
|
178
180
|
const countStages = stageNames(queryTotal);
|
|
@@ -184,11 +186,11 @@ async function keepsLookupsAfterSliceAndOffCountPipeline() {
|
|
|
184
186
|
const pageStages = stageNames(query.slice(0, 2));
|
|
185
187
|
(0, chai_1.expect)(pageStages.indexOf("lookup")).to.be.greaterThan(pageStages.indexOf("slice"));
|
|
186
188
|
}
|
|
187
|
-
async function
|
|
189
|
+
async function expectMaterializesJoinedFieldsForCallerFilter() {
|
|
188
190
|
const harness = await _seedTables();
|
|
189
191
|
let [query] = listAsConsumer(harness);
|
|
190
192
|
query = query.filter((row) => row.key("name").eq("Alice Carter"));
|
|
191
|
-
const matches =
|
|
193
|
+
const matches = await query;
|
|
192
194
|
(0, chai_1.expect)(matches).to.have.lengthOf(2);
|
|
193
195
|
for (const match of matches) {
|
|
194
196
|
(0, chai_1.expect)(match.name).to.equal("Alice Carter");
|
|
@@ -196,59 +198,60 @@ async function materializesJoinedFieldsForCallerFilter() {
|
|
|
196
198
|
}
|
|
197
199
|
(0, chai_1.expect)(await query.count()).to.equal(2);
|
|
198
200
|
}
|
|
199
|
-
async function
|
|
201
|
+
async function expectResolvesJoinedFieldsOnDirectAwait() {
|
|
200
202
|
const harness = await _seedTables();
|
|
201
203
|
const [query] = listAsConsumer(harness);
|
|
202
|
-
const rows =
|
|
204
|
+
const rows = await query;
|
|
203
205
|
(0, chai_1.expect)(rows).to.have.lengthOf(5);
|
|
204
206
|
const betaStories = rows.find((book) => book.title === "Beta Stories");
|
|
205
207
|
(0, chai_1.expect)(betaStories?.name).to.equal("Bob Stone");
|
|
206
208
|
(0, chai_1.expect)(betaStories?.email).to.equal("bob@example.com");
|
|
207
209
|
}
|
|
208
|
-
async function
|
|
210
|
+
async function expectResolvesJoinedFieldsOnNthDatum() {
|
|
209
211
|
const harness = await _seedTables();
|
|
210
212
|
const [query] = listAsConsumer(harness);
|
|
211
|
-
const first =
|
|
213
|
+
const first = await query.nth(0);
|
|
214
|
+
chai_1.assert.isNotNull(first);
|
|
212
215
|
(0, chai_1.expect)(first.title).to.be.a("string");
|
|
213
216
|
(0, chai_1.expect)(first).to.have.property("name");
|
|
214
217
|
(0, chai_1.expect)(first).to.have.property("email");
|
|
215
218
|
const internalKeys = Object.keys(first).filter((key) => key.startsWith("__joined_orig_"));
|
|
216
219
|
(0, chai_1.expect)(internalKeys).to.deep.equal([]);
|
|
217
220
|
(0, chai_1.expect)(first.authorId).to.be.a("string");
|
|
218
|
-
const second =
|
|
221
|
+
const second = await query.nth(1);
|
|
222
|
+
chai_1.assert.isNotNull(second);
|
|
219
223
|
(0, chai_1.expect)(second.title).to.not.equal(first.title);
|
|
220
224
|
}
|
|
221
|
-
async function
|
|
225
|
+
async function expectOrdersByJoinedFieldOnCallerSort() {
|
|
222
226
|
const harness = await _seedTables();
|
|
223
227
|
const [query] = listAsConsumer(harness);
|
|
224
|
-
const rows =
|
|
228
|
+
const rows = await query.orderBy("name", "desc");
|
|
225
229
|
(0, chai_1.expect)(rows).to.have.lengthOf(5);
|
|
226
230
|
const names = rows.map((book) => book.name).filter((name) => name !== null);
|
|
227
231
|
(0, chai_1.expect)(names).to.deep.equal([...names].sort().reverse());
|
|
228
232
|
(0, chai_1.expect)(names[0]).to.equal("Carol Wilde");
|
|
229
233
|
}
|
|
230
|
-
async function
|
|
234
|
+
async function expectMaterializesJoinedGroupOnListSort() {
|
|
231
235
|
const harness = await _seedTables();
|
|
232
|
-
const meta = (0,
|
|
236
|
+
const meta = (0, index_1.GetDataControllerMeta)(harness.thisObj);
|
|
233
237
|
const [query, , deferredJoined] = components_1.Query.List(harness.thisObj, meta, harness.model.table, reqCtx, ["name", "asc"], undefined, harness.model.database);
|
|
234
238
|
(0, chai_1.expect)(deferredJoined.size).to.equal(0);
|
|
235
|
-
const rows =
|
|
239
|
+
const rows = await query.cast().slice(0, 5);
|
|
236
240
|
const gammaTales = rows.find((book) => book.title === "Gamma Tales");
|
|
237
241
|
(0, chai_1.expect)(gammaTales?.name).to.equal("Carol Wilde");
|
|
238
242
|
(0, chai_1.expect)(gammaTales?.email).to.equal("carol@example.com");
|
|
239
243
|
}
|
|
240
|
-
async function
|
|
244
|
+
async function expectKeepsChangeFeedOnRawPipeline() {
|
|
241
245
|
const harness = await _seedTables();
|
|
242
246
|
const [query] = listAsConsumer(harness);
|
|
243
247
|
const feedStages = stageNames(query.changes());
|
|
244
248
|
(0, chai_1.expect)(feedStages).to.include("changes");
|
|
245
249
|
(0, chai_1.expect)(feedStages).to.not.include("lookup");
|
|
246
250
|
}
|
|
247
|
-
async function
|
|
251
|
+
async function expectScopesFieldAggregatesToJoinedFields() {
|
|
248
252
|
const harness = await _seedTables();
|
|
249
253
|
const [query] = listAsConsumer(harness);
|
|
250
|
-
const
|
|
251
|
-
const joinedFieldStages = stageNames(listedQuery.count("name"));
|
|
254
|
+
const joinedFieldStages = stageNames(query.count("name"));
|
|
252
255
|
(0, chai_1.expect)(joinedFieldStages).to.include("count");
|
|
253
256
|
(0, chai_1.expect)(joinedFieldStages).to.include("lookup");
|
|
254
257
|
const plainFieldStages = stageNames(query.count("title"));
|
|
@@ -258,25 +261,25 @@ async function scopesFieldAggregatesToJoinedFields() {
|
|
|
258
261
|
(0, chai_1.expect)(distinctRowStages).to.include("distinct");
|
|
259
262
|
(0, chai_1.expect)(distinctRowStages).to.include("lookup");
|
|
260
263
|
}
|
|
261
|
-
async function
|
|
264
|
+
async function expectStillPagesLookupsAfterCast() {
|
|
262
265
|
const harness = await _seedTables();
|
|
263
266
|
const [query] = listAsConsumer(harness);
|
|
264
267
|
const pageStages = stageNames(query.cast().slice(0, 2));
|
|
265
268
|
(0, chai_1.expect)(pageStages.indexOf("lookup")).to.be.greaterThan(pageStages.indexOf("slice"));
|
|
266
|
-
const page =
|
|
269
|
+
const page = await query.cast().slice(0, 10);
|
|
267
270
|
const alphaRising = page.find((book) => book.title === "Alpha Rising");
|
|
268
271
|
(0, chai_1.expect)(alphaRising?.name).to.equal("Alice Carter");
|
|
269
272
|
}
|
|
270
|
-
async function
|
|
273
|
+
async function expectMaterializesJoinedFieldsWhenEmbedded() {
|
|
271
274
|
const harness = await _seedTables();
|
|
272
275
|
const [query] = listAsConsumer(harness);
|
|
273
|
-
const unioned =
|
|
276
|
+
const unioned = await harness.model.table.union(query);
|
|
274
277
|
(0, chai_1.expect)(unioned).to.have.lengthOf(10);
|
|
275
278
|
const withJoined = unioned.filter((row) => "name" in row);
|
|
276
279
|
(0, chai_1.expect)(withJoined).to.have.lengthOf(5);
|
|
277
280
|
(0, chai_1.expect)(withJoined.filter((row) => row.name === "Alice Carter")).to.have.lengthOf(2);
|
|
278
281
|
}
|
|
279
|
-
async function
|
|
282
|
+
async function expectResolvesJoinedFieldsOnAsyncIteration() {
|
|
280
283
|
const harness = await _seedTables();
|
|
281
284
|
const [query] = listAsConsumer(harness);
|
|
282
285
|
const names = new Set();
|
|
@@ -289,23 +292,23 @@ async function resolvesJoinedFieldsOnAsyncIteration() {
|
|
|
289
292
|
(0, chai_1.expect)(names.has("Alice Carter")).to.equal(true);
|
|
290
293
|
(0, chai_1.expect)(names.has("Bob Stone")).to.equal(true);
|
|
291
294
|
}
|
|
292
|
-
async function
|
|
295
|
+
async function expectReturnsUnresolvedNamesWithoutDatabase() {
|
|
293
296
|
const harness = await _seedTables();
|
|
294
|
-
const meta = (0,
|
|
297
|
+
const meta = (0, index_1.GetDataControllerMeta)(harness.thisObj);
|
|
295
298
|
const [query, , deferredJoined] = components_1.Query.List(harness.thisObj, meta, harness.model.table, reqCtx);
|
|
296
299
|
(0, chai_1.expect)(Array.from(deferredJoined).sort()).to.deep.equal(["email", "name"]);
|
|
297
300
|
const pageStages = stageNames(query.slice(0, 5));
|
|
298
301
|
(0, chai_1.expect)(pageStages).to.not.include("lookup");
|
|
299
302
|
}
|
|
300
|
-
async function
|
|
303
|
+
async function expectExposesDeferredSetOnDemand() {
|
|
301
304
|
const harness = await _seedTables();
|
|
302
|
-
const meta = (0,
|
|
305
|
+
const meta = (0, index_1.GetDataControllerMeta)(harness.thisObj);
|
|
303
306
|
const [, , resolvedByLayer] = listAsConsumer(harness);
|
|
304
307
|
(0, chai_1.expect)(resolvedByLayer.size).to.equal(0);
|
|
305
308
|
const [rawQuery, rawTotal, deferredJoined] = components_1.Query.List(harness.thisObj, meta, harness.model.table, reqCtx, undefined, undefined, harness.model.database, { exposeDeferredJoined: true });
|
|
306
309
|
(0, chai_1.expect)(Array.from(deferredJoined).sort()).to.deep.equal(["email", "name"]);
|
|
307
310
|
(0, chai_1.expect)(await rawTotal).to.equal(5);
|
|
308
|
-
const rawRows =
|
|
311
|
+
const rawRows = await rawQuery.slice(0, 5);
|
|
309
312
|
(0, chai_1.expect)(rawRows).to.have.lengthOf(5);
|
|
310
313
|
for (const row of rawRows) {
|
|
311
314
|
(0, chai_1.expect)(row).to.not.have.property("name");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deferred_joined.test.js","sourceRoot":"","sources":["../../../src/tests/components/deferred_joined.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"deferred_joined.test.js","sourceRoot":"","sources":["../../../src/tests/components/deferred_joined.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,64 @@
|
|
|
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
|
+
const metadata_1 = require("../../metadata");
|
|
7
|
+
const http_1 = require("../internal/http");
|
|
8
|
+
const meta = new metadata_1.DataAPIMeta(Object);
|
|
9
|
+
function requestOf(query) {
|
|
10
|
+
return (0, http_1.createRequestContext)(`http://localhost/?${query}`);
|
|
11
|
+
}
|
|
12
|
+
describe("Parameters.ExtractGeneric", () => {
|
|
13
|
+
it("skips an extractor of undefined like an absent key", () => {
|
|
14
|
+
const params = components_1.Parameters.ExtractGeneric(requestOf("a=1"), meta, { a: undefined });
|
|
15
|
+
(0, chai_1.expect)(params).to.deep.equal({});
|
|
16
|
+
});
|
|
17
|
+
it("converts each field with its extractor, leaving out what the request omits", () => {
|
|
18
|
+
const params = components_1.Parameters.ExtractGeneric(requestOf("count=3.9&ratio=0.5&active=0&name=x&tags=a&tags=b"), meta, {
|
|
19
|
+
count: components_1.Parameters.FromSearch.int,
|
|
20
|
+
ratio: components_1.Parameters.FromSearch.number,
|
|
21
|
+
active: components_1.Parameters.FromSearch.bool,
|
|
22
|
+
name: components_1.Parameters.FromSearch.string,
|
|
23
|
+
tags: components_1.Parameters.FromSearch.strings,
|
|
24
|
+
absent: components_1.Parameters.FromSearch.int,
|
|
25
|
+
});
|
|
26
|
+
(0, chai_1.expect)(params).to.deep.equal({
|
|
27
|
+
count: 3,
|
|
28
|
+
ratio: 0.5,
|
|
29
|
+
active: false,
|
|
30
|
+
name: "x",
|
|
31
|
+
tags: ["a", "b"],
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
it("answers an empty list for a multi-value field the request omits", () => {
|
|
35
|
+
const params = components_1.Parameters.ExtractGeneric(requestOf(""), meta, { ids: components_1.Parameters.FromSearch.ints });
|
|
36
|
+
(0, chai_1.expect)(params).to.deep.equal({ ids: [] });
|
|
37
|
+
});
|
|
38
|
+
it("keeps a field the route's options set over the request's value", () => {
|
|
39
|
+
const ctx = Object.assign(requestOf("limit=5"), {
|
|
40
|
+
dataAPIEntry: {
|
|
41
|
+
options: { limit: 9 },
|
|
42
|
+
callback: { args: [], method: "get", func: () => undefined },
|
|
43
|
+
},
|
|
44
|
+
});
|
|
45
|
+
const params = components_1.Parameters.ExtractGeneric(ctx, meta, {
|
|
46
|
+
limit: components_1.Parameters.FromSearch.int,
|
|
47
|
+
});
|
|
48
|
+
(0, chai_1.expect)(params.limit).to.equal(9);
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
describe("Query.GetModel", () => {
|
|
52
|
+
it("answers 500 for a controller whose model field holds no model", () => {
|
|
53
|
+
const keyed = new metadata_1.DataAPIMeta(Object).setModelKey("model");
|
|
54
|
+
let status;
|
|
55
|
+
try {
|
|
56
|
+
components_1.Query.GetModel({}, keyed);
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
status = error instanceof interface_api_1.HTTPResult ? error.getStatus() : undefined;
|
|
60
|
+
}
|
|
61
|
+
(0, chai_1.expect)(status).to.equal(500);
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
//# sourceMappingURL=extract_generic.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"extract_generic.test.js","sourceRoot":"","sources":["../../../src/tests/components/extract_generic.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const chai_1 = require("chai");
|
|
4
|
+
const components_1 = require("../../components");
|
|
5
|
+
const metadata_1 = require("../../metadata");
|
|
6
|
+
const http_1 = require("../internal/http");
|
|
7
|
+
const meta = new metadata_1.DataAPIMeta(Object).setFilter("title", () => true);
|
|
8
|
+
function context(query) {
|
|
9
|
+
return Object.assign((0, http_1.createRequestContext)(`http://localhost/?${query}`), {
|
|
10
|
+
dataAPIEntry: { options: undefined },
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
describe("Parameters.ExtractFilters - comparisons", () => {
|
|
14
|
+
for (const comparison of ["eq", "ne", "gt", "ge", "lt", "le"]) {
|
|
15
|
+
it(`reads the ${comparison} comparison`, () => {
|
|
16
|
+
(0, chai_1.expect)(components_1.Parameters.ExtractFilters(context(`filter_title=${comparison}:a:b`), meta)).to.eql({ title: ["a:b", comparison] });
|
|
17
|
+
});
|
|
18
|
+
}
|
|
19
|
+
it("reads a value without comparison as eq", () => {
|
|
20
|
+
(0, chai_1.expect)(components_1.Parameters.ExtractFilters(context("filter_title=abc"), meta)).to.eql({ title: ["abc", "eq"] });
|
|
21
|
+
});
|
|
22
|
+
it("keeps a colon of the value after an explicit eq", () => {
|
|
23
|
+
(0, chai_1.expect)(components_1.Parameters.ExtractFilters(context("filter_title=eq:http://example.com"), meta)).to.eql({ title: ["http://example.com", "eq"] });
|
|
24
|
+
});
|
|
25
|
+
it("hands a comparison the default filter lacks to a custom filter", () => {
|
|
26
|
+
for (const comparison of ["is", "like", "include", "http"]) {
|
|
27
|
+
(0, chai_1.expect)(components_1.Parameters.ExtractFilters(context(`filter_title=${comparison}:abc`), meta), comparison).to.eql({ title: ["abc", comparison] });
|
|
28
|
+
}
|
|
29
|
+
});
|
|
30
|
+
it("hands an unnamed value that contains a colon to a custom filter", () => {
|
|
31
|
+
(0, chai_1.expect)(components_1.Parameters.ExtractFilters(context("filter_title=http://example.com"), meta)).to.eql({ title: ["//example.com", "http"] });
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=filter_comparisons.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filter_comparisons.test.js","sourceRoot":"","sources":["../../../src/tests/components/filter_comparisons.test.ts"],"names":[],"mappings":";;AAAA,+BAA8B;AAE9B,iDAA8C;AAC9C,6CAA6C;AAE7C,2CAAwD;AAExD,MAAM,IAAI,GAAG,IAAI,sBAAW,CAAC,MAAM,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;AAEpE,SAAS,OAAO,CAAC,KAAa;IAC5B,OAAO,MAAM,CAAC,MAAM,CAAC,IAAA,2BAAoB,EAAC,qBAAqB,KAAK,EAAE,CAAC,EAAE;QACvE,YAAY,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE;KACrC,CAAC,CAAC;AACL,CAAC;AAED,QAAQ,CAAC,yCAAyC,EAAE,GAAG,EAAE;IACvD,KAAK,MAAM,UAAU,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC9D,EAAE,CAAC,aAAa,UAAU,aAAa,EAAE,GAAG,EAAE;YAC5C,IAAA,aAAM,EACJ,uBAAU,CAAC,cAAc,CACvB,OAAO,CAAC,gBAAgB,UAAU,MAAM,CAAC,EACzC,IAAI,CACL,CACF,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAED,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,IAAA,aAAM,EAAC,uBAAU,CAAC,cAAc,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CACzE,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CACzB,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iDAAiD,EAAE,GAAG,EAAE;QACzD,IAAA,aAAM,EACJ,uBAAU,CAAC,cAAc,CACvB,OAAO,CAAC,oCAAoC,CAAC,EAC7C,IAAI,CACL,CACF,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,oBAAoB,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,gEAAgE,EAAE,GAAG,EAAE;QACxE,KAAK,MAAM,UAAU,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,CAAC,EAAE,CAAC;YAC3D,IAAA,aAAM,EACJ,uBAAU,CAAC,cAAc,CACvB,OAAO,CAAC,gBAAgB,UAAU,MAAM,CAAC,EACzC,IAAI,CACL,EACD,UAAU,CACX,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC;QAC3C,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,IAAA,aAAM,EACJ,uBAAU,CAAC,cAAc,CACvB,OAAO,CAAC,iCAAiC,CAAC,EAC1C,IAAI,CACL,CACF,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC,eAAe,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,182 @@
|
|
|
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 chai_1 = require("chai");
|
|
17
|
+
const zod_1 = require("zod");
|
|
18
|
+
const interface_api_1 = require("@antelopejs/interface-api");
|
|
19
|
+
const interface_database_1 = require("@antelopejs/interface-database");
|
|
20
|
+
const index_1 = require("../../index");
|
|
21
|
+
const metadata_1 = require("../../metadata");
|
|
22
|
+
const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
|
|
23
|
+
const http_1 = require("../internal/http");
|
|
24
|
+
const utils_1 = require("../utils");
|
|
25
|
+
const currentTestName = node_path_1.default
|
|
26
|
+
.basename(__filename)
|
|
27
|
+
.replace(/\.test\.(ts|js)$/, "");
|
|
28
|
+
const pageTableName = `pages-${currentTestName}`;
|
|
29
|
+
const schemaName = "default";
|
|
30
|
+
let Page = class Page extends interface_database_decorators_1.Table {
|
|
31
|
+
};
|
|
32
|
+
__decorate([
|
|
33
|
+
(0, interface_database_decorators_1.Field)("string"),
|
|
34
|
+
__metadata("design:type", String)
|
|
35
|
+
], Page.prototype, "title", void 0);
|
|
36
|
+
__decorate([
|
|
37
|
+
(0, interface_database_decorators_1.Field)("string"),
|
|
38
|
+
__metadata("design:type", String)
|
|
39
|
+
], Page.prototype, "url", void 0);
|
|
40
|
+
Page = __decorate([
|
|
41
|
+
(0, interface_database_decorators_1.RegisterTable)(pageTableName, schemaName)
|
|
42
|
+
], Page);
|
|
43
|
+
class PageModel extends (0, interface_database_decorators_1.BasicDataModel)(Page, pageTableName) {
|
|
44
|
+
}
|
|
45
|
+
const listSchema = (0, http_1.listResponseSchema)(zod_1.z.looseObject({ title: zod_1.z.string(), url: zod_1.z.string() }));
|
|
46
|
+
async function seedPages() {
|
|
47
|
+
await (0, interface_database_decorators_1.RegisterSchema)(schemaName);
|
|
48
|
+
const schema = interface_database_1.Schema.get(schemaName);
|
|
49
|
+
if (schema) {
|
|
50
|
+
await schema.instance().table(pageTableName).delete();
|
|
51
|
+
}
|
|
52
|
+
await new PageModel((0, utils_1.getSchemaInstance)(schemaName)).insert([
|
|
53
|
+
{ title: "alpha", url: "http://example.com" },
|
|
54
|
+
{ title: "beta", url: "http://example.org" },
|
|
55
|
+
]);
|
|
56
|
+
}
|
|
57
|
+
async function createController(testName) {
|
|
58
|
+
let _FilterListAPI = class _FilterListAPI extends (0, index_1.DataController)(Page, { list: index_1.DefaultRoutes.List }, (0, interface_api_1.Controller)(`/${testName}`)) {
|
|
59
|
+
};
|
|
60
|
+
__decorate([
|
|
61
|
+
(0, metadata_1.ModelReference)(),
|
|
62
|
+
(0, interface_database_decorators_1.Model)(PageModel),
|
|
63
|
+
__metadata("design:type", PageModel)
|
|
64
|
+
], _FilterListAPI.prototype, "pageModel", void 0);
|
|
65
|
+
__decorate([
|
|
66
|
+
(0, metadata_1.Listable)(),
|
|
67
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly),
|
|
68
|
+
(0, metadata_1.Filter)(undefined, false),
|
|
69
|
+
__metadata("design:type", String)
|
|
70
|
+
], _FilterListAPI.prototype, "title", void 0);
|
|
71
|
+
__decorate([
|
|
72
|
+
(0, metadata_1.Listable)(),
|
|
73
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly),
|
|
74
|
+
(0, metadata_1.Filter)(undefined, false),
|
|
75
|
+
__metadata("design:type", String)
|
|
76
|
+
], _FilterListAPI.prototype, "url", void 0);
|
|
77
|
+
_FilterListAPI = __decorate([
|
|
78
|
+
(0, index_1.RegisterDataController)()
|
|
79
|
+
], _FilterListAPI);
|
|
80
|
+
await seedPages();
|
|
81
|
+
}
|
|
82
|
+
async function createCustomFilterController(testName) {
|
|
83
|
+
let _CustomFilterListAPI = class _CustomFilterListAPI extends (0, index_1.DataController)(Page, { list: index_1.DefaultRoutes.List }, (0, interface_api_1.Controller)(`/${testName}`)) {
|
|
84
|
+
};
|
|
85
|
+
__decorate([
|
|
86
|
+
(0, metadata_1.ModelReference)(),
|
|
87
|
+
(0, interface_database_decorators_1.Model)(PageModel),
|
|
88
|
+
__metadata("design:type", PageModel)
|
|
89
|
+
], _CustomFilterListAPI.prototype, "pageModel", void 0);
|
|
90
|
+
__decorate([
|
|
91
|
+
(0, metadata_1.Listable)(),
|
|
92
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly),
|
|
93
|
+
(0, metadata_1.Filter)((_context, proxy, _key, value, mode) => `${mode}` === "is" ? proxy.eq(value) : proxy.ne(value), false),
|
|
94
|
+
__metadata("design:type", String)
|
|
95
|
+
], _CustomFilterListAPI.prototype, "title", void 0);
|
|
96
|
+
__decorate([
|
|
97
|
+
(0, metadata_1.Listable)(),
|
|
98
|
+
(0, metadata_1.Access)(metadata_1.AccessMode.ReadOnly),
|
|
99
|
+
(0, metadata_1.Filter)((_context, proxy, _key, value, mode) => `${mode}` === "http" ? proxy.eq(`http:${value}`) : proxy.eq(value), false),
|
|
100
|
+
__metadata("design:type", String)
|
|
101
|
+
], _CustomFilterListAPI.prototype, "url", void 0);
|
|
102
|
+
_CustomFilterListAPI = __decorate([
|
|
103
|
+
(0, index_1.RegisterDataController)()
|
|
104
|
+
], _CustomFilterListAPI);
|
|
105
|
+
await seedPages();
|
|
106
|
+
}
|
|
107
|
+
describe("List route - filter comparisons", () => {
|
|
108
|
+
it("answers 400 for an unknown comparison", async () => {
|
|
109
|
+
await createController("unknown-comparison");
|
|
110
|
+
const response = await (0, utils_1.listRequest)("unknown-comparison", {
|
|
111
|
+
filter_title: "like:alp",
|
|
112
|
+
});
|
|
113
|
+
(0, chai_1.expect)(response.status, await response.clone().text()).to.equal(400);
|
|
114
|
+
});
|
|
115
|
+
it("answers 400 for a comparison named like an Object.prototype member", async () => {
|
|
116
|
+
await createController("prototype-comparison");
|
|
117
|
+
for (const comparison of [
|
|
118
|
+
"constructor",
|
|
119
|
+
"toString",
|
|
120
|
+
"hasOwnProperty",
|
|
121
|
+
"valueOf",
|
|
122
|
+
"__proto__",
|
|
123
|
+
]) {
|
|
124
|
+
const response = await (0, utils_1.listRequest)("prototype-comparison", {
|
|
125
|
+
filter_title: `${comparison}:alpha`,
|
|
126
|
+
});
|
|
127
|
+
(0, chai_1.expect)(response.status, comparison).to.equal(400);
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
it("answers 400 when one of several filters of a field is unknown", async () => {
|
|
131
|
+
await createController("several-comparisons");
|
|
132
|
+
const response = await (0, utils_1.request)("several-comparisons", "list", "GET", undefined, [
|
|
133
|
+
["filter_title", "ne:alpha"],
|
|
134
|
+
["filter_title", "like:b"],
|
|
135
|
+
]);
|
|
136
|
+
(0, chai_1.expect)(response.status, await response.clone().text()).to.equal(400);
|
|
137
|
+
});
|
|
138
|
+
it("answers 400 for an unnamed value that contains a colon", async () => {
|
|
139
|
+
await createController("colon-value");
|
|
140
|
+
const response = await (0, utils_1.listRequest)("colon-value", {
|
|
141
|
+
filter_url: "http://example.com",
|
|
142
|
+
});
|
|
143
|
+
(0, chai_1.expect)(response.status, await response.clone().text()).to.equal(400);
|
|
144
|
+
});
|
|
145
|
+
it("filters a value that contains a colon after an explicit eq", async () => {
|
|
146
|
+
await createController("explicit-eq");
|
|
147
|
+
const response = await (0, utils_1.listRequest)("explicit-eq", {
|
|
148
|
+
filter_url: "eq:http://example.com",
|
|
149
|
+
});
|
|
150
|
+
(0, chai_1.expect)(response.status, await response.clone().text()).to.equal(200);
|
|
151
|
+
const data = await (0, http_1.readJson)(listSchema, response);
|
|
152
|
+
(0, chai_1.expect)(data.results.map(({ title }) => title)).to.eql(["alpha"]);
|
|
153
|
+
});
|
|
154
|
+
it("filters with a known comparison", async () => {
|
|
155
|
+
await createController("known-comparison");
|
|
156
|
+
const response = await (0, utils_1.listRequest)("known-comparison", {
|
|
157
|
+
filter_title: "ne:alpha",
|
|
158
|
+
});
|
|
159
|
+
(0, chai_1.expect)(response.status, await response.clone().text()).to.equal(200);
|
|
160
|
+
const data = await (0, http_1.readJson)(listSchema, response);
|
|
161
|
+
(0, chai_1.expect)(data.results.map(({ title }) => title)).to.eql(["beta"]);
|
|
162
|
+
});
|
|
163
|
+
it("hands the comparison of a custom filter to its callback", async () => {
|
|
164
|
+
await createCustomFilterController("custom-comparison");
|
|
165
|
+
const response = await (0, utils_1.listRequest)("custom-comparison", {
|
|
166
|
+
filter_title: "is:alpha",
|
|
167
|
+
});
|
|
168
|
+
(0, chai_1.expect)(response.status, await response.clone().text()).to.equal(200);
|
|
169
|
+
const data = await (0, http_1.readJson)(listSchema, response);
|
|
170
|
+
(0, chai_1.expect)(data.results.map(({ title }) => title)).to.eql(["alpha"]);
|
|
171
|
+
});
|
|
172
|
+
it("hands an unnamed value that contains a colon to a custom filter", async () => {
|
|
173
|
+
await createCustomFilterController("custom-colon-value");
|
|
174
|
+
const response = await (0, utils_1.listRequest)("custom-colon-value", {
|
|
175
|
+
filter_url: "http://example.com",
|
|
176
|
+
});
|
|
177
|
+
(0, chai_1.expect)(response.status, await response.clone().text()).to.equal(200);
|
|
178
|
+
const data = await (0, http_1.readJson)(listSchema, response);
|
|
179
|
+
(0, chai_1.expect)(data.results.map(({ title }) => title)).to.eql(["alpha"]);
|
|
180
|
+
});
|
|
181
|
+
});
|
|
182
|
+
//# sourceMappingURL=filter_list_route.test.js.map
|