@loopback/repository-tests 0.20.2 → 0.21.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.
Files changed (92) hide show
  1. package/dist/crud/relations/acceptance/belongs-to.inclusion-resolver.polymorphic.relation.acceptance.d.ts +2 -0
  2. package/dist/crud/relations/acceptance/belongs-to.inclusion-resolver.polymorphic.relation.acceptance.js +170 -0
  3. package/dist/crud/relations/acceptance/belongs-to.inclusion-resolver.polymorphic.relation.acceptance.js.map +1 -0
  4. package/dist/crud/relations/acceptance/belongs-to.polymorphic.relation.acceptance.d.ts +2 -0
  5. package/dist/crud/relations/acceptance/belongs-to.polymorphic.relation.acceptance.js +55 -0
  6. package/dist/crud/relations/acceptance/belongs-to.polymorphic.relation.acceptance.js.map +1 -0
  7. package/dist/crud/relations/acceptance/has-many-through-inclusion-resolver.polymorphic.acceptance.d.ts +2 -0
  8. package/dist/crud/relations/acceptance/has-many-through-inclusion-resolver.polymorphic.acceptance.js +170 -0
  9. package/dist/crud/relations/acceptance/has-many-through-inclusion-resolver.polymorphic.acceptance.js.map +1 -0
  10. package/dist/crud/relations/acceptance/has-many-through.relation.polymorphic.acceptance.d.ts +2 -0
  11. package/dist/crud/relations/acceptance/has-many-through.relation.polymorphic.acceptance.js +361 -0
  12. package/dist/crud/relations/acceptance/has-many-through.relation.polymorphic.acceptance.js.map +1 -0
  13. package/dist/crud/relations/acceptance/has-one.inclusion-resolver.polymorphic.acceptance.d.ts +2 -0
  14. package/dist/crud/relations/acceptance/has-one.inclusion-resolver.polymorphic.acceptance.js +161 -0
  15. package/dist/crud/relations/acceptance/has-one.inclusion-resolver.polymorphic.acceptance.js.map +1 -0
  16. package/dist/crud/relations/acceptance/has-one.relation.polymorphic.acceptance.d.ts +2 -0
  17. package/dist/crud/relations/acceptance/has-one.relation.polymorphic.acceptance.js +190 -0
  18. package/dist/crud/relations/acceptance/has-one.relation.polymorphic.acceptance.js.map +1 -0
  19. package/dist/crud/relations/fixtures/models/contact.model.d.ts +18 -0
  20. package/dist/crud/relations/fixtures/models/contact.model.js +49 -0
  21. package/dist/crud/relations/fixtures/models/contact.model.js.map +1 -0
  22. package/dist/crud/relations/fixtures/models/customer-promotion-link.model.d.ts +14 -0
  23. package/dist/crud/relations/fixtures/models/customer-promotion-link.model.js +46 -0
  24. package/dist/crud/relations/fixtures/models/customer-promotion-link.model.js.map +1 -0
  25. package/dist/crud/relations/fixtures/models/customer.model.d.ts +16 -3
  26. package/dist/crud/relations/fixtures/models/customer.model.js +27 -9
  27. package/dist/crud/relations/fixtures/models/customer.model.js.map +1 -1
  28. package/dist/crud/relations/fixtures/models/index.d.ts +6 -0
  29. package/dist/crud/relations/fixtures/models/index.js +6 -0
  30. package/dist/crud/relations/fixtures/models/index.js.map +1 -1
  31. package/dist/crud/relations/fixtures/models/payment-method.model.d.ts +47 -0
  32. package/dist/crud/relations/fixtures/models/payment-method.model.js +87 -0
  33. package/dist/crud/relations/fixtures/models/payment-method.model.js.map +1 -0
  34. package/dist/crud/relations/fixtures/models/promotion.model.d.ts +27 -0
  35. package/dist/crud/relations/fixtures/models/promotion.model.js +54 -0
  36. package/dist/crud/relations/fixtures/models/promotion.model.js.map +1 -0
  37. package/dist/crud/relations/fixtures/models/stakeholder.model.d.ts +7 -0
  38. package/dist/crud/relations/fixtures/models/stakeholder.model.js +38 -0
  39. package/dist/crud/relations/fixtures/models/stakeholder.model.js.map +1 -0
  40. package/dist/crud/relations/fixtures/models/supplier.model.d.ts +15 -0
  41. package/dist/crud/relations/fixtures/models/supplier.model.js +23 -0
  42. package/dist/crud/relations/fixtures/models/supplier.model.js.map +1 -0
  43. package/dist/crud/relations/fixtures/repositories/contact.repository.d.ts +30 -0
  44. package/dist/crud/relations/fixtures/repositories/contact.repository.js +21 -0
  45. package/dist/crud/relations/fixtures/repositories/contact.repository.js.map +1 -0
  46. package/dist/crud/relations/fixtures/repositories/customer-promotion-link.repository.d.ts +26 -0
  47. package/dist/crud/relations/fixtures/repositories/customer-promotion-link.repository.js +18 -0
  48. package/dist/crud/relations/fixtures/repositories/customer-promotion-link.repository.js.map +1 -0
  49. package/dist/crud/relations/fixtures/repositories/customer.repository.d.ts +9 -2
  50. package/dist/crud/relations/fixtures/repositories/customer.repository.js +7 -1
  51. package/dist/crud/relations/fixtures/repositories/customer.repository.js.map +1 -1
  52. package/dist/crud/relations/fixtures/repositories/index.d.ts +6 -1
  53. package/dist/crud/relations/fixtures/repositories/index.js +6 -1
  54. package/dist/crud/relations/fixtures/repositories/index.js.map +1 -1
  55. package/dist/crud/relations/fixtures/repositories/payment-method.repository.d.ts +77 -0
  56. package/dist/crud/relations/fixtures/repositories/payment-method.repository.js +45 -0
  57. package/dist/crud/relations/fixtures/repositories/payment-method.repository.js.map +1 -0
  58. package/dist/crud/relations/fixtures/repositories/promotion.repository.d.ts +49 -0
  59. package/dist/crud/relations/fixtures/repositories/promotion.repository.js +25 -0
  60. package/dist/crud/relations/fixtures/repositories/promotion.repository.js.map +1 -0
  61. package/dist/crud/relations/fixtures/repositories/supplier.repository.d.ts +28 -0
  62. package/dist/crud/relations/fixtures/repositories/supplier.repository.js +21 -0
  63. package/dist/crud/relations/fixtures/repositories/supplier.repository.js.map +1 -0
  64. package/dist/crud/relations/helpers.d.ts +9 -1
  65. package/dist/crud/relations/helpers.js +85 -10
  66. package/dist/crud/relations/helpers.js.map +1 -1
  67. package/dist/helpers.repository-tests.d.ts +1 -1
  68. package/dist/helpers.repository-tests.js.map +1 -1
  69. package/package.json +12 -12
  70. package/src/crud/relations/acceptance/belongs-to.inclusion-resolver.polymorphic.relation.acceptance.ts +221 -0
  71. package/src/crud/relations/acceptance/belongs-to.polymorphic.relation.acceptance.ts +88 -0
  72. package/src/crud/relations/acceptance/has-many-through-inclusion-resolver.polymorphic.acceptance.ts +255 -0
  73. package/src/crud/relations/acceptance/has-many-through.relation.polymorphic.acceptance.ts +494 -0
  74. package/src/crud/relations/acceptance/has-one.inclusion-resolver.polymorphic.acceptance.ts +208 -0
  75. package/src/crud/relations/acceptance/has-one.relation.polymorphic.acceptance.ts +328 -0
  76. package/src/crud/relations/fixtures/models/contact.model.ts +56 -0
  77. package/src/crud/relations/fixtures/models/customer-promotion-link.model.ts +52 -0
  78. package/src/crud/relations/fixtures/models/customer.model.ts +39 -9
  79. package/src/crud/relations/fixtures/models/index.ts +6 -0
  80. package/src/crud/relations/fixtures/models/payment-method.model.ts +118 -0
  81. package/src/crud/relations/fixtures/models/promotion.model.ts +67 -0
  82. package/src/crud/relations/fixtures/models/stakeholder.model.ts +33 -0
  83. package/src/crud/relations/fixtures/models/supplier.model.ts +35 -0
  84. package/src/crud/relations/fixtures/repositories/contact.repository.ts +44 -0
  85. package/src/crud/relations/fixtures/repositories/customer-promotion-link.repository.ts +20 -0
  86. package/src/crud/relations/fixtures/repositories/customer.repository.ts +47 -0
  87. package/src/crud/relations/fixtures/repositories/index.ts +6 -1
  88. package/src/crud/relations/fixtures/repositories/payment-method.repository.ts +118 -0
  89. package/src/crud/relations/fixtures/repositories/promotion.repository.ts +37 -0
  90. package/src/crud/relations/fixtures/repositories/supplier.repository.ts +40 -0
  91. package/src/crud/relations/helpers.ts +200 -30
  92. package/src/helpers.repository-tests.ts +1 -1
