@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.
Files changed (176) hide show
  1. package/action/action.d.ts +25 -14
  2. package/action/action.js +22 -7
  3. package/action/executor.d.ts +16 -3
  4. package/action/executor.js +89 -28
  5. package/action/experimental_action.d.ts +25 -16
  6. package/action/experimental_action.js +34 -14
  7. package/action/index.d.ts +4 -1
  8. package/action/index.js +7 -1
  9. package/action/operations.d.ts +126 -0
  10. package/action/operations.js +686 -0
  11. package/action/orchestrator.d.ts +43 -12
  12. package/action/orchestrator.js +461 -101
  13. package/action/relative_value.d.ts +47 -0
  14. package/action/relative_value.js +125 -0
  15. package/action/transaction.d.ts +10 -0
  16. package/action/transaction.js +23 -0
  17. package/auth/auth.d.ts +1 -1
  18. package/core/base.d.ts +56 -23
  19. package/core/base.js +7 -1
  20. package/core/clause.d.ts +103 -39
  21. package/core/clause.js +430 -66
  22. package/core/config.d.ts +13 -3
  23. package/core/config.js +10 -1
  24. package/core/const.d.ts +3 -0
  25. package/core/const.js +6 -0
  26. package/core/context.d.ts +6 -3
  27. package/core/context.js +22 -3
  28. package/core/convert.d.ts +1 -1
  29. package/core/date.js +1 -5
  30. package/core/db.d.ts +12 -8
  31. package/core/db.js +21 -9
  32. package/core/ent.d.ts +99 -95
  33. package/core/ent.js +550 -602
  34. package/core/global_schema.d.ts +7 -0
  35. package/core/global_schema.js +51 -0
  36. package/core/loaders/assoc_count_loader.d.ts +5 -2
  37. package/core/loaders/assoc_count_loader.js +19 -3
  38. package/core/loaders/assoc_edge_loader.d.ts +2 -3
  39. package/core/loaders/assoc_edge_loader.js +23 -17
  40. package/core/loaders/index.d.ts +1 -2
  41. package/core/loaders/index.js +1 -5
  42. package/core/loaders/loader.d.ts +3 -3
  43. package/core/loaders/loader.js +4 -21
  44. package/core/loaders/object_loader.d.ts +30 -9
  45. package/core/loaders/object_loader.js +226 -79
  46. package/core/loaders/query_loader.d.ts +7 -13
  47. package/core/loaders/query_loader.js +60 -24
  48. package/core/loaders/raw_count_loader.d.ts +1 -0
  49. package/core/loaders/raw_count_loader.js +8 -3
  50. package/core/logger.d.ts +1 -1
  51. package/core/logger.js +1 -0
  52. package/core/privacy.d.ts +26 -16
  53. package/core/privacy.js +68 -51
  54. package/core/query/assoc_query.d.ts +3 -2
  55. package/core/query/assoc_query.js +10 -2
  56. package/core/query/custom_clause_query.d.ts +29 -0
  57. package/core/query/custom_clause_query.js +105 -0
  58. package/core/query/custom_query.d.ts +19 -2
  59. package/core/query/custom_query.js +111 -13
  60. package/core/query/index.d.ts +1 -0
  61. package/core/query/index.js +3 -1
  62. package/core/query/query.d.ts +18 -4
  63. package/core/query/query.js +135 -58
  64. package/core/query/shared_assoc_test.d.ts +2 -1
  65. package/core/query/shared_assoc_test.js +186 -55
  66. package/core/query/shared_test.d.ts +9 -2
  67. package/core/query/shared_test.js +529 -236
  68. package/core/query_impl.d.ts +8 -0
  69. package/core/query_impl.js +28 -0
  70. package/core/viewer.d.ts +2 -0
  71. package/core/viewer.js +3 -1
  72. package/graphql/graphql.d.ts +108 -22
  73. package/graphql/graphql.js +183 -137
  74. package/graphql/graphql_field_helpers.d.ts +9 -3
  75. package/graphql/graphql_field_helpers.js +22 -2
  76. package/graphql/index.d.ts +2 -2
  77. package/graphql/index.js +5 -5
  78. package/graphql/query/connection_type.d.ts +9 -9
  79. package/graphql/query/shared_assoc_test.js +1 -1
  80. package/graphql/query/shared_edge_connection.js +1 -19
  81. package/graphql/scalars/orderby_direction.d.ts +2 -0
  82. package/graphql/scalars/orderby_direction.js +15 -0
  83. package/imports/dataz/example1/_auth.js +128 -47
  84. package/imports/dataz/example1/_viewer.js +87 -39
  85. package/imports/index.d.ts +7 -2
  86. package/imports/index.js +20 -5
  87. package/index.d.ts +23 -5
  88. package/index.js +35 -10
  89. package/package.json +20 -19
  90. package/parse_schema/parse.d.ts +33 -9
  91. package/parse_schema/parse.js +182 -33
  92. package/schema/base_schema.d.ts +13 -3
  93. package/schema/base_schema.js +13 -0
  94. package/schema/field.d.ts +78 -21
  95. package/schema/field.js +232 -72
  96. package/schema/index.d.ts +2 -2
  97. package/schema/index.js +7 -2
  98. package/schema/json_field.d.ts +16 -4
  99. package/schema/json_field.js +32 -2
  100. package/schema/schema.d.ts +109 -20
  101. package/schema/schema.js +42 -53
  102. package/schema/struct_field.d.ts +15 -3
  103. package/schema/struct_field.js +117 -22
  104. package/schema/union_field.d.ts +1 -1
  105. package/scripts/custom_compiler.js +12 -8
  106. package/scripts/custom_graphql.js +167 -64
  107. package/scripts/migrate_v0.1.js +36 -0
  108. package/scripts/move_types.js +120 -0
  109. package/scripts/read_schema.js +22 -7
  110. package/testutils/action/complex_schemas.d.ts +69 -0
  111. package/testutils/action/complex_schemas.js +405 -0
  112. package/testutils/builder.d.ts +37 -41
  113. package/testutils/builder.js +66 -46
  114. package/testutils/db/fixture.d.ts +10 -0
  115. package/testutils/db/fixture.js +26 -0
  116. package/testutils/db/{test_db.d.ts → temp_db.d.ts} +32 -8
  117. package/testutils/db/{test_db.js → temp_db.js} +251 -48
  118. package/testutils/db/value.d.ts +7 -0
  119. package/testutils/db/value.js +251 -0
  120. package/testutils/db_mock.d.ts +16 -4
  121. package/testutils/db_mock.js +52 -9
  122. package/testutils/db_time_zone.d.ts +4 -0
  123. package/testutils/db_time_zone.js +41 -0
  124. package/testutils/ent-graphql-tests/index.d.ts +7 -1
  125. package/testutils/ent-graphql-tests/index.js +56 -26
  126. package/testutils/fake_comms.js +1 -1
  127. package/testutils/fake_data/const.d.ts +2 -1
  128. package/testutils/fake_data/const.js +3 -0
  129. package/testutils/fake_data/fake_contact.d.ts +7 -3
  130. package/testutils/fake_data/fake_contact.js +13 -7
  131. package/testutils/fake_data/fake_event.d.ts +4 -1
  132. package/testutils/fake_data/fake_event.js +7 -6
  133. package/testutils/fake_data/fake_tag.d.ts +36 -0
  134. package/testutils/fake_data/fake_tag.js +89 -0
  135. package/testutils/fake_data/fake_user.d.ts +8 -5
  136. package/testutils/fake_data/fake_user.js +31 -19
  137. package/testutils/fake_data/index.js +5 -1
  138. package/testutils/fake_data/internal.d.ts +2 -0
  139. package/testutils/fake_data/internal.js +7 -1
  140. package/testutils/fake_data/tag_query.d.ts +13 -0
  141. package/testutils/fake_data/tag_query.js +48 -0
  142. package/testutils/fake_data/test_helpers.d.ts +14 -6
  143. package/testutils/fake_data/test_helpers.js +31 -15
  144. package/testutils/fake_data/user_query.d.ts +16 -6
  145. package/testutils/fake_data/user_query.js +72 -23
  146. package/testutils/fake_log.js +1 -1
  147. package/testutils/parse_sql.d.ts +6 -0
  148. package/testutils/parse_sql.js +16 -2
  149. package/testutils/test_edge_global_schema.d.ts +15 -0
  150. package/testutils/test_edge_global_schema.js +62 -0
  151. package/testutils/write.d.ts +2 -2
  152. package/testutils/write.js +33 -7
  153. package/tsc/ast.d.ts +15 -3
  154. package/tsc/ast.js +114 -23
  155. package/tsc/compilerOptions.js +5 -1
  156. package/tsc/move_generated.d.ts +1 -0
  157. package/tsc/move_generated.js +164 -0
  158. package/tsc/transform.d.ts +22 -0
  159. package/tsc/transform.js +182 -0
  160. package/tsc/transform_action.d.ts +22 -0
  161. package/tsc/transform_action.js +183 -0
  162. package/tsc/transform_ent.d.ts +17 -0
  163. package/tsc/transform_ent.js +60 -0
  164. package/tsc/transform_schema.d.ts +27 -0
  165. package/{scripts → tsc}/transform_schema.js +146 -117
  166. package/core/loaders/index_loader.d.ts +0 -14
  167. package/core/loaders/index_loader.js +0 -27
  168. package/graphql/enums.d.ts +0 -3
  169. package/graphql/enums.js +0 -25
  170. package/scripts/move_generated.js +0 -141
  171. package/scripts/transform_actions.js +0 -266
  172. package/scripts/transform_code.d.ts +0 -1
  173. package/scripts/transform_code.js +0 -111
  174. package/scripts/transform_schema.d.ts +0 -1
  175. /package/scripts/{move_generated.d.ts → migrate_v0.1.d.ts} +0 -0
  176. /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 db_mock_1 = require("../../testutils/db_mock");
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 db_1 = __importStar(require("../db"));
30
- function assocTests() {
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 verifyQuery({ length = 1, numQueries = 1, limit = ent_1.DefaultLimit, disablePaginationBump = false, }) {
71
- if (db_1.default.getDialect() === db_1.Dialect.SQLite) {
72
- return;
73
- }
74
- const queries = db_mock_1.QueryRecorder.getCurrentQueries();
75
- expect(queries.length).toBe(length);
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 query = queries[i];
62
+ const whereClause = getWhereClause(ml.logs[i]);
78
63
  let expLimit = disablePaginationBump ? limit : limit + 1;
79
- expect(query.qs?.whereClause, `${i}`).toBe(
80
- // default limit
81
- `id1 = $1 AND edge_type = $2 ORDER BY time DESC LIMIT ${expLimit}`);
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
- if (db_1.default.getDialect() === db_1.Dialect.SQLite) {
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 query = queries[i];
92
- expect(query.qs?.whereClause).toBe(`id1 = $1 AND edge_type = $2`);
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)({ firstName: "Aegon", lastName: "Targaryen" }),
108
- (0, test_helpers_1.createAllContacts)({ firstName: "Ned", lastName: "Stark" }),
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
- db_mock_1.QueryRecorder.clearQueries();
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.DefaultLimit,
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.DefaultLimit,
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.DefaultLimit,
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.DefaultLimit,
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
- db_mock_1.QueryRecorder.clearQueries();
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.DefaultLimit,
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.DefaultLimit,
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.DefaultLimit,
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 || DefaultLimit,
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, friendRequests2] = await (0, test_helpers_1.createUserPlusFriendRequests)();
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
- where: string;
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 {};