@loopback/repository-tests 0.20.2 → 0.21.2

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 (187) hide show
  1. package/LICENSE +2 -2
  2. package/dist/crud/create-retrieve.suite.js +1 -1
  3. package/dist/crud/create-retrieve.suite.js.map +1 -1
  4. package/dist/crud/freeform-properties.suite.js +2 -2
  5. package/dist/crud/freeform-properties.suite.js.map +1 -1
  6. package/dist/crud/nested-model-properties.suite.js +1 -1
  7. package/dist/crud/nested-model-properties.suite.js.map +1 -1
  8. package/dist/crud/relations/acceptance/belongs-to.inclusion-resolver.polymorphic.relation.acceptance.d.ts +2 -0
  9. package/dist/crud/relations/acceptance/belongs-to.inclusion-resolver.polymorphic.relation.acceptance.js +170 -0
  10. package/dist/crud/relations/acceptance/belongs-to.inclusion-resolver.polymorphic.relation.acceptance.js.map +1 -0
  11. package/dist/crud/relations/acceptance/belongs-to.inclusion-resolver.relation.acceptance.js +1 -1
  12. package/dist/crud/relations/acceptance/belongs-to.inclusion-resolver.relation.acceptance.js.map +1 -1
  13. package/dist/crud/relations/acceptance/belongs-to.polymorphic.relation.acceptance.d.ts +2 -0
  14. package/dist/crud/relations/acceptance/belongs-to.polymorphic.relation.acceptance.js +55 -0
  15. package/dist/crud/relations/acceptance/belongs-to.polymorphic.relation.acceptance.js.map +1 -0
  16. package/dist/crud/relations/acceptance/belongs-to.relation.acceptance.js +1 -1
  17. package/dist/crud/relations/acceptance/belongs-to.relation.acceptance.js.map +1 -1
  18. package/dist/crud/relations/acceptance/has-many-inclusion-resolver.relation.acceptance.js +1 -1
  19. package/dist/crud/relations/acceptance/has-many-inclusion-resolver.relation.acceptance.js.map +1 -1
  20. package/dist/crud/relations/acceptance/has-many-through-inclusion-resolver.acceptance.js +1 -1
  21. package/dist/crud/relations/acceptance/has-many-through-inclusion-resolver.acceptance.js.map +1 -1
  22. package/dist/crud/relations/acceptance/has-many-through-inclusion-resolver.polymorphic.acceptance.d.ts +2 -0
  23. package/dist/crud/relations/acceptance/has-many-through-inclusion-resolver.polymorphic.acceptance.js +170 -0
  24. package/dist/crud/relations/acceptance/has-many-through-inclusion-resolver.polymorphic.acceptance.js.map +1 -0
  25. package/dist/crud/relations/acceptance/has-many-through.relation.acceptance.js +1 -1
  26. package/dist/crud/relations/acceptance/has-many-through.relation.acceptance.js.map +1 -1
  27. package/dist/crud/relations/acceptance/has-many-through.relation.polymorphic.acceptance.d.ts +2 -0
  28. package/dist/crud/relations/acceptance/has-many-through.relation.polymorphic.acceptance.js +361 -0
  29. package/dist/crud/relations/acceptance/has-many-through.relation.polymorphic.acceptance.js.map +1 -0
  30. package/dist/crud/relations/acceptance/has-many.relation.acceptance.js +1 -1
  31. package/dist/crud/relations/acceptance/has-many.relation.acceptance.js.map +1 -1
  32. package/dist/crud/relations/acceptance/has-one.inclusion-resolver.acceptance.js +1 -1
  33. package/dist/crud/relations/acceptance/has-one.inclusion-resolver.acceptance.js.map +1 -1
  34. package/dist/crud/relations/acceptance/has-one.inclusion-resolver.polymorphic.acceptance.d.ts +2 -0
  35. package/dist/crud/relations/acceptance/has-one.inclusion-resolver.polymorphic.acceptance.js +161 -0
  36. package/dist/crud/relations/acceptance/has-one.inclusion-resolver.polymorphic.acceptance.js.map +1 -0
  37. package/dist/crud/relations/acceptance/has-one.relation.acceptance.js +1 -1
  38. package/dist/crud/relations/acceptance/has-one.relation.acceptance.js.map +1 -1
  39. package/dist/crud/relations/acceptance/has-one.relation.polymorphic.acceptance.d.ts +2 -0
  40. package/dist/crud/relations/acceptance/has-one.relation.polymorphic.acceptance.js +190 -0
  41. package/dist/crud/relations/acceptance/has-one.relation.polymorphic.acceptance.js.map +1 -0
  42. package/dist/crud/relations/acceptance/multi-relations-inclusion-resolver.relation.acceptance.js +1 -1
  43. package/dist/crud/relations/acceptance/multi-relations-inclusion-resolver.relation.acceptance.js.map +1 -1
  44. package/dist/crud/relations/fixtures/models/address.model.js +1 -1
  45. package/dist/crud/relations/fixtures/models/address.model.js.map +1 -1
  46. package/dist/crud/relations/fixtures/models/cart-item.model.js +1 -1
  47. package/dist/crud/relations/fixtures/models/cart-item.model.js.map +1 -1
  48. package/dist/crud/relations/fixtures/models/contact.model.d.ts +18 -0
  49. package/dist/crud/relations/fixtures/models/contact.model.js +49 -0
  50. package/dist/crud/relations/fixtures/models/contact.model.js.map +1 -0
  51. package/dist/crud/relations/fixtures/models/customer-cart-item-link.model.js +1 -1
  52. package/dist/crud/relations/fixtures/models/customer-cart-item-link.model.js.map +1 -1
  53. package/dist/crud/relations/fixtures/models/customer-promotion-link.model.d.ts +14 -0
  54. package/dist/crud/relations/fixtures/models/customer-promotion-link.model.js +46 -0
  55. package/dist/crud/relations/fixtures/models/customer-promotion-link.model.js.map +1 -0
  56. package/dist/crud/relations/fixtures/models/customer.model.d.ts +16 -3
  57. package/dist/crud/relations/fixtures/models/customer.model.js +28 -10
  58. package/dist/crud/relations/fixtures/models/customer.model.js.map +1 -1
  59. package/dist/crud/relations/fixtures/models/index.d.ts +6 -0
  60. package/dist/crud/relations/fixtures/models/index.js +7 -1
  61. package/dist/crud/relations/fixtures/models/index.js.map +1 -1
  62. package/dist/crud/relations/fixtures/models/order.model.js +1 -1
  63. package/dist/crud/relations/fixtures/models/order.model.js.map +1 -1
  64. package/dist/crud/relations/fixtures/models/payment-method.model.d.ts +47 -0
  65. package/dist/crud/relations/fixtures/models/payment-method.model.js +87 -0
  66. package/dist/crud/relations/fixtures/models/payment-method.model.js.map +1 -0
  67. package/dist/crud/relations/fixtures/models/promotion.model.d.ts +27 -0
  68. package/dist/crud/relations/fixtures/models/promotion.model.js +54 -0
  69. package/dist/crud/relations/fixtures/models/promotion.model.js.map +1 -0
  70. package/dist/crud/relations/fixtures/models/shipment.model.js +1 -1
  71. package/dist/crud/relations/fixtures/models/shipment.model.js.map +1 -1
  72. package/dist/crud/relations/fixtures/models/stakeholder.model.d.ts +7 -0
  73. package/dist/crud/relations/fixtures/models/stakeholder.model.js +38 -0
  74. package/dist/crud/relations/fixtures/models/stakeholder.model.js.map +1 -0
  75. package/dist/crud/relations/fixtures/models/supplier.model.d.ts +15 -0
  76. package/dist/crud/relations/fixtures/models/supplier.model.js +23 -0
  77. package/dist/crud/relations/fixtures/models/supplier.model.js.map +1 -0
  78. package/dist/crud/relations/fixtures/models/user-link.model.js +1 -1
  79. package/dist/crud/relations/fixtures/models/user-link.model.js.map +1 -1
  80. package/dist/crud/relations/fixtures/models/user.model.js +1 -1
  81. package/dist/crud/relations/fixtures/models/user.model.js.map +1 -1
  82. package/dist/crud/relations/fixtures/repositories/address.repository.js +1 -1
  83. package/dist/crud/relations/fixtures/repositories/address.repository.js.map +1 -1
  84. package/dist/crud/relations/fixtures/repositories/cart-item.repository.js +1 -1
  85. package/dist/crud/relations/fixtures/repositories/cart-item.repository.js.map +1 -1
  86. package/dist/crud/relations/fixtures/repositories/contact.repository.d.ts +30 -0
  87. package/dist/crud/relations/fixtures/repositories/contact.repository.js +21 -0
  88. package/dist/crud/relations/fixtures/repositories/contact.repository.js.map +1 -0
  89. package/dist/crud/relations/fixtures/repositories/customer-cart-item-link.repository.js +1 -1
  90. package/dist/crud/relations/fixtures/repositories/customer-cart-item-link.repository.js.map +1 -1
  91. package/dist/crud/relations/fixtures/repositories/customer-promotion-link.repository.d.ts +26 -0
  92. package/dist/crud/relations/fixtures/repositories/customer-promotion-link.repository.js +18 -0
  93. package/dist/crud/relations/fixtures/repositories/customer-promotion-link.repository.js.map +1 -0
  94. package/dist/crud/relations/fixtures/repositories/customer.repository.d.ts +9 -2
  95. package/dist/crud/relations/fixtures/repositories/customer.repository.js +8 -2
  96. package/dist/crud/relations/fixtures/repositories/customer.repository.js.map +1 -1
  97. package/dist/crud/relations/fixtures/repositories/index.d.ts +6 -1
  98. package/dist/crud/relations/fixtures/repositories/index.js +7 -2
  99. package/dist/crud/relations/fixtures/repositories/index.js.map +1 -1
  100. package/dist/crud/relations/fixtures/repositories/order.repository.js +1 -1
  101. package/dist/crud/relations/fixtures/repositories/order.repository.js.map +1 -1
  102. package/dist/crud/relations/fixtures/repositories/payment-method.repository.d.ts +77 -0
  103. package/dist/crud/relations/fixtures/repositories/payment-method.repository.js +45 -0
  104. package/dist/crud/relations/fixtures/repositories/payment-method.repository.js.map +1 -0
  105. package/dist/crud/relations/fixtures/repositories/promotion.repository.d.ts +49 -0
  106. package/dist/crud/relations/fixtures/repositories/promotion.repository.js +25 -0
  107. package/dist/crud/relations/fixtures/repositories/promotion.repository.js.map +1 -0
  108. package/dist/crud/relations/fixtures/repositories/shipment.repository.js +1 -1
  109. package/dist/crud/relations/fixtures/repositories/shipment.repository.js.map +1 -1
  110. package/dist/crud/relations/fixtures/repositories/supplier.repository.d.ts +28 -0
  111. package/dist/crud/relations/fixtures/repositories/supplier.repository.js +21 -0
  112. package/dist/crud/relations/fixtures/repositories/supplier.repository.js.map +1 -0
  113. package/dist/crud/relations/fixtures/repositories/user-link.repository.js +1 -1
  114. package/dist/crud/relations/fixtures/repositories/user-link.repository.js.map +1 -1
  115. package/dist/crud/relations/fixtures/repositories/user.repository.js +1 -1
  116. package/dist/crud/relations/fixtures/repositories/user.repository.js.map +1 -1
  117. package/dist/crud/relations/helpers.d.ts +9 -1
  118. package/dist/crud/relations/helpers.js +86 -11
  119. package/dist/crud/relations/helpers.js.map +1 -1
  120. package/dist/crud/replace-by-id.suite.js +1 -1
  121. package/dist/crud/replace-by-id.suite.js.map +1 -1
  122. package/dist/crud/transactions.suite.js +1 -1
  123. package/dist/crud/transactions.suite.js.map +1 -1
  124. package/dist/crud-test-suite.js +1 -1
  125. package/dist/crud-test-suite.js.map +1 -1
  126. package/dist/helpers.repository-tests.d.ts +1 -1
  127. package/dist/helpers.repository-tests.js +1 -1
  128. package/dist/helpers.repository-tests.js.map +1 -1
  129. package/dist/index.js +1 -1
  130. package/dist/index.js.map +1 -1
  131. package/dist/types.repository-tests.js +1 -1
  132. package/dist/types.repository-tests.js.map +1 -1
  133. package/package.json +14 -14
  134. package/src/crud/create-retrieve.suite.ts +1 -1
  135. package/src/crud/freeform-properties.suite.ts +10 -6
  136. package/src/crud/nested-model-properties.suite.ts +1 -1
  137. package/src/crud/relations/acceptance/belongs-to.inclusion-resolver.polymorphic.relation.acceptance.ts +221 -0
  138. package/src/crud/relations/acceptance/belongs-to.inclusion-resolver.relation.acceptance.ts +1 -1
  139. package/src/crud/relations/acceptance/belongs-to.polymorphic.relation.acceptance.ts +88 -0
  140. package/src/crud/relations/acceptance/belongs-to.relation.acceptance.ts +1 -1
  141. package/src/crud/relations/acceptance/has-many-inclusion-resolver.relation.acceptance.ts +1 -1
  142. package/src/crud/relations/acceptance/has-many-through-inclusion-resolver.acceptance.ts +1 -1
  143. package/src/crud/relations/acceptance/has-many-through-inclusion-resolver.polymorphic.acceptance.ts +255 -0
  144. package/src/crud/relations/acceptance/has-many-through.relation.acceptance.ts +2 -2
  145. package/src/crud/relations/acceptance/has-many-through.relation.polymorphic.acceptance.ts +494 -0
  146. package/src/crud/relations/acceptance/has-many.relation.acceptance.ts +1 -1
  147. package/src/crud/relations/acceptance/has-one.inclusion-resolver.acceptance.ts +1 -1
  148. package/src/crud/relations/acceptance/has-one.inclusion-resolver.polymorphic.acceptance.ts +208 -0
  149. package/src/crud/relations/acceptance/has-one.relation.acceptance.ts +1 -1
  150. package/src/crud/relations/acceptance/has-one.relation.polymorphic.acceptance.ts +328 -0
  151. package/src/crud/relations/acceptance/multi-relations-inclusion-resolver.relation.acceptance.ts +1 -1
  152. package/src/crud/relations/fixtures/models/address.model.ts +1 -1
  153. package/src/crud/relations/fixtures/models/cart-item.model.ts +1 -1
  154. package/src/crud/relations/fixtures/models/contact.model.ts +56 -0
  155. package/src/crud/relations/fixtures/models/customer-cart-item-link.model.ts +1 -1
  156. package/src/crud/relations/fixtures/models/customer-promotion-link.model.ts +52 -0
  157. package/src/crud/relations/fixtures/models/customer.model.ts +40 -10
  158. package/src/crud/relations/fixtures/models/index.ts +7 -1
  159. package/src/crud/relations/fixtures/models/order.model.ts +1 -1
  160. package/src/crud/relations/fixtures/models/payment-method.model.ts +118 -0
  161. package/src/crud/relations/fixtures/models/promotion.model.ts +67 -0
  162. package/src/crud/relations/fixtures/models/shipment.model.ts +1 -1
  163. package/src/crud/relations/fixtures/models/stakeholder.model.ts +33 -0
  164. package/src/crud/relations/fixtures/models/supplier.model.ts +35 -0
  165. package/src/crud/relations/fixtures/models/user-link.model.ts +1 -1
  166. package/src/crud/relations/fixtures/models/user.model.ts +1 -1
  167. package/src/crud/relations/fixtures/repositories/address.repository.ts +1 -1
  168. package/src/crud/relations/fixtures/repositories/cart-item.repository.ts +1 -1
  169. package/src/crud/relations/fixtures/repositories/contact.repository.ts +44 -0
  170. package/src/crud/relations/fixtures/repositories/customer-cart-item-link.repository.ts +1 -1
  171. package/src/crud/relations/fixtures/repositories/customer-promotion-link.repository.ts +20 -0
  172. package/src/crud/relations/fixtures/repositories/customer.repository.ts +48 -1
  173. package/src/crud/relations/fixtures/repositories/index.ts +7 -2
  174. package/src/crud/relations/fixtures/repositories/order.repository.ts +1 -1
  175. package/src/crud/relations/fixtures/repositories/payment-method.repository.ts +118 -0
  176. package/src/crud/relations/fixtures/repositories/promotion.repository.ts +37 -0
  177. package/src/crud/relations/fixtures/repositories/shipment.repository.ts +1 -1
  178. package/src/crud/relations/fixtures/repositories/supplier.repository.ts +40 -0
  179. package/src/crud/relations/fixtures/repositories/user-link.repository.ts +1 -1
  180. package/src/crud/relations/fixtures/repositories/user.repository.ts +1 -1
  181. package/src/crud/relations/helpers.ts +201 -31
  182. package/src/crud/replace-by-id.suite.ts +1 -1
  183. package/src/crud/transactions.suite.ts +1 -1
  184. package/src/crud-test-suite.ts +1 -1
  185. package/src/helpers.repository-tests.ts +2 -2
  186. package/src/index.ts +1 -1
  187. package/src/types.repository-tests.ts +1 -1
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ // Copyright IBM Corp. and LoopBack contributors 2020. All Rights Reserved.
3
+ // Node module: @loopback/repository-tests
4
+ // This file is licensed under the MIT License.
5
+ // License text available at https://opensource.org/licenses/MIT
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.hasManyThroughInclusionResolverPolymorphicAcceptance = void 0;
8
+ const testlab_1 = require("@loopback/testlab");
9
+ const helpers_repository_tests_1 = require("../../../helpers.repository-tests");
10
+ const models_1 = require("../fixtures/models");
11
+ const helpers_1 = require("../helpers");
12
+ function hasManyThroughInclusionResolverPolymorphicAcceptance(dataSourceOptions, repositoryClass, features) {
13
+ (0, testlab_1.skipIf)(!features.supportsInclusionResolvers, describe, 'HasManyThrough inclusion resolvers - polymorphic - acceptance', suite);
14
+ function suite() {
15
+ describe('HasManyThrough inclusion resolver', () => {
16
+ before(helpers_repository_tests_1.deleteAllModelsInDefaultDataSource);
17
+ let customerRepo;
18
+ let freeDeliveryRepo;
19
+ let halfPriceRepo;
20
+ let customerPromotionLinkRepo;
21
+ before((0, helpers_repository_tests_1.withCrudCtx)(async function setupRepository(ctx) {
22
+ // this helper should create the inclusion resolvers and also
23
+ // register inclusion resolvers for us
24
+ ({
25
+ customerRepo,
26
+ freeDeliveryRepo,
27
+ halfPriceRepo,
28
+ customerPromotionLinkRepo,
29
+ } = (0, helpers_1.givenBoundCrudRepositories)(ctx.dataSource, repositoryClass, features));
30
+ (0, testlab_1.expect)(customerRepo.promotions.inclusionResolver).to.be.Function();
31
+ await ctx.dataSource.automigrate([
32
+ models_1.Customer.name,
33
+ models_1.FreeDelivery.name,
34
+ models_1.HalfPrice.name,
35
+ models_1.CustomerPromotionLink.name,
36
+ ]);
37
+ }));
38
+ beforeEach(async () => {
39
+ await customerRepo.deleteAll();
40
+ await freeDeliveryRepo.deleteAll();
41
+ await halfPriceRepo.deleteAll();
42
+ await customerPromotionLinkRepo.deleteAll();
43
+ });
44
+ it('throws an error if tries to query nonexistent relation names', async () => {
45
+ const customer = await customerRepo.create({ name: 'customer' });
46
+ await customerRepo
47
+ .promotions(customer.id)
48
+ .create({ description: 'crown' }, { polymorphicType: 'HalfPrice' });
49
+ await (0, testlab_1.expect)(customerRepo.find({ include: ['crown'] })).to.be.rejectedWith(`Invalid "filter.include" entries: "crown"`);
50
+ });
51
+ it('returns single model instance including single related instance', async () => {
52
+ const zelda = await customerRepo.create({ name: 'Zelda' });
53
+ const freeDelivery = await customerRepo.promotions(zelda.id).create({ description: 'crown' }, {
54
+ throughData: { promotiontype: 'FreeDelivery' },
55
+ polymorphicType: 'FreeDelivery',
56
+ });
57
+ const result = await customerRepo.find({
58
+ include: ['promotions'],
59
+ });
60
+ (0, testlab_1.expect)((0, testlab_1.toJSON)(result)).to.deepEqual([
61
+ (0, testlab_1.toJSON)({
62
+ ...zelda,
63
+ parentId: features.emptyValue,
64
+ promotions: [freeDelivery],
65
+ }),
66
+ ]);
67
+ });
68
+ it('returns multiple model instances including related instances', async () => {
69
+ const link = await customerRepo.create({ name: 'Link' });
70
+ const halfPrice = await customerRepo.promotions(link.id).create({ description: 'halfPrice' }, {
71
+ throughData: { promotiontype: 'HalfPrice' },
72
+ polymorphicType: 'HalfPrice',
73
+ });
74
+ const freeDelivery = await customerRepo.promotions(link.id).create({ description: 'freeDelivery' }, {
75
+ throughData: { promotiontype: 'FreeDelivery' },
76
+ polymorphicType: 'FreeDelivery',
77
+ });
78
+ const freeDelivery2 = await customerRepo.promotions(link.id).create({ description: 'freeDelivery 2' }, {
79
+ throughData: { promotiontype: 'FreeDelivery' },
80
+ polymorphicType: 'FreeDelivery',
81
+ });
82
+ const result = await customerRepo.find({
83
+ include: ['promotions'],
84
+ });
85
+ const expected = [
86
+ {
87
+ ...link,
88
+ parentId: features.emptyValue,
89
+ promotions: [halfPrice, freeDelivery, freeDelivery2],
90
+ },
91
+ ];
92
+ (0, testlab_1.expect)((0, testlab_1.toJSON)(result)).to.deepEqual((0, testlab_1.toJSON)(expected));
93
+ });
94
+ it('returns a specified instance including its related model instances', async () => {
95
+ const link = await customerRepo.create({ name: 'Link' });
96
+ const zelda = await customerRepo.create({ name: 'Zelda' });
97
+ await customerRepo.promotions(link.id).create({ description: 'crown' }, {
98
+ throughData: { promotiontype: 'HalfPrice' },
99
+ polymorphicType: 'HalfPrice',
100
+ });
101
+ const zeldaPromotion1 = await customerRepo.promotions(zelda.id).create({ description: 'shield' }, {
102
+ throughData: { promotiontype: 'FreeDelivery' },
103
+ polymorphicType: 'FreeDelivery',
104
+ });
105
+ const zeldaPromotion2 = await customerRepo.promotions(zelda.id).create({ description: 'green hat' }, {
106
+ throughData: { promotiontype: 'FreeDelivery' },
107
+ polymorphicType: 'FreeDelivery',
108
+ });
109
+ const result = await customerRepo.findById(zelda.id, {
110
+ include: ['promotions'],
111
+ });
112
+ const expected = {
113
+ ...zelda,
114
+ parentId: features.emptyValue,
115
+ promotions: [zeldaPromotion1, zeldaPromotion2],
116
+ };
117
+ (0, testlab_1.expect)((0, testlab_1.toJSON)(result)).to.deepEqual((0, testlab_1.toJSON)(expected));
118
+ });
119
+ it('honours field scope when returning a model', async () => {
120
+ const link = await customerRepo.create({ name: 'Link' });
121
+ const zelda = await customerRepo.create({ name: 'Zelda' });
122
+ const sword = await customerRepo.promotions(link.id).create({ description: 'master sword' }, {
123
+ throughData: { promotiontype: 'HalfPrice' },
124
+ polymorphicType: 'HalfPrice',
125
+ });
126
+ const shield = await customerRepo.promotions(zelda.id).create({ description: 'shield' }, {
127
+ throughData: { promotiontype: 'FreeDelivery' },
128
+ polymorphicType: 'FreeDelivery',
129
+ });
130
+ const hat = await customerRepo.promotions(zelda.id).create({ description: 'hat' }, {
131
+ throughData: { promotiontype: 'HalfPrice' },
132
+ polymorphicType: 'HalfPrice',
133
+ });
134
+ const result = await customerRepo.find({
135
+ include: [{ relation: 'promotions', scope: { fields: { id: false } } }],
136
+ });
137
+ const expected = [
138
+ {
139
+ ...link,
140
+ parentId: features.emptyValue,
141
+ promotions: [{ description: sword.description }],
142
+ },
143
+ {
144
+ ...zelda,
145
+ parentId: features.emptyValue,
146
+ promotions: [
147
+ { description: shield.description },
148
+ { description: hat.description },
149
+ ],
150
+ },
151
+ ];
152
+ (0, testlab_1.expect)((0, testlab_1.toJSON)(result)).to.deepEqual((0, testlab_1.toJSON)(expected));
153
+ });
154
+ it('honours limit scope when returning a model', async () => {
155
+ const link = await customerRepo.create({ name: 'Link' });
156
+ await customerRepo
157
+ .cartItems(link.id)
158
+ .create({ description: 'master sword' });
159
+ await customerRepo.cartItems(link.id).create({ description: 'shield' });
160
+ const result = await customerRepo.find({
161
+ include: [{ relation: 'cartItems', scope: { limit: 1 } }],
162
+ });
163
+ (0, testlab_1.expect)(result.length).to.eql(1);
164
+ (0, testlab_1.expect)(result[0].cartItems.length).to.eql(1);
165
+ });
166
+ });
167
+ }
168
+ }
169
+ exports.hasManyThroughInclusionResolverPolymorphicAcceptance = hasManyThroughInclusionResolverPolymorphicAcceptance;
170
+ //# sourceMappingURL=has-many-through-inclusion-resolver.polymorphic.acceptance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"has-many-through-inclusion-resolver.polymorphic.acceptance.js","sourceRoot":"","sources":["../../../../src/crud/relations/acceptance/has-many-through-inclusion-resolver.polymorphic.acceptance.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  "use strict";
2
- // Copyright IBM Corp. 2020. All Rights Reserved.
2
+ // Copyright IBM Corp. and LoopBack contributors 2020. All Rights Reserved.
3
3
  // Node module: @loopback/repository-tests