@@ -3,21 +3,37 @@
3
3
  // This file is licensed under the MIT License.
4
4
  // License text available at https://opensource.org/licenses/MIT
5
5
 
6
- import {juggler} from '@loopback/repository';
6
+ import {Getter, juggler} from '@loopback/repository';
7
7
  import {CrudFeatures, CrudRepositoryCtor} from '../..';
8
8
  import {
9
9
  Address,
10
10
  AddressRepository,
11
+ CardInfo,
12
+ CardInfoRepository,
11
13
  CartItem,
12
14
  CartItemRepository,
15
+ Cash,
16
+ CashRepository,
17
+ Contact,
18
+ ContactRepository,
19
+ CreditCard,
20
+ CreditCardRepository,
13
21
  Customer,
14
22
  CustomerCartItemLink,
15
23
  CustomerCartItemLinkRepository,
24
+ CustomerPromotionLink,
25
+ CustomerPromotionLinkRepository,
16
26
  CustomerRepository,
27
+ FreeDelivery,
28
+ FreeDeliveryRepository,
29
+ HalfPrice,
30
+ HalfPriceRepository,
17
31
  Order,
18
32
  OrderRepository,
19
33
  Shipment,
20
34
  ShipmentRepository,
35
+ Supplier,
36
+ SupplierRepository,
21
37
  User,
22
38
  UserLink,
23
39
  UserLinkRepository,
@@ -25,11 +41,19 @@ import {
25
41
  } from './fixtures/models';
26
42
  import {
27
43
  createAddressRepo,
44
+ createCardInfoRepo,
28
45
  createCartItemRepo,
46
+ createCashRepo,
47
+ createContactRepo,
48
+ createCreditCardRepo,
29
49
  createCustomerCartItemLinkRepo,
50
+ createCustomerPromotionLinkRepo,
30
51
  createCustomerRepo,
52
+ createFreeDeliveryRepo,
53
+ createHalfPriceRepo,
31
54
  createOrderRepo,
32
55
  createShipmentRepo,
56
+ createSupplierRepo,
33
57
  createUserLinkRepo,
34
58
  createUserRepo,
35
59
  } from './fixtures/repositories';
@@ -42,8 +66,16 @@ export function givenBoundCrudRepositories(
42
66
  Order.definition.properties.id.type = features.idType;
43
67
  Address.definition.properties.id.type = features.idType;
44
68
  Customer.definition.properties.id.type = features.idType;
69
+ Supplier.definition.properties.id.type = features.idType;
70
+ Contact.definition.properties.id.type = features.idType;
71
+ CreditCard.definition.properties.id.type = features.idType;
72
+ CardInfo.definition.properties.id.type = features.idType;
73
+ Cash.definition.properties.id.type = features.idType;
45
74
  CartItem.definition.properties.id.type = features.idType;
46
75
  CustomerCartItemLink.definition.properties.id.type = features.idType;
76
+ FreeDelivery.definition.properties.id.type = features.idType;
77
+ HalfPrice.definition.properties.id.type = features.idType;
78
+ CustomerPromotionLink.definition.properties.id.type = features.idType;
47
79
  Shipment.definition.properties.id.type = features.idType;
48
80
  User.definition.properties.id.type = features.idType;
49
81
  UserLink.definition.properties.id.type = features.idType;
@@ -51,6 +83,10 @@ export function givenBoundCrudRepositories(
51
83
  // this config for mongo connector to pass the test.
52
84
  // however real-world applications might have such config for MongoDB
53
85
  // setting it up to check if it works fine as well
86
+ Contact.definition.properties.stakeholderId.type = features.idType;
87
+ Contact.definition.properties.stakeholderId.mongodb = {
88
+ dataType: 'ObjectID',
89
+ };
54
90
  Order.definition.properties.customerId.type = features.idType;
55
91
  Order.definition.properties.customerId.mongodb = {
56
92
  dataType: 'ObjectID',
@@ -59,12 +95,24 @@ export function givenBoundCrudRepositories(
59
95
  Address.definition.properties.customerId.mongodb = {
60
96
  dataType: 'ObjectID',
61
97
  };
98
+ CreditCard.definition.properties.customerId.type = features.idType;
99
+ CreditCard.definition.properties.customerId.mongodb = {
100
+ dataType: 'ObjectID',
101
+ };
102
+ CardInfo.definition.properties.creditCardId.type = features.idType;
103
+ CardInfo.definition.properties.creditCardId.mongodb = {
104
+ dataType: 'ObjectID',
105
+ };
106
+ Cash.definition.properties.customerId.type = features.idType;
107
+ Cash.definition.properties.customerId.mongodb = {
108
+ dataType: 'ObjectID',
109
+ };
62
110
  CustomerCartItemLink.definition.properties.customerId.type = features.idType;
63
111
  CustomerCartItemLink.definition.properties.customerId.mongodb = {
64
112
  dataType: 'ObjectID',
65
113
  };
66
- CustomerCartItemLink.definition.properties.cartItemId.type = features.idType;
67
- CustomerCartItemLink.definition.properties.cartItemId.mongodb = {
114
+ CustomerPromotionLink.definition.properties.customerId.type = features.idType;
115
+ CustomerPromotionLink.definition.properties.customerId.mongodb = {
68
116
  dataType: 'ObjectID',
69
117
  };
70
118
  UserLink.definition.properties.followerId.type = features.idType;
@@ -75,33 +123,6 @@ export function givenBoundCrudRepositories(
75
123
  UserLink.definition.properties.followeeId.mongodb = {
76
124
  dataType: 'ObjectID',
77
125
  };
78
- // get the repository class and create a new instance of it
79
- const customerRepoClass = createCustomerRepo(repositoryClass);
80
- const customerRepo: CustomerRepository = new customerRepoClass(
81
- db,
82
- async () => orderRepo,
83
- async () => addressRepo,
84
- async () => cartItemRepo,
85
- async () => customerCartItemLinkRepo,
86
- );
87
-
88
- // register the inclusionResolvers here for customerRepo
89
- customerRepo.inclusionResolvers.set(
90
- 'orders',
91
- customerRepo.orders.inclusionResolver,
92
- );
93
- customerRepo.inclusionResolvers.set(
94
- 'customers',
95
- customerRepo.customers.inclusionResolver,
96
- );
97
- customerRepo.inclusionResolvers.set(
98
- 'address',
99
- customerRepo.address.inclusionResolver,
100
- );
101
- customerRepo.inclusionResolvers.set(
102
- 'cartItems',
103
- customerRepo.cartItems.inclusionResolver,
104
- );
105
126
 
106
127
  const orderRepoClass = createOrderRepo(repositoryClass);
107
128
  const orderRepo: OrderRepository = new orderRepoClass(
@@ -132,6 +153,50 @@ export function givenBoundCrudRepositories(
132
153
  async () => customerRepo,
133
154
  );
134
155
 
156
+ const creditCardRepoClass = createCreditCardRepo(repositoryClass);
157
+ const cashRepoClass = createCashRepo(repositoryClass);
158
+ const creditCardRepo: CreditCardRepository = new creditCardRepoClass(
159
+ db,
160
+ async () => customerRepo,
161
+ async () => cardInfoRepo,
162
+ );
163
+
164
+ const cashRepo: CashRepository = new cashRepoClass(
165
+ db,
166
+ async () => customerRepo,
167
+ );
168
+ creditCardRepo.inclusionResolvers.set(
169
+ 'customer',
170
+ creditCardRepo.customer.inclusionResolver,
171
+ );
172
+ creditCardRepo.inclusionResolvers.set(
173
+ 'cardInfo',
174
+ creditCardRepo.cardInfo.inclusionResolver,
175
+ );
176
+ cashRepo.inclusionResolvers.set(
177
+ 'customer',
178
+ cashRepo.customer.inclusionResolver,
179
+ );
180
+ const paymentMethodRepo: {
181
+ [repoType: string]: Getter<typeof repositoryClass.prototype>;
182
+ } = {
183
+ // eslint-disable-next-line @typescript-eslint/naming-convention
184
+ CreditCard: async () => creditCardRepo,
185
+ // eslint-disable-next-line @typescript-eslint/naming-convention
186
+ Cash: async () => cashRepo,
187
+ };
188
+
189
+ const cardInfoRepoClass = createCardInfoRepo(repositoryClass);
190
+ const cardInfoRepo: CardInfoRepository = new cardInfoRepoClass(
191
+ db,
192
+ async () => creditCardRepo,
193
+ );
194
+
195
+ cardInfoRepo.inclusionResolvers.set(
196
+ 'creditCard',
197
+ cardInfoRepo.creditCard.inclusionResolver,
198
+ );
199
+
135
200
  const cartItemRepoClass = createCartItemRepo(repositoryClass);
136
201
  const cartItemRepo: CartItemRepository = new cartItemRepoClass(
137
202
  db,
@@ -148,6 +213,28 @@ export function givenBoundCrudRepositories(
148
213
  const customerCartItemLinkRepo: CustomerCartItemLinkRepository =
149
214
  new customerCartItemLinkRepoClass(db);
150
215
 
216
+ const freeDeliveryRepoClass = createFreeDeliveryRepo(repositoryClass);
217
+ const freeDeliveryRepo: FreeDeliveryRepository = new freeDeliveryRepoClass(
218
+ db,
219
+ );
220
+
221
+ const halfPriceRepoClass = createHalfPriceRepo(repositoryClass);
222
+ const halfPriceRepo: HalfPriceRepository = new halfPriceRepoClass(db);
223
+
224
+ const promotionRepo: {
225
+ [repoType: string]: Getter<typeof repositoryClass.prototype>;
226
+ } = {
227
+ // eslint-disable-next-line @typescript-eslint/naming-convention
228
+ FreeDelivery: async () => freeDeliveryRepo,
229
+ // eslint-disable-next-line @typescript-eslint/naming-convention
230
+ HalfPrice: async () => halfPriceRepo,
231
+ };
232
+
233
+ const customerPromotionLinkRepoClass =
234
+ createCustomerPromotionLinkRepo(repositoryClass);
235
+ const customerPromotionLinkRepo: CustomerPromotionLinkRepository =
236
+ new customerPromotionLinkRepoClass(db);
237
+
151
238
  const userRepoClass = createUserRepo(repositoryClass);
152
239
  const userRepo: UserRepository = new userRepoClass(
153
240
  db,
@@ -159,6 +246,81 @@ export function givenBoundCrudRepositories(
159
246
 
160
247
  userRepo.inclusionResolvers.set('users', userRepo.users.inclusionResolver);
161
248
 
249
+ const supplierRepoClass = createSupplierRepo(repositoryClass);
250
+ const supplierRepo: SupplierRepository = new supplierRepoClass(
251
+ db,
252
+ async () => contactRepo,
253
+ );
254
+
255
+ // get the repository class and create a new instance of it
256
+ const customerRepoClass = createCustomerRepo(repositoryClass);
257
+
258
+ const customerRepo: CustomerRepository = new customerRepoClass(
259
+ db,
260
+ async () => orderRepo,
261
+ async () => addressRepo,
262
+ async () => cartItemRepo,
263
+ async () => customerCartItemLinkRepo,
264
+ promotionRepo,
265
+ async () => customerPromotionLinkRepo,
266
+ paymentMethodRepo,
267
+ async () => contactRepo,
268
+ );
269
+
270
+ const stakeholderRepo: {
271
+ [repoType: string]: Getter<typeof repositoryClass.prototype>;
272
+ } = {
273
+ // eslint-disable-next-line @typescript-eslint/naming-convention
274
+ Customer: async () => customerRepo,
275
+ // eslint-disable-next-line @typescript-eslint/naming-convention
276
+ Supplier: async () => supplierRepo,
277
+ };
278
+
279
+ const contactRepoClass = createContactRepo(repositoryClass);
280
+ const contactRepo: ContactRepository = new contactRepoClass(
281
+ db,
282
+ stakeholderRepo,
283
+ );
284
+
285
+ contactRepo.inclusionResolvers.set(
286
+ 'stakeholder',
287
+ contactRepo.stakeholder.inclusionResolver,
288
+ );
289
+
290
+ // register the inclusionResolvers here for customerRepo
291
+ customerRepo.inclusionResolvers.set(
292
+ 'orders',
293
+ customerRepo.orders.inclusionResolver,
294
+ );
295
+ customerRepo.inclusionResolvers.set(
296
+ 'customers',
297
+ customerRepo.customers.inclusionResolver,
298
+ );
299
+ customerRepo.inclusionResolvers.set(
300
+ 'address',
301
+ customerRepo.address.inclusionResolver,
302
+ );
303
+ customerRepo.inclusionResolvers.set(
304
+ 'cartItems',
305
+ customerRepo.cartItems.inclusionResolver,
306
+ );
307
+ customerRepo.inclusionResolvers.set(
308
+ 'promotions',
309
+ customerRepo.promotions.inclusionResolver,
310
+ );
311
+ customerRepo.inclusionResolvers.set(
312
+ 'paymentMethod',
313
+ customerRepo.paymentMethod.inclusionResolver,
314
+ );
315
+ customerRepo.inclusionResolvers.set(
316
+ 'contact',
317
+ customerRepo.contact.inclusionResolver,
318
+ );
319
+ supplierRepo.inclusionResolvers.set(
320
+ 'contact',
321
+ supplierRepo.contact.inclusionResolver,
322
+ );
323
+
162
324
  return {
163
325
  customerRepo,
164
326
  orderRepo,
@@ -166,7 +328,15 @@ export function givenBoundCrudRepositories(
166
328
  addressRepo,
167
329
  cartItemRepo,
168
330
  customerCartItemLinkRepo,
331
+ freeDeliveryRepo,
332
+ halfPriceRepo,
333
+ customerPromotionLinkRepo,
169
334
  userRepo,
170
335
  userLinkRepo,
336
+ creditCardRepo,
337
+ cashRepo,
338
+ contactRepo,
339
+ supplierRepo,
340
+ cardInfoRepo,
171
341
  };
172
342
  }
@@ -37,7 +37,7 @@ export function withCrudCtx(
37
37
  */
38
38
  export const deleteAllModelsInDefaultDataSource = withCrudCtx(ctx => {
39
39
  ctx.dataSource.deleteAllModels();
40
- });
40
+ }) as Mocha.Func;
41
41
 
42
42
  /**
43
43
  * A union type between string and number to use since MongoDB and MySQL use