@goatlab/fluent 0.7.40 → 0.7.41

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 (39) hide show
  1. package/dist/BaseConnector.js +8 -4
  2. package/dist/BaseConnector.js.map +1 -1
  3. package/dist/FluentEntity.js +5 -0
  4. package/dist/FluentEntity.js.map +1 -1
  5. package/dist/TypeOrmConnector/TypeOrmConnector.js +5 -0
  6. package/dist/TypeOrmConnector/TypeOrmConnector.js.map +1 -1
  7. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.d.ts +44 -0
  8. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.js +87 -0
  9. package/dist/TypeOrmConnector/test/advanced/typeOrm.entity.js.map +1 -0
  10. package/dist/TypeOrmConnector/test/basic/goat.entity.d.ts +38 -0
  11. package/dist/TypeOrmConnector/test/basic/goat.entity.js +82 -0
  12. package/dist/TypeOrmConnector/test/basic/goat.entity.js.map +1 -0
  13. package/dist/TypeOrmConnector/test/flock.d.ts +4 -0
  14. package/dist/TypeOrmConnector/test/flock.js +26 -0
  15. package/dist/TypeOrmConnector/test/flock.js.map +1 -0
  16. package/dist/core/Loopback/json-to-schema.js +3 -3
  17. package/dist/core/Loopback/json-to-schema.js.map +1 -1
  18. package/dist/core/Loopback/mapValues.js +2280 -0
  19. package/dist/core/Loopback/model.js +7 -0
  20. package/dist/core/Loopback/model.js.map +1 -1
  21. package/dist/core/Loopback/query.js +2 -0
  22. package/dist/core/Loopback/query.js.map +1 -1
  23. package/dist/core/Nestjs/types/lazy-metadata.storage.js +1 -3
  24. package/dist/core/Nestjs/types/lazy-metadata.storage.js.map +1 -1
  25. package/dist/core/Nestjs/types/type-metadata.storage.js +21 -23
  26. package/dist/core/Nestjs/types/type-metadata.storage.js.map +1 -1
  27. package/dist/decorators.js +2 -1
  28. package/dist/decorators.js.map +1 -1
  29. package/dist/index.d.ts +4 -0
  30. package/dist/index.js +10 -1
  31. package/dist/index.js.map +1 -1
  32. package/dist/testing/genericUnifiedTestSuite.d.ts +21 -0
  33. package/dist/testing/genericUnifiedTestSuite.js +256 -0
  34. package/dist/testing/genericUnifiedTestSuite.js.map +1 -0
  35. package/dist/testing/unifiedTestFactory.d.ts +38 -0
  36. package/dist/testing/unifiedTestFactory.js +297 -0
  37. package/dist/testing/unifiedTestFactory.js.map +1 -0
  38. package/dist/tsconfig.tsbuildinfo +1 -1
  39. package/package.json +5 -5