4
4
  // This file is licensed under the MIT License.
5
5
  // License text available at https://opensource.org/licenses/MIT
@@ -1 +1 @@
1
- {"version":3,"file":"has-many-through.relation.acceptance.js","sourceRoot":"","sources":["../../../../src/crud/relations/acceptance/has-many-through.relation.acceptance.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"has-many-through.relation.acceptance.js","sourceRoot":"","sources":["../../../../src/crud/relations/acceptance/has-many-through.relation.acceptance.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ import { CrudFeatures, CrudRepositoryCtor, DataSourceOptions } from '../../..';
2
+ export declare function hasManyThroughRelationAcceptance(dataSourceOptions: DataSourceOptions, repositoryClass: CrudRepositoryCtor, features: CrudFeatures): void;
@@ -0,0 +1,361 @@
1
+ "use strict";
2
+ // Copyright IBM Corp. and LoopBack contributors 2020. All Rights Reserved.
3
+ // Node module: @loopback/repository-tests
4
+ // This file is licensed under the MIT License.
5
+ // License text available at https://opensource.org/licenses/MIT
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.hasManyThroughRelationAcceptance = void 0;
8
+ const testlab_1 = require("@loopback/testlab");
9
+ const helpers_repository_tests_1 = require("../../../helpers.repository-tests");
10
+ const models_1 = require("../fixtures/models");
11
+ const helpers_1 = require("../helpers");
12
+ function hasManyThroughRelationAcceptance(dataSourceOptions, repositoryClass, features) {
13
+ describe('HasManyThrough relation polymorphic (acceptance)', () => {
14
+ before(helpers_repository_tests_1.deleteAllModelsInDefaultDataSource);
15
+ let customerRepo;
16
+ let freeDeliveryRepo;
17
+ let halfPriceRepo;
18
+ let customerPromotionLinkRepo;
19
+ let existingCustomerId;
20
+ before((0, helpers_repository_tests_1.withCrudCtx)(async function setupRepository(ctx) {
21
+ ({
22
+ customerRepo,
23
+ freeDeliveryRepo,
24
+ halfPriceRepo,
25
+ customerPromotionLinkRepo,
26
+ } = (0, helpers_1.givenBoundCrudRepositories)(ctx.dataSource, repositoryClass, features));
27
+ await ctx.dataSource.automigrate([
28
+ models_1.Customer.name,
29
+ models_1.FreeDelivery.name,
30
+ models_1.HalfPrice.name,
31
+ models_1.CustomerPromotionLink.name,
32
+ ]);
33
+ }));
34
+ beforeEach(async () => {
35
+ await customerRepo.deleteAll();
36
+ await freeDeliveryRepo.deleteAll();
37
+ await halfPriceRepo.deleteAll();
38
+ await customerPromotionLinkRepo.deleteAll();
39
+ });
40
+ beforeEach(async () => {
41
+ existingCustomerId = (await givenPersistedCustomerInstance()).id;
42
+ });
43
+ it('creates an instance of the related model alone with a through model', async () => {
44
+ const promo = await customerRepo.promotions(existingCustomerId).create({ description: 'free delivery promo' }, {
45
+ throughData: {
46
+ description: 'a through model',
47
+ promotiontype: 'FreeDelivery',
48
+ },
49
+ polymorphicType: 'FreeDelivery',
50
+ });
51
+ (0, testlab_1.expect)((0, testlab_1.toJSON)(promo)).containDeep((0, testlab_1.toJSON)({
52
+ id: promo.id,
53
+ description: 'free delivery promo',
54
+ }));
55
+ const persistedPromo = await freeDeliveryRepo.findById(promo.id);
56
+ (0, testlab_1.expect)((0, testlab_1.toJSON)(persistedPromo)).to.deepEqual((0, testlab_1.toJSON)(promo));
57
+ const persistedLink = await customerPromotionLinkRepo.find();
58
+ (0, testlab_1.expect)((0, testlab_1.toJSON)(persistedLink[0])).to.containDeep((0, testlab_1.toJSON)({
59
+ customerId: existingCustomerId,
60
+ // eslint-disable-next-line @typescript-eslint/naming-convention
61
+ promotion_id: promo.id,
62
+ description: 'a through model',
63
+ }));
64
+ });
65
+ it('finds instances of the related model', async () => {
66
+ const freeDelivery = await customerRepo
67
+ .promotions(existingCustomerId)
68
+ .create({ description: 'free delivery promo' }, {
69
+ throughData: {
70
+ description: 'a through model',
71
+ promotiontype: 'FreeDelivery',
72
+ },
73
+ polymorphicType: 'FreeDelivery',
74
+ });
75
+ const notMyPromo = await freeDeliveryRepo.create({
76
+ description: "someone else's promo",
77
+ });
78
+ const notMyPromo2 = await halfPriceRepo.create({
79
+ description: "someone else's promo 2",
80
+ });
81
+ const result = await customerRepo
82
+ .promotions(existingCustomerId)
83
+ .find(undefined, {
84
+ throughOptions: { discriminator: 'promotiontype' },
85
+ polymorphicType: ['FreeDelivery'],
86
+ });
87
+ (0, testlab_1.expect)((0, testlab_1.toJSON)(result)).to.containDeep((0, testlab_1.toJSON)([freeDelivery]));
88
+ (0, testlab_1.expect)((0, testlab_1.toJSON)(result[0])).to.not.containEql((0, testlab_1.toJSON)(notMyPromo));
89
+ (0, testlab_1.expect)((0, testlab_1.toJSON)(result[0])).to.not.containEql((0, testlab_1.toJSON)(notMyPromo2));
90
+ });
91
+ it('patches instances', async () => {
92
+ const promo1 = await customerRepo.promotions(existingCustomerId).create({ description: 'free delivery promo' }, {
93
+ throughData: {
94
+ description: 'a through model',
95
+ promotiontype: 'FreeDelivery',
96
+ },
97
+ polymorphicType: 'FreeDelivery',
98
+ });
99
+ const promo2 = await customerRepo.promotions(existingCustomerId).create({ description: 'half price promo 2' }, {
100
+ throughData: {
101
+ description: 'a through model',
102
+ promotiontype: 'HalfPrice',
103
+ },
104
+ polymorphicType: 'HalfPrice',
105
+ });
106
+ const promo3 = await customerRepo.promotions(existingCustomerId).create({ description: 'free delivery promo 3' }, {
107
+ throughData: {
108
+ description: 'a through model',
109
+ promotiontype: 'FreeDelivery',
110
+ },
111
+ polymorphicType: 'FreeDelivery',
112
+ });
113
+ const count = await customerRepo.promotions(existingCustomerId).patch({
114
+ FreeDelivery: { description: 'updated free delivery' },
115
+ HalfPrice: { description: 'updated half price' },
116
+ }, undefined, {
117
+ throughOptions: { discriminator: 'promotiontype' },
118
+ isPolymorphic: true,
119
+ });
120
+ (0, testlab_1.expect)(count.count).to.equal(3);
121
+ const result = await customerRepo
122
+ .promotions(existingCustomerId)
123
+ .find(undefined, {
124
+ throughOptions: { discriminator: 'promotiontype' },
125
+ polymorphicType: ['HalfPrice', 'FreeDelivery'],
126
+ });
127
+ (0, testlab_1.expect)((0, testlab_1.toJSON)(result)).to.containDeep((0, testlab_1.toJSON)([
128
+ { id: promo1.id, description: 'updated free delivery' },
129
+ { id: promo2.id, description: 'updated half price' },
130
+ { id: promo3.id, description: 'updated free delivery' },
131
+ ]));
132
+ });
133
+ it('patches an instance based on the filter', async () => {
134
+ const promo1 = await customerRepo.promotions(existingCustomerId).create({ description: 'promo group 1' }, {
135
+ throughData: {
136
+ description: 'a through model',
137
+ promotiontype: 'FreeDelivery',
138
+ },
139
+ polymorphicType: 'FreeDelivery',
140
+ });
141
+ const promo2 = await customerRepo.promotions(existingCustomerId).create({ description: 'promo group 2' }, {
142
+ throughData: {
143
+ description: 'a through model',
144
+ promotiontype: 'FreeDelivery',
145
+ },
146
+ polymorphicType: 'FreeDelivery',
147
+ });
148
+ const promo3 = await customerRepo.promotions(existingCustomerId).create({ description: 'promo group 1' }, {
149
+ throughData: {
150
+ description: 'a through model',
151
+ promotiontype: 'HalfPrice',
152
+ },
153
+ polymorphicType: 'HalfPrice',
154
+ });
155
+ const count = await customerRepo.promotions(existingCustomerId).patch({ HalfPrice: { description: 'promo group 2' } }, { id: promo3.id }, {
156
+ throughOptions: { discriminator: 'promotiontype' },
157
+ isPolymorphic: true,
158
+ });
159
+ (0, testlab_1.expect)(count.count).to.equal(1);
160
+ const result = await customerRepo
161
+ .promotions(existingCustomerId)
162
+ .find(undefined, {
163
+ throughOptions: { discriminator: 'promotiontype' },
164
+ polymorphicType: ['HalfPrice', 'FreeDelivery'],
165
+ });
166
+ (0, testlab_1.expect)((0, testlab_1.toJSON)(result)).to.containDeep((0, testlab_1.toJSON)([
167
+ { id: promo1.id, description: 'promo group 1' },
168
+ { id: promo2.id, description: 'promo group 2' },
169
+ { id: promo3.id, description: 'promo group 2' },
170
+ ]));
171
+ });
172
+ it('throws error when query tries to change the target id', async () => {
173
+ // a diff id for CartItem instance
174
+ const anotherId = (await givenPersistedCustomerInstance()).id;
175
+ await customerRepo.promotions(existingCustomerId).create({ description: 'promo group 1' }, {
176
+ throughData: {
177
+ description: 'a through model',
178
+ promotiontype: 'HalfPrice',
179
+ },
180
+ polymorphicType: 'HalfPrice',
181
+ });
182
+ await (0, testlab_1.expect)(customerRepo
183
+ .promotions(existingCustomerId)
184
+ .patch({ HalfPrice: { id: anotherId } }, undefined, {
185
+ throughOptions: { discriminator: 'promotiontype' },
186
+ isPolymorphic: true,
187
+ })).to.be.rejectedWith(/Property "id" cannot be changed!/);
188
+ });
189
+ it('deletes many instances and their through models', async () => {
190
+ await customerRepo.promotions(existingCustomerId).create({ description: 'promo group 1' }, {
191
+ throughData: {
192
+ description: 'a through model to be deleted',
193
+ promotiontype: 'HalfPrice',
194
+ },
195
+ polymorphicType: 'HalfPrice',
196
+ });
197
+ await customerRepo.promotions(existingCustomerId).create({ description: 'promo group 1' }, {
198
+ throughData: {
199
+ description: 'a through model to be deleted 2',
200
+ promotiontype: 'HalfPrice',
201
+ },
202
+ polymorphicType: 'HalfPrice',
203
+ });
204
+ await customerRepo.promotions(existingCustomerId).create({ description: 'promo group 1' }, {
205
+ throughData: {
206
+ description: 'a through model to be deleted 3',
207
+ promotiontype: 'FreeDelivery',
208
+ },
209
+ polymorphicType: 'FreeDelivery',
210
+ });
211
+ let links = await customerPromotionLinkRepo.find();
212
+ let halfPrice = await halfPriceRepo.find();
213
+ let freeDelivery = await freeDeliveryRepo.find();
214
+ (0, testlab_1.expect)(links).have.length(3);
215
+ (0, testlab_1.expect)(halfPrice).have.length(2);
216
+ (0, testlab_1.expect)(freeDelivery).have.length(1);
217
+ await customerRepo.promotions(existingCustomerId).delete(undefined, {
218
+ throughOptions: { discriminator: 'promotiontype' },
219
+ polymorphicType: ['HalfPrice', 'FreeDelivery'],
220
+ });
221
+ links = await customerPromotionLinkRepo.find();
222
+ halfPrice = await halfPriceRepo.find();
223
+ freeDelivery = await freeDeliveryRepo.find();
224
+ (0, testlab_1.expect)(halfPrice).have.length(0);
225
+ (0, testlab_1.expect)(freeDelivery).have.length(0);
226
+ (0, testlab_1.expect)(links).have.length(0);
227
+ });
228
+ it('deletes corresponding through models when the target gets deleted', async () => {
229
+ const promotion = await customerRepo
230
+ .promotions(existingCustomerId)
231
+ .create({ description: 'promo group 1' }, {
232
+ throughData: {
233
+ description: 'a through model to be deleted',
234
+ promotiontype: 'HalfPrice',
235
+ },
236
+ polymorphicType: 'HalfPrice',
237
+ });
238
+ const anotherId = (await givenPersistedCustomerInstance()).id;
239
+ // another through model that links to the same item
240
+ await customerPromotionLinkRepo.create({
241
+ customerId: anotherId,
242
+ // eslint-disable-next-line @typescript-eslint/naming-convention
243
+ promotion_id: promotion.id,
244
+ promotiontype: 'HalfPrice',
245
+ });
246
+ let links = await customerPromotionLinkRepo.find();
247
+ let halfPrice = await halfPriceRepo.find();
248
+ (0, testlab_1.expect)(links).have.length(2);
249
+ (0, testlab_1.expect)(halfPrice).have.length(1);
250
+ await customerRepo.promotions(existingCustomerId).delete(undefined, {
251
+ throughOptions: { discriminator: 'promotiontype' },
252
+ polymorphicType: ['HalfPrice', 'FreeDelivery'],
253
+ });
254
+ links = await customerPromotionLinkRepo.find();
255
+ halfPrice = await halfPriceRepo.find();
256
+ (0, testlab_1.expect)(links).have.length(0);
257
+ (0, testlab_1.expect)(halfPrice).have.length(0);
258
+ });
259
+ it('deletes instances based on the filter', async () => {
260
+ await customerRepo.promotions(existingCustomerId).create({ description: 'promo group 1' }, {
261
+ throughData: {
262
+ description: 'a through model to be deleted',
263
+ promotiontype: 'HalfPrice',
264
+ },
265
+ polymorphicType: 'HalfPrice',
266
+ });
267
+ await customerRepo.promotions(existingCustomerId).create({ description: 'promo group 2' }, {
268
+ throughData: {
269
+ description: 'a through model to be deleted',
270
+ promotiontype: 'FreeDelivery',
271
+ },
272
+ polymorphicType: 'FreeDelivery',
273
+ });
274
+ let links = await customerPromotionLinkRepo.find();
275
+ let freeDelivery = await freeDeliveryRepo.find();
276
+ let halfPrice = await halfPriceRepo.find();
277
+ (0, testlab_1.expect)(links).have.length(2);
278
+ (0, testlab_1.expect)(freeDelivery).have.length(1);
279
+ (0, testlab_1.expect)(halfPrice).have.length(1);
280
+ await customerRepo.promotions(existingCustomerId).delete({ description: 'does not exist' }, {
281
+ throughOptions: { discriminator: 'promotiontype' },
282
+ polymorphicType: ['HalfPrice', 'FreeDelivery'],
283
+ });
284
+ links = await customerPromotionLinkRepo.find();
285
+ freeDelivery = await freeDeliveryRepo.find();
286
+ halfPrice = await halfPriceRepo.find();
287
+ (0, testlab_1.expect)(links).have.length(2);
288
+ (0, testlab_1.expect)(freeDelivery).have.length(1);
289
+ (0, testlab_1.expect)(halfPrice).have.length(1);
290
+ await customerRepo.promotions(existingCustomerId).delete({ description: 'promo group 2' }, {
291
+ throughOptions: { discriminator: 'promotiontype' },
292
+ polymorphicType: ['HalfPrice', 'FreeDelivery'],
293
+ });
294
+ links = await customerPromotionLinkRepo.find();
295
+ freeDelivery = await freeDeliveryRepo.find();
296
+ halfPrice = await halfPriceRepo.find();
297
+ (0, testlab_1.expect)(links).have.length(1);
298
+ (0, testlab_1.expect)(freeDelivery).have.length(0);
299
+ (0, testlab_1.expect)(halfPrice).have.length(1);
300
+ });
301
+ it('links a target model to a source model', async () => {
302
+ const freeDelivery = await freeDeliveryRepo.create({
303
+ description: 'a free delivery promotion',
304
+ });
305
+ let targets = await customerRepo
306
+ .promotions(existingCustomerId)
307
+ .find(undefined, {
308
+ throughOptions: { discriminator: 'promotiontype' },
309
+ polymorphicType: ['HalfPrice', 'FreeDelivery'],
310
+ });
311
+ (0, testlab_1.expect)(targets).to.be.empty();
312
+ await customerRepo
313
+ .promotions(existingCustomerId)
314
+ .link(freeDelivery.id, { throughData: { promotiontype: 'FreeDelivery' } });
315
+ targets = await customerRepo
316
+ .promotions(existingCustomerId)
317
+ .find(undefined, {
318
+ throughOptions: { discriminator: 'promotiontype' },
319
+ polymorphicType: ['HalfPrice', 'FreeDelivery'],
320
+ });
321
+ (0, testlab_1.expect)(targets).to.deepEqual([freeDelivery]);
322
+ const link = await customerPromotionLinkRepo.find();
323
+ (0, testlab_1.expect)((0, testlab_1.toJSON)(link[0])).to.containEql(
324
+ // eslint-disable-next-line @typescript-eslint/naming-convention
325
+ (0, testlab_1.toJSON)({ customerId: existingCustomerId, promotion_id: freeDelivery.id }));
326
+ });
327
+ it('unlinks a target model from a source model', async () => {
328
+ const promotion1 = await customerRepo
329
+ .promotions(existingCustomerId)
330
+ .create({ description: 'promo group 1' }, {
331
+ throughData: {
332
+ description: 'a through model to be deleted',
333
+ promotiontype: 'HalfPrice',
334
+ },
335
+ polymorphicType: 'HalfPrice',
336
+ });
337
+ let targets = await customerRepo
338
+ .promotions(existingCustomerId)
339
+ .find(undefined, {
340
+ throughOptions: { discriminator: 'promotiontype' },
341
+ polymorphicType: ['HalfPrice', 'FreeDelivery'],
342
+ });
343
+ (0, testlab_1.expect)(targets).to.deepEqual([promotion1]);
344
+ await customerRepo.promotions(existingCustomerId).unlink(promotion1.id);
345
+ targets = await customerRepo
346
+ .promotions(existingCustomerId)
347
+ .find(undefined, {
348
+ throughOptions: { discriminator: 'promotiontype' },
349
+ polymorphicType: ['HalfPrice', 'FreeDelivery'],
350
+ });
351
+ (0, testlab_1.expect)(targets).to.be.empty();
352
+ const link = await customerPromotionLinkRepo.find();
353
+ (0, testlab_1.expect)(link).to.be.empty();
354
+ });
355
+ async function givenPersistedCustomerInstance() {
356
+ return customerRepo.create({ name: 'a customer' });
357
+ }
358
+ });
359
+ }
360
+ exports.hasManyThroughRelationAcceptance = hasManyThroughRelationAcceptance;
361
+ //# sourceMappingURL=has-many-through.relation.polymorphic.acceptance.js.map