@snowtop/ent 0.1.0-alpha16 → 0.1.0-alpha160-test2
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/action/action.d.ts +25 -14
- package/action/action.js +22 -7
- package/action/executor.d.ts +16 -3
- package/action/executor.js +89 -28
- package/action/experimental_action.d.ts +25 -16
- package/action/experimental_action.js +34 -14
- package/action/index.d.ts +4 -1
- package/action/index.js +7 -1
- package/action/operations.d.ts +126 -0
- package/action/operations.js +686 -0
- package/action/orchestrator.d.ts +43 -12
- package/action/orchestrator.js +461 -101
- package/action/relative_value.d.ts +47 -0
- package/action/relative_value.js +125 -0
- package/action/transaction.d.ts +10 -0
- package/action/transaction.js +23 -0
- package/auth/auth.d.ts +1 -1
- package/core/base.d.ts +56 -23
- package/core/base.js +7 -1
- package/core/clause.d.ts +103 -39
- package/core/clause.js +430 -66
- package/core/config.d.ts +13 -3
- package/core/config.js +10 -1
- package/core/const.d.ts +3 -0
- package/core/const.js +6 -0
- package/core/context.d.ts +6 -3
- package/core/context.js +22 -3
- package/core/convert.d.ts +1 -1
- package/core/date.js +1 -5
- package/core/db.d.ts +12 -8
- package/core/db.js +21 -9
- package/core/ent.d.ts +99 -95
- package/core/ent.js +550 -602
- package/core/global_schema.d.ts +7 -0
- package/core/global_schema.js +51 -0
- package/core/loaders/assoc_count_loader.d.ts +5 -2
- package/core/loaders/assoc_count_loader.js +19 -3
- package/core/loaders/assoc_edge_loader.d.ts +2 -3
- package/core/loaders/assoc_edge_loader.js +23 -17
- package/core/loaders/index.d.ts +1 -2
- package/core/loaders/index.js +1 -5
- package/core/loaders/loader.d.ts +3 -3
- package/core/loaders/loader.js +4 -21
- package/core/loaders/object_loader.d.ts +30 -9
- package/core/loaders/object_loader.js +226 -79
- package/core/loaders/query_loader.d.ts +7 -13
- package/core/loaders/query_loader.js +60 -24
- package/core/loaders/raw_count_loader.d.ts +1 -0
- package/core/loaders/raw_count_loader.js +8 -3
- package/core/logger.d.ts +1 -1
- package/core/logger.js +1 -0
- package/core/privacy.d.ts +26 -16
- package/core/privacy.js +68 -51
- package/core/query/assoc_query.d.ts +3 -2
- package/core/query/assoc_query.js +10 -2
- package/core/query/custom_clause_query.d.ts +29 -0
- package/core/query/custom_clause_query.js +105 -0
- package/core/query/custom_query.d.ts +19 -2
- package/core/query/custom_query.js +111 -13
- package/core/query/index.d.ts +1 -0
- package/core/query/index.js +3 -1
- package/core/query/query.d.ts +18 -4
- package/core/query/query.js +135 -58
- package/core/query/shared_assoc_test.d.ts +2 -1
- package/core/query/shared_assoc_test.js +186 -55
- package/core/query/shared_test.d.ts +9 -2
- package/core/query/shared_test.js +529 -236
- package/core/query_impl.d.ts +8 -0
- package/core/query_impl.js +28 -0
- package/core/viewer.d.ts +2 -0
- package/core/viewer.js +3 -1
- package/graphql/graphql.d.ts +108 -22
- package/graphql/graphql.js +183 -137
- package/graphql/graphql_field_helpers.d.ts +9 -3
- package/graphql/graphql_field_helpers.js +22 -2
- package/graphql/index.d.ts +2 -2
- package/graphql/index.js +5 -5
- package/graphql/query/connection_type.d.ts +9 -9
- package/graphql/query/shared_assoc_test.js +1 -1
- package/graphql/query/shared_edge_connection.js +1 -19
- package/graphql/scalars/orderby_direction.d.ts +2 -0
- package/graphql/scalars/orderby_direction.js +15 -0
- package/imports/dataz/example1/_auth.js +128 -47
- package/imports/dataz/example1/_viewer.js +87 -39
- package/imports/index.d.ts +7 -2
- package/imports/index.js +20 -5
- package/index.d.ts +23 -5
- package/index.js +35 -10
- package/package.json +20 -19
- package/parse_schema/parse.d.ts +33 -9
- package/parse_schema/parse.js +182 -33
- package/schema/base_schema.d.ts +13 -3
- package/schema/base_schema.js +13 -0
- package/schema/field.d.ts +78 -21
- package/schema/field.js +232 -72
- package/schema/index.d.ts +2 -2
- package/schema/index.js +7 -2
- package/schema/json_field.d.ts +16 -4
- package/schema/json_field.js +32 -2
- package/schema/schema.d.ts +109 -20
- package/schema/schema.js +42 -53
- package/schema/struct_field.d.ts +15 -3
- package/schema/struct_field.js +117 -22
- package/schema/union_field.d.ts +1 -1
- package/scripts/custom_compiler.js +12 -8
- package/scripts/custom_graphql.js +167 -64
- package/scripts/migrate_v0.1.js +36 -0
- package/scripts/move_types.js +120 -0
- package/scripts/read_schema.js +22 -7
- package/testutils/action/complex_schemas.d.ts +69 -0
- package/testutils/action/complex_schemas.js +405 -0
- package/testutils/builder.d.ts +37 -41
- package/testutils/builder.js +66 -46
- package/testutils/db/fixture.d.ts +10 -0
- package/testutils/db/fixture.js +26 -0
- package/testutils/db/{test_db.d.ts → temp_db.d.ts} +32 -8
- package/testutils/db/{test_db.js → temp_db.js} +251 -48
- package/testutils/db/value.d.ts +7 -0
- package/testutils/db/value.js +251 -0
- package/testutils/db_mock.d.ts +16 -4
- package/testutils/db_mock.js +52 -9
- package/testutils/db_time_zone.d.ts +4 -0
- package/testutils/db_time_zone.js +41 -0
- package/testutils/ent-graphql-tests/index.d.ts +7 -1
- package/testutils/ent-graphql-tests/index.js +56 -26
- package/testutils/fake_comms.js +1 -1
- package/testutils/fake_data/const.d.ts +2 -1
- package/testutils/fake_data/const.js +3 -0
- package/testutils/fake_data/fake_contact.d.ts +7 -3
- package/testutils/fake_data/fake_contact.js +13 -7
- package/testutils/fake_data/fake_event.d.ts +4 -1
- package/testutils/fake_data/fake_event.js +7 -6
- package/testutils/fake_data/fake_tag.d.ts +36 -0
- package/testutils/fake_data/fake_tag.js +89 -0
- package/testutils/fake_data/fake_user.d.ts +8 -5
- package/testutils/fake_data/fake_user.js +31 -19
- package/testutils/fake_data/index.js +5 -1
- package/testutils/fake_data/internal.d.ts +2 -0
- package/testutils/fake_data/internal.js +7 -1
- package/testutils/fake_data/tag_query.d.ts +13 -0
- package/testutils/fake_data/tag_query.js +48 -0
- package/testutils/fake_data/test_helpers.d.ts +14 -6
- package/testutils/fake_data/test_helpers.js +31 -15
- package/testutils/fake_data/user_query.d.ts +16 -6
- package/testutils/fake_data/user_query.js +72 -23
- package/testutils/fake_log.js +1 -1
- package/testutils/parse_sql.d.ts +6 -0
- package/testutils/parse_sql.js +16 -2
- package/testutils/test_edge_global_schema.d.ts +15 -0
- package/testutils/test_edge_global_schema.js +62 -0
- package/testutils/write.d.ts +2 -2
- package/testutils/write.js +33 -7
- package/tsc/ast.d.ts +15 -3
- package/tsc/ast.js +114 -23
- package/tsc/compilerOptions.js +5 -1
- package/tsc/move_generated.d.ts +1 -0
- package/tsc/move_generated.js +164 -0
- package/tsc/transform.d.ts +22 -0
- package/tsc/transform.js +182 -0
- package/tsc/transform_action.d.ts +22 -0
- package/tsc/transform_action.js +183 -0
- package/tsc/transform_ent.d.ts +17 -0
- package/tsc/transform_ent.js +60 -0
- package/tsc/transform_schema.d.ts +27 -0
- package/{scripts → tsc}/transform_schema.js +146 -117
- package/core/loaders/index_loader.d.ts +0 -14
- package/core/loaders/index_loader.js +0 -27
- package/graphql/enums.d.ts +0 -3
- package/graphql/enums.js +0 -25
- package/scripts/move_generated.js +0 -141
- package/scripts/transform_actions.js +0 -266
- package/scripts/transform_code.d.ts +0 -1
- package/scripts/transform_code.js +0 -111
- package/scripts/transform_schema.d.ts +0 -1
- /package/scripts/{move_generated.d.ts → migrate_v0.1.d.ts} +0 -0
- /package/scripts/{transform_actions.d.ts → move_types.d.ts} +0 -0
|
@@ -1,33 +1,18 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
-
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
|
|
5
|
-
}) : (function(o, m, k, k2) {
|
|
6
|
-
if (k2 === undefined) k2 = k;
|
|
7
|
-
o[k2] = m[k];
|
|
8
|
-
}));
|
|
9
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
10
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
11
|
-
}) : function(o, v) {
|
|
12
|
-
o["default"] = v;
|
|
13
|
-
});
|
|
14
|
-
var __importStar = (this && this.__importStar) || function (mod) {
|
|
15
|
-
if (mod && mod.__esModule) return mod;
|
|
16
|
-
var result = {};
|
|
17
|
-
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
18
|
-
__setModuleDefault(result, mod);
|
|
19
|
-
return result;
|
|
20
|
-
};
|
|
21
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
22
3
|
exports.assocTests = void 0;
|
|
23
|
-
const
|
|
4
|
+
const base_1 = require("../base");
|
|
24
5
|
const ent_1 = require("../ent");
|
|
25
6
|
const viewer_1 = require("../viewer");
|
|
26
7
|
const jest_date_mock_1 = require("jest-date-mock");
|
|
27
8
|
const index_1 = require("../../testutils/fake_data/index");
|
|
28
9
|
const test_helpers_1 = require("../../testutils/fake_data/test_helpers");
|
|
29
|
-
const
|
|
30
|
-
|
|
10
|
+
const clause_1 = require("../clause");
|
|
11
|
+
const builder_1 = require("../../testutils/builder");
|
|
12
|
+
const luxon_1 = require("luxon");
|
|
13
|
+
const convert_1 = require("../convert");
|
|
14
|
+
function assocTests(ml, global = false) {
|
|
15
|
+
ml.mock();
|
|
31
16
|
describe("custom edge", () => {
|
|
32
17
|
let user1, user2;
|
|
33
18
|
beforeEach(async () => {
|
|
@@ -67,29 +52,37 @@ function assocTests() {
|
|
|
67
52
|
function firstNEntsFilter(contacts) {
|
|
68
53
|
return contacts.reverse().slice(0, N);
|
|
69
54
|
}
|
|
70
|
-
function
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
expect(
|
|
55
|
+
function getWhereClause(query) {
|
|
56
|
+
let execArray = /^SELECT (.+) FROM (.+) WHERE (.+)?/.exec(query.query);
|
|
57
|
+
return execArray?.[3];
|
|
58
|
+
}
|
|
59
|
+
function verifyQuery({ length = 1, numQueries = 1, limit = (0, ent_1.getDefaultLimit)(), disablePaginationBump = false, }) {
|
|
60
|
+
expect(ml.logs.length).toBe(length);
|
|
76
61
|
for (let i = 0; i < numQueries; i++) {
|
|
77
|
-
const
|
|
62
|
+
const whereClause = getWhereClause(ml.logs[i]);
|
|
78
63
|
let expLimit = disablePaginationBump ? limit : limit + 1;
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
64
|
+
if (global) {
|
|
65
|
+
expect(whereClause, `${i}`).toBe(
|
|
66
|
+
// default limit
|
|
67
|
+
`${(0, clause_1.And)((0, clause_1.Eq)("id1", ""), (0, clause_1.Eq)("edge_type", ""), (0, clause_1.Eq)("deleted_at", null)).clause(1)} ORDER BY time DESC, id2 DESC LIMIT ${expLimit}`);
|
|
68
|
+
}
|
|
69
|
+
else {
|
|
70
|
+
expect(whereClause, `${i}`).toBe(
|
|
71
|
+
// default limit
|
|
72
|
+
`${(0, clause_1.And)((0, clause_1.Eq)("id1", ""), (0, clause_1.Eq)("edge_type", "")).clause(1)} ORDER BY time DESC, id2 DESC LIMIT ${expLimit}`);
|
|
73
|
+
}
|
|
82
74
|
}
|
|
83
75
|
}
|
|
84
76
|
function verifyCountQuery({ length = 1, numQueries = 1 }) {
|
|
85
|
-
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
const queries = db_mock_1.QueryRecorder.getCurrentQueries();
|
|
89
|
-
expect(queries.length).toBe(length);
|
|
77
|
+
expect(ml.logs.length).toBe(length);
|
|
90
78
|
for (let i = 0; i < numQueries; i++) {
|
|
91
|
-
const
|
|
92
|
-
|
|
79
|
+
const whereClause = getWhereClause(ml.logs[i]);
|
|
80
|
+
if (global) {
|
|
81
|
+
expect(whereClause).toBe(`${(0, clause_1.And)((0, clause_1.Eq)("id1", ""), (0, clause_1.Eq)("edge_type", ""), (0, clause_1.Eq)("deleted_at", null)).clause(1)}`);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
expect(whereClause).toBe(`${(0, clause_1.And)((0, clause_1.Eq)("id1", ""), (0, clause_1.Eq)("edge_type", "")).clause(1)}`);
|
|
85
|
+
}
|
|
93
86
|
}
|
|
94
87
|
}
|
|
95
88
|
// TODO need to test multi-ids with id1s that aren't visible...
|
|
@@ -103,16 +96,18 @@ function assocTests() {
|
|
|
103
96
|
}
|
|
104
97
|
async beforeEach() {
|
|
105
98
|
let [user1, user2, user3] = await Promise.all([
|
|
106
|
-
(0, test_helpers_1.createAllContacts)({ firstName: "Jon", lastName: "Snow" }),
|
|
107
|
-
(0, test_helpers_1.createAllContacts)({
|
|
108
|
-
|
|
99
|
+
(0, test_helpers_1.createAllContacts)({ input: { firstName: "Jon", lastName: "Snow" } }),
|
|
100
|
+
(0, test_helpers_1.createAllContacts)({
|
|
101
|
+
input: { firstName: "Aegon", lastName: "Targaryen" },
|
|
102
|
+
}),
|
|
103
|
+
(0, test_helpers_1.createAllContacts)({ input: { firstName: "Ned", lastName: "Stark" } }),
|
|
109
104
|
]);
|
|
110
105
|
// modify contacts as needed
|
|
111
106
|
user1[1] = this.ents(user1[1]);
|
|
112
107
|
user2[1] = this.ents(user2[1]);
|
|
113
108
|
user3[1] = this.ents(user3[1]);
|
|
114
109
|
this.dataz = [user1, user2, user3];
|
|
115
|
-
|
|
110
|
+
ml.clear();
|
|
116
111
|
}
|
|
117
112
|
getQuery(viewer) {
|
|
118
113
|
return this.filter(index_1.UserToContactsQuery.query(viewer || new viewer_1.LoggedOutViewer(), this.dataz.map((data) => data[0])));
|
|
@@ -127,7 +122,7 @@ function assocTests() {
|
|
|
127
122
|
verifyQuery({
|
|
128
123
|
length: this.dataz.length,
|
|
129
124
|
numQueries: this.dataz.length,
|
|
130
|
-
limit: this.limit || ent_1.
|
|
125
|
+
limit: this.limit || (0, ent_1.getDefaultLimit)(),
|
|
131
126
|
});
|
|
132
127
|
}
|
|
133
128
|
// rawCount isn't affected by filters...
|
|
@@ -150,7 +145,7 @@ function assocTests() {
|
|
|
150
145
|
verifyQuery({
|
|
151
146
|
length: this.dataz.length,
|
|
152
147
|
numQueries: this.dataz.length,
|
|
153
|
-
limit: this.limit || ent_1.
|
|
148
|
+
limit: this.limit || (0, ent_1.getDefaultLimit)(),
|
|
154
149
|
});
|
|
155
150
|
}
|
|
156
151
|
async testEdges() {
|
|
@@ -163,7 +158,7 @@ function assocTests() {
|
|
|
163
158
|
verifyQuery({
|
|
164
159
|
length: this.dataz.length,
|
|
165
160
|
numQueries: this.dataz.length,
|
|
166
|
-
limit: this.limit || ent_1.
|
|
161
|
+
limit: this.limit || (0, ent_1.getDefaultLimit)(),
|
|
167
162
|
});
|
|
168
163
|
}
|
|
169
164
|
async testEnts() {
|
|
@@ -187,7 +182,7 @@ function assocTests() {
|
|
|
187
182
|
// and then twice to fetch all the nodes for the contacts
|
|
188
183
|
length: this.dataz.length + this.dataz.length + this.dataz.length * 2,
|
|
189
184
|
numQueries: this.dataz.length,
|
|
190
|
-
limit: this.limit || ent_1.
|
|
185
|
+
limit: this.limit || (0, ent_1.getDefaultLimit)(),
|
|
191
186
|
});
|
|
192
187
|
}
|
|
193
188
|
}
|
|
@@ -457,7 +452,7 @@ function assocTests() {
|
|
|
457
452
|
}
|
|
458
453
|
//order is users, then events
|
|
459
454
|
this.expCount = this.ents([...this.users, ...this.events]).length;
|
|
460
|
-
|
|
455
|
+
ml.clear();
|
|
461
456
|
}
|
|
462
457
|
getQuery(viewer) {
|
|
463
458
|
return this.filter(index_1.UserToFollowingQuery.query(viewer || new viewer_1.IDViewer(this.user.id), this.user));
|
|
@@ -473,7 +468,7 @@ function assocTests() {
|
|
|
473
468
|
verifyQuery({
|
|
474
469
|
length: 1,
|
|
475
470
|
numQueries: 1,
|
|
476
|
-
limit: this.limit || ent_1.
|
|
471
|
+
limit: this.limit || (0, ent_1.getDefaultLimit)(),
|
|
477
472
|
});
|
|
478
473
|
}
|
|
479
474
|
// rawCount isn't affected by filters...
|
|
@@ -488,7 +483,7 @@ function assocTests() {
|
|
|
488
483
|
verifyQuery({
|
|
489
484
|
length: 1,
|
|
490
485
|
numQueries: 1,
|
|
491
|
-
limit: this.limit || ent_1.
|
|
486
|
+
limit: this.limit || (0, ent_1.getDefaultLimit)(),
|
|
492
487
|
});
|
|
493
488
|
}
|
|
494
489
|
async testEdges() {
|
|
@@ -509,7 +504,7 @@ function assocTests() {
|
|
|
509
504
|
verifyQuery({
|
|
510
505
|
length: 1,
|
|
511
506
|
numQueries: 1,
|
|
512
|
-
limit: this.limit || ent_1.
|
|
507
|
+
limit: this.limit || (0, ent_1.getDefaultLimit)(),
|
|
513
508
|
});
|
|
514
509
|
}
|
|
515
510
|
async testEnts() {
|
|
@@ -533,7 +528,7 @@ function assocTests() {
|
|
|
533
528
|
// // 1 for edges, 1 for users, 1 for events
|
|
534
529
|
// length: 3,
|
|
535
530
|
// numQueries: 3,
|
|
536
|
-
// limit: this.limit ||
|
|
531
|
+
// limit: this.limit || getDefaultLimit(),
|
|
537
532
|
// });
|
|
538
533
|
}
|
|
539
534
|
}
|
|
@@ -619,10 +614,9 @@ function assocTests() {
|
|
|
619
614
|
let user;
|
|
620
615
|
let friendRequests;
|
|
621
616
|
let user2;
|
|
622
|
-
let friendRequests2;
|
|
623
617
|
beforeEach(async () => {
|
|
624
618
|
[user, friendRequests] = await (0, test_helpers_1.createUserPlusFriendRequests)();
|
|
625
|
-
[user2
|
|
619
|
+
[user2] = await (0, test_helpers_1.createUserPlusFriendRequests)();
|
|
626
620
|
});
|
|
627
621
|
function getQuery(viewer) {
|
|
628
622
|
return index_1.UserToIncomingFriendRequestsQuery.query(viewer || user.viewer, [
|
|
@@ -642,7 +636,7 @@ function assocTests() {
|
|
|
642
636
|
expect(countMap.get(user.id)).toBe(friendRequests.length);
|
|
643
637
|
expect(countMap.get(user2.id)).toBe(0);
|
|
644
638
|
});
|
|
645
|
-
test("count", async () => {
|
|
639
|
+
test("raw count", async () => {
|
|
646
640
|
const countMap = await getQuery().queryAllRawCount();
|
|
647
641
|
expect(countMap.size).toBe(2);
|
|
648
642
|
expect(countMap.get(user.id)).toBe(friendRequests.length);
|
|
@@ -669,5 +663,142 @@ function assocTests() {
|
|
|
669
663
|
expect(entsMapFromUserVCToken.get(user2.id)?.length).toBe(0);
|
|
670
664
|
});
|
|
671
665
|
});
|
|
666
|
+
if (!global) {
|
|
667
|
+
return;
|
|
668
|
+
}
|
|
669
|
+
// global only tests here
|
|
670
|
+
describe("deleted edges", () => {
|
|
671
|
+
let user;
|
|
672
|
+
let friendRequests;
|
|
673
|
+
let user2;
|
|
674
|
+
let postDeletedCount;
|
|
675
|
+
beforeEach(async () => {
|
|
676
|
+
[user, friendRequests] = await (0, test_helpers_1.createUserPlusFriendRequests)();
|
|
677
|
+
user2 = await (0, test_helpers_1.createTestUser)();
|
|
678
|
+
postDeletedCount = Math.floor(friendRequests.length / 2);
|
|
679
|
+
});
|
|
680
|
+
async function deleteEdges() {
|
|
681
|
+
const action = new builder_1.SimpleAction(user.viewer, index_1.FakeUserSchema, new Map(), base_1.WriteOperation.Edit, user);
|
|
682
|
+
for (let i = 0; i < friendRequests.length; i++) {
|
|
683
|
+
if (i % 2 == 0) {
|
|
684
|
+
action.builder.orchestrator.removeInboundEdge(friendRequests[i].id, index_1.EdgeType.UserToFriendRequests);
|
|
685
|
+
}
|
|
686
|
+
}
|
|
687
|
+
await action.saveX();
|
|
688
|
+
}
|
|
689
|
+
function getQuery(viewer) {
|
|
690
|
+
return index_1.UserToIncomingFriendRequestsQuery.query(viewer, user.id);
|
|
691
|
+
}
|
|
692
|
+
test("ids", async () => {
|
|
693
|
+
const ids = await getQuery(user.viewer).queryIDs();
|
|
694
|
+
expect(ids.length).toBe(friendRequests.length);
|
|
695
|
+
});
|
|
696
|
+
test("ids after deleted", async () => {
|
|
697
|
+
await deleteEdges();
|
|
698
|
+
const idsFromUser = await getQuery(user.viewer).queryIDs();
|
|
699
|
+
expect(idsFromUser.length).toBe(postDeletedCount);
|
|
700
|
+
});
|
|
701
|
+
test("ids deleted. fetch deleted anyways", async () => {
|
|
702
|
+
await deleteEdges();
|
|
703
|
+
const idsFromUser = await getQuery(user.viewer)
|
|
704
|
+
.withoutTransformations()
|
|
705
|
+
.queryIDs();
|
|
706
|
+
expect(idsFromUser.length).toBe(friendRequests.length);
|
|
707
|
+
});
|
|
708
|
+
test("count", async () => {
|
|
709
|
+
const count = await getQuery(user.viewer).queryCount();
|
|
710
|
+
expect(count).toBe(friendRequests.length);
|
|
711
|
+
});
|
|
712
|
+
test("count after deleted", async () => {
|
|
713
|
+
await deleteEdges();
|
|
714
|
+
const count = await getQuery(user.viewer).queryCount();
|
|
715
|
+
expect(count).toBe(postDeletedCount);
|
|
716
|
+
});
|
|
717
|
+
test("count after deleted. fetch deleted", async () => {
|
|
718
|
+
await deleteEdges();
|
|
719
|
+
const count = await getQuery(user.viewer)
|
|
720
|
+
.withoutTransformations()
|
|
721
|
+
.queryCount();
|
|
722
|
+
expect(count).toBe(friendRequests.length);
|
|
723
|
+
});
|
|
724
|
+
test("raw count", async () => {
|
|
725
|
+
const count = await getQuery(user.viewer).queryCount();
|
|
726
|
+
expect(count).toBe(friendRequests.length);
|
|
727
|
+
});
|
|
728
|
+
test("raw count after deleted", async () => {
|
|
729
|
+
await deleteEdges();
|
|
730
|
+
const count = await getQuery(user.viewer).queryRawCount();
|
|
731
|
+
expect(count).toBe(postDeletedCount);
|
|
732
|
+
});
|
|
733
|
+
test("raw count after deleted. fetch deleted", async () => {
|
|
734
|
+
await deleteEdges();
|
|
735
|
+
const count = await getQuery(user.viewer)
|
|
736
|
+
.withoutTransformations()
|
|
737
|
+
.queryRawCount();
|
|
738
|
+
expect(count).toBe(friendRequests.length);
|
|
739
|
+
});
|
|
740
|
+
test("edges", async () => {
|
|
741
|
+
const edges = await getQuery(user.viewer).queryEdges();
|
|
742
|
+
expect(edges.length).toBe(friendRequests.length);
|
|
743
|
+
for (const edge of edges) {
|
|
744
|
+
expect(edge.deleted_at).toBeNull();
|
|
745
|
+
}
|
|
746
|
+
});
|
|
747
|
+
test("edges after deleted", async () => {
|
|
748
|
+
await deleteEdges();
|
|
749
|
+
const edges = await getQuery(user.viewer).queryEdges();
|
|
750
|
+
expect(edges.length).toBe(postDeletedCount);
|
|
751
|
+
for (const edge of edges) {
|
|
752
|
+
expect(edge.deleted_at).toBeNull();
|
|
753
|
+
}
|
|
754
|
+
});
|
|
755
|
+
test("edges after deleted. fetch deleted", async () => {
|
|
756
|
+
await deleteEdges();
|
|
757
|
+
const edges = await getQuery(user.viewer)
|
|
758
|
+
.withoutTransformations()
|
|
759
|
+
.queryEdges();
|
|
760
|
+
expect(edges.length).toBe(friendRequests.length);
|
|
761
|
+
let notDeletedAtCt = 0;
|
|
762
|
+
for (const edge of edges) {
|
|
763
|
+
if (edge.deleted_at === null) {
|
|
764
|
+
notDeletedAtCt++;
|
|
765
|
+
}
|
|
766
|
+
else {
|
|
767
|
+
expect(luxon_1.DateTime.fromJSDate((0, convert_1.convertDate)(edge.deleted_at)).isValid).toBe(true);
|
|
768
|
+
}
|
|
769
|
+
}
|
|
770
|
+
expect(notDeletedAtCt).toBe(postDeletedCount);
|
|
771
|
+
});
|
|
772
|
+
test("ents", async () => {
|
|
773
|
+
const viewer = new index_1.ViewerWithAccessToken(user.id, {
|
|
774
|
+
tokens: {
|
|
775
|
+
allow_incoming_friend_request: true,
|
|
776
|
+
},
|
|
777
|
+
});
|
|
778
|
+
const ents = await getQuery(viewer).queryEnts();
|
|
779
|
+
expect(ents.length).toBe(friendRequests.length);
|
|
780
|
+
});
|
|
781
|
+
test("ents after deleted", async () => {
|
|
782
|
+
await deleteEdges();
|
|
783
|
+
const viewer = new index_1.ViewerWithAccessToken(user.id, {
|
|
784
|
+
tokens: {
|
|
785
|
+
allow_incoming_friend_request: true,
|
|
786
|
+
},
|
|
787
|
+
});
|
|
788
|
+
const ents = await getQuery(viewer).queryEnts();
|
|
789
|
+
expect(ents.length).toBe(postDeletedCount);
|
|
790
|
+
});
|
|
791
|
+
test("ents after deleted. fetch deleted", async () => {
|
|
792
|
+
await deleteEdges();
|
|
793
|
+
const viewer = new index_1.ViewerWithAccessToken(user.id, {
|
|
794
|
+
tokens: {
|
|
795
|
+
allow_incoming_friend_request: true,
|
|
796
|
+
always_allow_user: true,
|
|
797
|
+
},
|
|
798
|
+
});
|
|
799
|
+
const ents = await getQuery(viewer).withoutTransformations().queryEnts();
|
|
800
|
+
expect(ents.length).toBe(friendRequests.length);
|
|
801
|
+
});
|
|
802
|
+
});
|
|
672
803
|
}
|
|
673
804
|
exports.assocTests = assocTests;
|
|
@@ -1,14 +1,21 @@
|
|
|
1
1
|
import { Data, Viewer } from "../base";
|
|
2
2
|
import { FakeUser, FakeContact } from "../../testutils/fake_data/index";
|
|
3
3
|
import { EdgeQuery } from "./query";
|
|
4
|
+
import { MockLogs } from "../../testutils/mock_log";
|
|
5
|
+
import { Clause } from "../clause";
|
|
6
|
+
import { OrderBy } from "../query_impl";
|
|
4
7
|
interface options<TData extends Data> {
|
|
5
8
|
newQuery: (v: Viewer, user: FakeUser) => EdgeQuery<FakeUser, FakeContact, TData>;
|
|
6
9
|
tableName: string;
|
|
10
|
+
uniqKey: string;
|
|
11
|
+
ml: MockLogs;
|
|
7
12
|
entsLength?: number;
|
|
8
|
-
|
|
9
|
-
sortCol: string;
|
|
13
|
+
clause: Clause;
|
|
10
14
|
livePostgresDB?: boolean;
|
|
11
15
|
sqlite?: boolean;
|
|
16
|
+
globalSchema?: boolean;
|
|
17
|
+
orderby: OrderBy;
|
|
18
|
+
rawDataVerify?(user: FakeUser): Promise<void>;
|
|
12
19
|
}
|
|
13
20
|
export declare const commonTests: <TData extends Data>(opts: options<TData>) => void;
|
|
14
21
|
export {};
|