@@ -0,0 +1,256 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.genericUnifiedTestSuite = void 0;
4
+ const vitest_1 = require("vitest");
5
+ const flock_1 = require("../TypeOrmConnector/test/flock");
6
+ const genericUnifiedTestSuite = (options) => {
7
+ const { createGoatConnector, createTypeOrmConnector, dbType } = options;
8
+ let GoatRepo;
9
+ let TypeOrmRepo;
10
+ (0, vitest_1.beforeAll)(() => {
11
+ GoatRepo = createGoatConnector();
12
+ TypeOrmRepo = createTypeOrmConnector();
13
+ });
14
+ (0, vitest_1.describe)('Basic Tests', () => {
15
+ (0, vitest_1.beforeEach)(async () => {
16
+ // Clear data before each test to ensure clean state
17
+ await GoatRepo.clear();
18
+ });
19
+ (0, vitest_1.it)('insert - Should insert data', async () => {
20
+ const a = await GoatRepo.insert({ name: 'myGoat', age: 13 });
21
+ (0, vitest_1.expect)(typeof a.id).toBe('string');
22
+ (0, vitest_1.expect)(a.name).toBe('myGoat');
23
+ });
24
+ (0, vitest_1.it)('insert - Should insert data with customId', async () => {
25
+ const customId = dbType === 'postgresql'
26
+ ? '550e8400-e29b-41d4-a716-446655440000'
27
+ : '631ce4304f9183f61ffb613a';
28
+ const a = await GoatRepo.insert({
29
+ id: customId,
30
+ name: 'myGoat',
31
+ age: 13
32
+ });
33
+ (0, vitest_1.expect)(typeof a.id).toBe('string');
34
+ (0, vitest_1.expect)(a.id).toBe(customId);
35
+ });
36
+ (0, vitest_1.it)('insertMany - Should insert Multiple elements', async () => {
37
+ const insertedFlock = await GoatRepo.insertMany(flock_1.flock);
38
+ (0, vitest_1.expect)(insertedFlock[0].name).toBe('Goatee');
39
+ });
40
+ (0, vitest_1.it)('findById - Should GET an object by its ID', async () => {
41
+ const goats = await GoatRepo.insertMany(flock_1.flock);
42
+ const goat = await GoatRepo.findById(goats[0].id);
43
+ (0, vitest_1.expect)(goat?.id).toBe(goats[0].id);
44
+ (0, vitest_1.expect)(typeof goat?.id).toBe('string');
45
+ const anotherGoat = await GoatRepo.findById('507f1f77bcf86cd799439011');
46
+ (0, vitest_1.expect)(anotherGoat).toBe(null);
47
+ });
48
+ (0, vitest_1.it)('findById - Should GET selected Data', async () => {
49
+ const goats = await GoatRepo.insertMany(flock_1.flock);
50
+ const goat = await GoatRepo.findById(goats[0].id, {
51
+ select: { name: true }
52
+ });
53
+ (0, vitest_1.expect)(goat?.name).toBe(goats[0].name);
54
+ (0, vitest_1.expect)(goat?.age).toBeUndefined();
55
+ });
56
+ (0, vitest_1.it)('findByIds - Should GET data', async () => {
57
+ const goats = await GoatRepo.insertMany(flock_1.flock);
58
+ const storedGoats = await GoatRepo.findByIds([goats[0].id, goats[1].id]);
59
+ (0, vitest_1.expect)(storedGoats.length).toBe(2);
60
+ });
61
+ (0, vitest_1.it)('findByIds - Should GET selectedData', async () => {
62
+ const goats = await GoatRepo.insertMany(flock_1.flock);
63
+ const storedGoats = await GoatRepo.findByIds([goats[0].id, goats[1].id], { select: { name: true } });
64
+ (0, vitest_1.expect)(storedGoats[0]?.name).toBe(goats[0].name);
65
+ (0, vitest_1.expect)(storedGoats[0]?.age).toBeUndefined();
66
+ });
67
+ (0, vitest_1.it)('findMany - Should GET data', async () => {
68
+ await GoatRepo.insertMany(flock_1.flock);
69
+ const goats = await GoatRepo.findMany();
70
+ (0, vitest_1.expect)(goats.length).toBeGreaterThanOrEqual(flock_1.flock.length);
71
+ });
72
+ (0, vitest_1.it)('findMany - Should FILTER data', async () => {
73
+ await GoatRepo.insertMany(flock_1.flock);
74
+ const goats = await GoatRepo.findMany({
75
+ where: { breed: { family: 'Angora' } }
76
+ });
77
+ (0, vitest_1.expect)(goats.length).toBe(2);
78
+ });
79
+ (0, vitest_1.it)('findMany - Should FILTER not existing data', async () => {
80
+ await GoatRepo.insertMany(flock_1.flock);
81
+ const goats = await GoatRepo.findMany({
82
+ where: { name: 'TESTESTEST' }
83
+ });
84
+ (0, vitest_1.expect)(goats.length).toBe(0);
85
+ });
86
+ (0, vitest_1.it)('findMany - Should SELECT attributes', async () => {
87
+ await GoatRepo.insertMany(flock_1.flock);
88
+ const goats = await GoatRepo.findMany({
89
+ select: { name: true }
90
+ });
91
+ (0, vitest_1.expect)(goats[0]?.name).toBeDefined();
92
+ (0, vitest_1.expect)(goats[0]?.age).toBeUndefined();
93
+ });
94
+ (0, vitest_1.it)('findFirst - Should get only 1 object back', async () => {
95
+ await GoatRepo.insertMany(flock_1.flock);
96
+ const goat = await GoatRepo.findFirst();
97
+ (0, vitest_1.expect)(goat).toBeDefined();
98
+ (0, vitest_1.expect)(goat?.name).toBeDefined();
99
+ });
100
+ (0, vitest_1.it)('findFirst - Should FILTER AND SELECT DATA', async () => {
101
+ await GoatRepo.insertMany(flock_1.flock);
102
+ const goat = await GoatRepo.findFirst({
103
+ where: { breed: { family: 'Angora' } },
104
+ select: { name: true }
105
+ });
106
+ (0, vitest_1.expect)(goat?.name).toBeDefined();
107
+ (0, vitest_1.expect)(goat?.age).toBeUndefined();
108
+ });
109
+ (0, vitest_1.it)('requireFirst - Should fail if not found', async () => {
110
+ await (0, vitest_1.expect)(GoatRepo.requireFirst()).rejects.toThrow();
111
+ });
112
+ (0, vitest_1.it)('requireFirst - Should find first item', async () => {
113
+ await GoatRepo.insertMany(flock_1.flock);
114
+ const goat = await GoatRepo.requireFirst();
115
+ (0, vitest_1.expect)(goat).toBeDefined();
116
+ (0, vitest_1.expect)(goat.name).toBeDefined();
117
+ });
118
+ (0, vitest_1.it)('UpdateById - Should Update a single element', async () => {
119
+ const goats = await GoatRepo.insertMany(flock_1.flock);
120
+ await GoatRepo.updateById(goats[0].id, { name: 'MyNewName' });
121
+ const goat = await GoatRepo.findById(goats[0].id);
122
+ (0, vitest_1.expect)(goat?.name).toBe('MyNewName');
123
+ });
124
+ (0, vitest_1.it)('ReplaceById - Should Update a single element', async () => {
125
+ const goats = await GoatRepo.insertMany(flock_1.flock);
126
+ await GoatRepo.replaceById(goats[0].id, { name: 'MyNewName' });
127
+ const goat = await GoatRepo.findById(goats[0].id);
128
+ (0, vitest_1.expect)(goat?.name).toBe('MyNewName');
129
+ (0, vitest_1.expect)(goat?.age).toBeUndefined();
130
+ });
131
+ (0, vitest_1.it)('deleteById - Should delete an item', async () => {
132
+ const goats = await GoatRepo.insertMany(flock_1.flock);
133
+ const id = await GoatRepo.deleteById(goats[0].id);
134
+ (0, vitest_1.expect)(id).toBe(goats[0].id);
135
+ const findDeleted = await GoatRepo.findById(goats[0].id);
136
+ (0, vitest_1.expect)(findDeleted).toBe(null);
137
+ });
138
+ });
139
+ (0, vitest_1.describe)('Advanced Tests', () => {
140
+ (0, vitest_1.beforeEach)(async () => {
141
+ await TypeOrmRepo.clear();
142
+ });
143
+ (0, vitest_1.it)('Should get local data', async () => {
144
+ await TypeOrmRepo.insert({ test: true });
145
+ const value = await TypeOrmRepo.findFirst();
146
+ (0, vitest_1.expect)(value?.test).toBe(true);
147
+ });
148
+ (0, vitest_1.it)('pluck() should return a single array', async () => {
149
+ await TypeOrmRepo.insertMany([
150
+ { test: true, order: 2 },
151
+ { test: false, order: 3 },
152
+ { test: true, order: 1 }
153
+ ]);
154
+ const plucked = await TypeOrmRepo.pluck('order');
155
+ (0, vitest_1.expect)(Array.isArray(plucked)).toBe(true);
156
+ (0, vitest_1.expect)(plucked).toContain(1);
157
+ (0, vitest_1.expect)(plucked).toContain(2);
158
+ (0, vitest_1.expect)(plucked).toContain(3);
159
+ });
160
+ (0, vitest_1.it)('limit() should limit the amount of results', async () => {
161
+ await TypeOrmRepo.insertMany([
162
+ { test: true },
163
+ { test: false },
164
+ { test: true }
165
+ ]);
166
+ const results = await TypeOrmRepo.findMany({ limit: 2 });
167
+ (0, vitest_1.expect)(results.length).toBe(2);
168
+ });
169
+ (0, vitest_1.it)('offset() should start at the given position', async () => {
170
+ const inserted = await TypeOrmRepo.insertMany([
171
+ { test: true, order: 1 },
172
+ { test: false, order: 2 },
173
+ { test: true, order: 3 }
174
+ ]);
175
+ const results = await TypeOrmRepo.findMany({
176
+ offset: 1,
177
+ orderBy: [{ order: 'asc' }]
178
+ });
179
+ (0, vitest_1.expect)(results.length).toBe(2);
180
+ (0, vitest_1.expect)(results[0].order).toBe(2);
181
+ });
182
+ (0, vitest_1.it)('orWhere() should filter the data', async () => {
183
+ await TypeOrmRepo.insertMany([
184
+ { test: true, order: 1 },
185
+ { test: false, order: 2 },
186
+ { test: true, order: 3 }
187
+ ]);
188
+ const results = await TypeOrmRepo.findMany({
189
+ where: {
190
+ OR: [
191
+ { test: true },
192
+ { order: 2 }
193
+ ]
194
+ }
195
+ });
196
+ (0, vitest_1.expect)(results.length).toBe(3);
197
+ });
198
+ (0, vitest_1.it)('orderBy() should order results desc', async () => {
199
+ await TypeOrmRepo.insertMany([
200
+ { test: true, order: 2 },
201
+ { test: false, order: 3 },
202
+ { test: true, order: 1 }
203
+ ]);
204
+ const results = await TypeOrmRepo.findMany({
205
+ orderBy: [{ order: 'desc' }]
206
+ });
207
+ (0, vitest_1.expect)(results[0].order).toBe(3);
208
+ (0, vitest_1.expect)(results[1].order).toBe(2);
209
+ (0, vitest_1.expect)(results[2].order).toBe(1);
210
+ });
211
+ (0, vitest_1.it)('orderBy() should order results asc', async () => {
212
+ await TypeOrmRepo.insertMany([
213
+ { test: true, order: 2 },
214
+ { test: false, order: 3 },
215
+ { test: true, order: 1 }
216
+ ]);
217
+ const results = await TypeOrmRepo.findMany({
218
+ orderBy: [{ order: 'asc' }]
219
+ });
220
+ (0, vitest_1.expect)(results[0].order).toBe(1);
221
+ (0, vitest_1.expect)(results[1].order).toBe(2);
222
+ (0, vitest_1.expect)(results[2].order).toBe(3);
223
+ });
224
+ (0, vitest_1.it)('orderBy() should order by Dates with Select()', async () => {
225
+ await new Promise(resolve => setTimeout(resolve, 10));
226
+ const first = await TypeOrmRepo.insert({ test: true });
227
+ await new Promise(resolve => setTimeout(resolve, 10));
228
+ const second = await TypeOrmRepo.insert({ test: true });
229
+ await new Promise(resolve => setTimeout(resolve, 10));
230
+ const third = await TypeOrmRepo.insert({ test: true });
231
+ const results = await TypeOrmRepo.findMany({
232
+ orderBy: [{ created: 'desc' }],
233
+ select: { id: true, created: true }
234
+ });
235
+ (0, vitest_1.expect)(results[0]?.id).toBe(third.id);
236
+ (0, vitest_1.expect)(results[1]?.id).toBe(second.id);
237
+ (0, vitest_1.expect)(results[2]?.id).toBe(first.id);
238
+ });
239
+ (0, vitest_1.it)('orderBy() should order by Dates without Select()', async () => {
240
+ await new Promise(resolve => setTimeout(resolve, 10));
241
+ const first = await TypeOrmRepo.insert({ test: true });
242
+ await new Promise(resolve => setTimeout(resolve, 10));
243
+ const second = await TypeOrmRepo.insert({ test: true });
244
+ await new Promise(resolve => setTimeout(resolve, 10));
245
+ const third = await TypeOrmRepo.insert({ test: true });
246
+ const results = await TypeOrmRepo.findMany({
247
+ orderBy: [{ created: 'desc' }]
248
+ });
249
+ (0, vitest_1.expect)(results[0]?.id).toBe(third.id);
250
+ (0, vitest_1.expect)(results[1]?.id).toBe(second.id);
251
+ (0, vitest_1.expect)(results[2]?.id).toBe(first.id);
252
+ });
253
+ });
254
+ };
255
+ exports.genericUnifiedTestSuite = genericUnifiedTestSuite;
256
+ //# sourceMappingURL=genericUnifiedTestSuite.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"genericUnifiedTestSuite.js","sourceRoot":"","sources":["../../src/testing/genericUnifiedTestSuite.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ export interface TestConnector {
2
+ insert(data: any): Promise<any>;
3
+ insertMany(data: any[]): Promise<any[]>;
4
+ findById(id: string, query?: any): Promise<any>;
5
+ findByIds(ids: string[], query?: any): Promise<any[]>;
6
+ findMany(query?: any): Promise<any[]>;
7
+ findFirst(query?: any): Promise<any>;
8
+ requireFirst(query?: any): Promise<any>;
9
+ updateById(id: string, data: any): Promise<any>;
10
+ replaceById(id: string, data: any): Promise<any>;
11
+ deleteById(id: string): Promise<string>;
12
+ clear(): Promise<boolean>;
13
+ pluck(field: string): Promise<any[]>;
14
+ }
15
+ export interface UnifiedTestOptions {
16
+ createGoatConnector: () => TestConnector;
17
+ createTypeOrmConnector: () => TestConnector;
18
+ dbType: 'mysql' | 'postgresql' | 'mongodb' | 'sqlite' | 'firebase' | 'formio' | 'loki' | 'pouchdb';
19
+ }
20
+ export declare const flock: {
21
+ name: string;
22
+ age: number;
23
+ type: string;
24
+ active: boolean;
25
+ weight: number;
26
+ balance: {
27
+ id: number;
28
+ value: number;
29
+ };
30
+ breed: {
31
+ type: string;
32
+ family: string;
33
+ };
34
+ }[];
35
+ export declare function createUnifiedTests(options: UnifiedTestOptions): {
36
+ runBasicTests: (describe: any, it: any, expect: any, beforeAll: any, beforeEach: any) => void;
37
+ runAdvancedTests: (describe: any, it: any, expect: any, beforeAll: any, beforeEach: any) => void;
38
+ };
@@ -0,0 +1,297 @@
1
+ "use strict";
2
+ // Factory for creating unified tests that work with any test framework
3
+ // This avoids the CommonJS/ESM issues with vitest
4
+ Object.defineProperty(exports, "__esModule", { value: true });
5
+ exports.flock = void 0;
6
+ exports.createUnifiedTests = createUnifiedTests;
7
+ exports.flock = [
8
+ {
9
+ name: 'Goatee',
10
+ age: 11,
11
+ type: 'sheep',
12
+ active: true,
13
+ weight: 110.5,
14
+ balance: { id: 1234, value: 200 },
15
+ breed: { type: 'Sheep', family: 'Sheep' }
16
+ },
17
+ {
18
+ name: 'Baaah',
19
+ age: 12,
20
+ type: 'sheep',
21
+ active: true,
22
+ weight: 130.5,
23
+ balance: { id: 1235, value: 200 },
24
+ breed: { type: 'Sheep', family: 'Sheep' }
25
+ },
26
+ {
27
+ name: 'Angor',
28
+ age: 13,
29
+ type: 'goat',
30
+ active: true,
31
+ weight: 105.5,
32
+ balance: { id: 1236, value: 200 },
33
+ breed: { type: 'Angora', family: 'Angora' }
34
+ },
35
+ {
36
+ name: 'Billy',
37
+ age: 10,
38
+ type: 'goat',
39
+ active: true,
40
+ weight: 140.0,
41
+ balance: { id: 1237, value: 200 },
42
+ breed: { type: 'Angora', family: 'Angora' }
43
+ }
44
+ ];
45
+ function createUnifiedTests(options) {
46
+ const { createGoatConnector, createTypeOrmConnector, dbType } = options;
47
+ return {
48
+ runBasicTests: (describe, it, expect, beforeAll, beforeEach) => {
49
+ let GoatRepo;
50
+ beforeAll(() => {
51
+ GoatRepo = createGoatConnector();
52
+ });
53
+ beforeEach(async () => {
54
+ await GoatRepo.clear();
55
+ });
56
+ it('insert - Should insert data', async () => {
57
+ const a = await GoatRepo.insert({ name: 'myGoat', age: 13 });
58
+ expect(typeof a.id).toBe('string');
59
+ expect(a.name).toBe('myGoat');
60
+ });
61
+ it('insert - Should insert data with customId', async () => {
62
+ const customId = dbType === 'postgresql'
63
+ ? '550e8400-e29b-41d4-a716-446655440000'
64
+ : '631ce4304f9183f61ffb613a';
65
+ const a = await GoatRepo.insert({
66
+ id: customId,
67
+ name: 'myGoat',
68
+ age: 13
69
+ });
70
+ expect(typeof a.id).toBe('string');
71
+ expect(a.id).toBe(customId);
72
+ });
73
+ it('insertMany - Should insert Multiple elements', async () => {
74
+ const insertedFlock = await GoatRepo.insertMany(exports.flock);
75
+ expect(insertedFlock[0].name).toBe('Goatee');
76
+ });
77
+ it('findById - Should GET an object by its ID', async () => {
78
+ const goats = await GoatRepo.insertMany(exports.flock);
79
+ const goat = await GoatRepo.findById(goats[0].id);
80
+ expect(goat?.id).toBe(goats[0].id);
81
+ expect(typeof goat?.id).toBe('string');
82
+ const anotherGoat = await GoatRepo.findById('507f1f77bcf86cd799439011');
83
+ expect(anotherGoat).toBe(null);
84
+ });
85
+ it('findById - Should GET selected Data', async () => {
86
+ const goats = await GoatRepo.insertMany(exports.flock);
87
+ const goat = await GoatRepo.findById(goats[0].id, {
88
+ select: { name: true }
89
+ });
90
+ expect(goat?.name).toBe(goats[0].name);
91
+ expect(goat?.age).toBeUndefined();
92
+ });
93
+ it('findByIds - Should GET data', async () => {
94
+ const goats = await GoatRepo.insertMany(exports.flock);
95
+ const storedGoats = await GoatRepo.findByIds([goats[0].id, goats[1].id]);
96
+ expect(storedGoats.length).toBe(2);
97
+ });
98
+ it('findByIds - Should GET selectedData', async () => {
99
+ const goats = await GoatRepo.insertMany(exports.flock);
100
+ const storedGoats = await GoatRepo.findByIds([goats[0].id, goats[1].id], { select: { name: true } });
101
+ expect(storedGoats[0]?.name).toBe(goats[0].name);
102
+ expect(storedGoats[0]?.age).toBeUndefined();
103
+ });
104
+ it('findMany - Should GET data', async () => {
105
+ await GoatRepo.insertMany(exports.flock);
106
+ const goats = await GoatRepo.findMany();
107
+ expect(goats.length).toBeGreaterThanOrEqual(exports.flock.length);
108
+ });
109
+ it('findMany - Should FILTER data', async () => {
110
+ await GoatRepo.insertMany(exports.flock);
111
+ const goats = await GoatRepo.findMany({
112
+ where: { breed: { family: 'Angora' } }
113
+ });
114
+ expect(goats.length).toBe(2);
115
+ });
116
+ it('findMany - Should FILTER not existing data', async () => {
117
+ await GoatRepo.insertMany(exports.flock);
118
+ const goats = await GoatRepo.findMany({
119
+ where: { name: 'TESTESTEST' }
120
+ });
121
+ expect(goats.length).toBe(0);
122
+ });
123
+ it('findMany - Should SELECT attributes', async () => {
124
+ await GoatRepo.insertMany(exports.flock);
125
+ const goats = await GoatRepo.findMany({
126
+ select: { name: true }
127
+ });
128
+ expect(goats[0]?.name).toBeDefined();
129
+ expect(goats[0]?.age).toBeUndefined();
130
+ });
131
+ it('findFirst - Should get only 1 object back', async () => {
132
+ await GoatRepo.insertMany(exports.flock);
133
+ const goat = await GoatRepo.findFirst();
134
+ expect(goat).toBeDefined();
135
+ expect(goat?.name).toBeDefined();
136
+ });
137
+ it('findFirst - Should FILTER AND SELECT DATA', async () => {
138
+ await GoatRepo.insertMany(exports.flock);
139
+ const goat = await GoatRepo.findFirst({
140
+ where: { breed: { family: 'Angora' } },
141
+ select: { name: true }
142
+ });
143
+ expect(goat?.name).toBeDefined();
144
+ expect(goat?.age).toBeUndefined();
145
+ });
146
+ it('requireFirst - Should fail if not found', async () => {
147
+ await expect(GoatRepo.requireFirst()).rejects.toThrow();
148
+ });
149
+ it('requireFirst - Should find first item', async () => {
150
+ await GoatRepo.insertMany(exports.flock);
151
+ const goat = await GoatRepo.requireFirst();
152
+ expect(goat).toBeDefined();
153
+ expect(goat.name).toBeDefined();
154
+ });
155
+ it('UpdateById - Should Update a single element', async () => {
156
+ const goats = await GoatRepo.insertMany(exports.flock);
157
+ await GoatRepo.updateById(goats[0].id, { name: 'MyNewName' });
158
+ const goat = await GoatRepo.findById(goats[0].id);
159
+ expect(goat?.name).toBe('MyNewName');
160
+ });
161
+ it('ReplaceById - Should Update a single element', async () => {
162
+ const goats = await GoatRepo.insertMany(exports.flock);
163
+ await GoatRepo.replaceById(goats[0].id, { name: 'MyNewName' });
164
+ const goat = await GoatRepo.findById(goats[0].id);
165
+ expect(goat?.name).toBe('MyNewName');
166
+ expect(goat?.age).toBeUndefined();
167
+ });
168
+ it('deleteById - Should delete an item', async () => {
169
+ const goats = await GoatRepo.insertMany(exports.flock);
170
+ const id = await GoatRepo.deleteById(goats[0].id);
171
+ expect(id).toBe(goats[0].id);
172
+ const findDeleted = await GoatRepo.findById(goats[0].id);
173
+ expect(findDeleted).toBe(null);
174
+ });
175
+ },
176
+ runAdvancedTests: (describe, it, expect, beforeAll, beforeEach) => {
177
+ let TypeOrmRepo;
178
+ beforeAll(() => {
179
+ TypeOrmRepo = createTypeOrmConnector();
180
+ });
181
+ beforeEach(async () => {
182
+ await TypeOrmRepo.clear();
183
+ });
184
+ it('Should get local data', async () => {
185
+ await TypeOrmRepo.insert({ test: true });
186
+ const value = await TypeOrmRepo.findFirst();
187
+ expect(value?.test).toBe(true);
188
+ });
189
+ it('pluck() should return a single array', async () => {
190
+ await TypeOrmRepo.insertMany([
191
+ { test: true, order: 2 },
192
+ { test: false, order: 3 },
193
+ { test: true, order: 1 }
194
+ ]);
195
+ const plucked = await TypeOrmRepo.pluck('order');
196
+ expect(Array.isArray(plucked)).toBe(true);
197
+ expect(plucked).toContain(1);
198
+ expect(plucked).toContain(2);
199
+ expect(plucked).toContain(3);
200
+ });
201
+ it('limit() should limit the amount of results', async () => {
202
+ await TypeOrmRepo.insertMany([
203
+ { test: true },
204
+ { test: false },
205
+ { test: true }
206
+ ]);
207
+ const results = await TypeOrmRepo.findMany({ limit: 2 });
208
+ expect(results.length).toBe(2);
209
+ });
210
+ it('offset() should start at the given position', async () => {
211
+ const inserted = await TypeOrmRepo.insertMany([
212
+ { test: true, order: 1 },
213
+ { test: false, order: 2 },
214
+ { test: true, order: 3 }
215
+ ]);
216
+ const results = await TypeOrmRepo.findMany({
217
+ offset: 1,
218
+ orderBy: [{ order: 'asc' }]
219
+ });
220
+ expect(results.length).toBe(2);
221
+ expect(results[0].order).toBe(2);
222
+ });
223
+ it('orWhere() should filter the data', async () => {
224
+ await TypeOrmRepo.insertMany([
225
+ { test: true, order: 1 },
226
+ { test: false, order: 2 },
227
+ { test: true, order: 3 }
228
+ ]);
229
+ const results = await TypeOrmRepo.findMany({
230
+ where: {
231
+ OR: [
232
+ { test: true },
233
+ { order: 2 }
234
+ ]
235
+ }
236
+ });
237
+ expect(results.length).toBe(3);
238
+ });
239
+ it('orderBy() should order results desc', async () => {
240
+ await TypeOrmRepo.insertMany([
241
+ { test: true, order: 2 },
242
+ { test: false, order: 3 },
243
+ { test: true, order: 1 }
244
+ ]);
245
+ const results = await TypeOrmRepo.findMany({
246
+ orderBy: [{ order: 'desc' }]
247
+ });
248
+ expect(results[0].order).toBe(3);
249
+ expect(results[1].order).toBe(2);
250
+ expect(results[2].order).toBe(1);
251
+ });
252
+ it('orderBy() should order results asc', async () => {
253
+ await TypeOrmRepo.insertMany([
254
+ { test: true, order: 2 },
255
+ { test: false, order: 3 },
256
+ { test: true, order: 1 }
257
+ ]);
258
+ const results = await TypeOrmRepo.findMany({
259
+ orderBy: [{ order: 'asc' }]
260
+ });
261
+ expect(results[0].order).toBe(1);
262
+ expect(results[1].order).toBe(2);
263
+ expect(results[2].order).toBe(3);
264
+ });
265
+ it('orderBy() should order by Dates with Select()', async () => {
266
+ await new Promise(resolve => setTimeout(resolve, 10));
267
+ const first = await TypeOrmRepo.insert({ test: true });
268
+ await new Promise(resolve => setTimeout(resolve, 10));
269
+ const second = await TypeOrmRepo.insert({ test: true });
270
+ await new Promise(resolve => setTimeout(resolve, 10));
271
+ const third = await TypeOrmRepo.insert({ test: true });
272
+ const results = await TypeOrmRepo.findMany({
273
+ orderBy: [{ created: 'desc' }],
274
+ select: { id: true, created: true }
275
+ });
276
+ expect(results[0]?.id).toBe(third.id);
277
+ expect(results[1]?.id).toBe(second.id);
278
+ expect(results[2]?.id).toBe(first.id);
279
+ });
280
+ it('orderBy() should order by Dates without Select()', async () => {
281
+ await new Promise(resolve => setTimeout(resolve, 10));
282
+ const first = await TypeOrmRepo.insert({ test: true });
283
+ await new Promise(resolve => setTimeout(resolve, 10));
284
+ const second = await TypeOrmRepo.insert({ test: true });
285
+ await new Promise(resolve => setTimeout(resolve, 10));
286
+ const third = await TypeOrmRepo.insert({ test: true });
287
+ const results = await TypeOrmRepo.findMany({
288
+ orderBy: [{ created: 'desc' }]
289
+ });
290
+ expect(results[0]?.id).toBe(third.id);
291
+ expect(results[1]?.id).toBe(second.id);
292
+ expect(results[2]?.id).toBe(first.id);
293
+ });
294
+ }
295
+ };
296
+ }
297
+ //# sourceMappingURL=unifiedTestFactory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unifiedTestFactory.js","sourceRoot":"","sources":["../../src/testing/unifiedTestFactory.ts"],"names":[],"mappings":"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"}