@futdevpro/nts-dynamo 1.15.2 → 1.15.3

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 (121) hide show
  1. package/.cursor/rules/__assistant_guide.mdc +30 -0
  2. package/.cursor/rules/__main.mdc +62 -0
  3. package/.cursor/rules/_ag_backend-structure.mdc +86 -0
  4. package/.cursor/rules/_ag_backend.mdc +16 -0
  5. package/.cursor/rules/_ag_debug.mdc +8 -0
  6. package/.cursor/rules/_ag_documentation_writing_rules.mdc +372 -0
  7. package/.cursor/rules/_ag_file-refactoring.mdc +113 -0
  8. package/.cursor/rules/_ag_fixes_rules.mdc +6 -0
  9. package/.cursor/rules/_ag_frontend-structure.mdc +87 -0
  10. package/.cursor/rules/_ag_frontend.mdc +40 -0
  11. package/.cursor/rules/_ag_import-rules.mdc +45 -0
  12. package/.cursor/rules/_ag_naming.mdc +116 -0
  13. package/.cursor/rules/_ag_running_commands.mdc +5 -0
  14. package/.cursor/rules/_ag_server-controller.mdc +6 -0
  15. package/.cursor/rules/_ag_should-be.mdc +7 -0
  16. package/.cursor/rules/_ag_swearing.mdc +47 -0
  17. package/.cursor/rules/ai_development_guide.md +61 -0
  18. package/.cursor/rules/ai_directives.md +114 -0
  19. package/.cursor/rules/cursor-rules.md +160 -0
  20. package/.cursor/rules/default-command.mdc +229 -0
  21. package/.cursor/rules/error_code_pattern.md +40 -0
  22. package/.cursor/rules/saved rule mcp server use.md +16 -0
  23. package/build/_modules/custom-data/custom-data.controller.d.ts.map +1 -1
  24. package/build/_modules/custom-data/custom-data.controller.js +1 -2
  25. package/build/_modules/custom-data/custom-data.controller.js.map +1 -1
  26. package/build/_services/core/api.service.d.ts.map +1 -1
  27. package/build/_services/core/api.service.js +1 -0
  28. package/build/_services/core/api.service.js.map +1 -1
  29. package/package.json +5 -4
  30. package/scripts/run-coverage-tests.js +5 -1
  31. package/spec/support/helpers/spec-reporter-loader.js +359 -0
  32. package/spec/support/helpers/ts-node-helper.js +84 -0
  33. package/spec/support/jasmine.coverage.json +2 -1
  34. package/spec/support/jasmine.json +3 -3
  35. package/src/_collections/archive.util.spec.ts +36 -0
  36. package/src/_collections/get-environment-settings.util.spec.ts +210 -0
  37. package/src/_collections/star.controller.spec.ts +224 -0
  38. package/src/_models/control-models/api-call-params.control-model.spec.ts +62 -3
  39. package/src/_models/control-models/app-ext-system-controls.control-model.spec.ts +52 -0
  40. package/src/_models/control-models/app-params.control-model.spec.ts +158 -2
  41. package/src/_models/control-models/endpoint-params.control-model.spec.ts +578 -0
  42. package/src/_modules/ai/_modules/document-ai/_collections/dai-chunking.util.spec.ts +242 -0
  43. package/src/_modules/ai/_modules/document-ai/_collections/dai-document.util.spec.ts +209 -0
  44. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-document.data-service.spec.ts +342 -0
  45. package/src/_modules/ai/_modules/open-ai/_services/data-services/oai-vector-data.service.spec.ts +550 -0
  46. package/src/_modules/ai/_modules/open-ai/_services/oai-embedding.control-service.spec.ts +240 -0
  47. package/src/_modules/ai/_modules/open-ai/_services/oai-llm-chat.service-base.spec.ts +462 -0
  48. package/src/_modules/ai/_modules/open-ai/_services/oai-llm.service-base.spec.ts +437 -0
  49. package/src/_modules/ai/_services/ai-embedding.service-base.spec.ts +98 -0
  50. package/src/_modules/ai/_services/ai-llm-chat.service-base.spec.ts +229 -0
  51. package/src/_modules/ai/_services/ai-llm.service-base.spec.ts +250 -0
  52. package/src/_modules/ai/_services/ai-provider.service-base.spec.ts +79 -0
  53. package/src/_modules/assistant/_collections/ass.util.spec.ts +176 -0
  54. package/src/_modules/assistant/_services/ass-io.control-service.spec.ts +140 -0
  55. package/src/_modules/assistant/_services/ass-main.control-service.spec.ts +192 -0
  56. package/src/_modules/bot/_modules/discord-bot/_services/dib-messaging-provider.control-service.spec.ts +431 -0
  57. package/src/_modules/bot/_modules/dynamo-bot/_collections/dyb-operations.util.spec.ts +160 -0
  58. package/src/_modules/bot/_modules/dynamo-bot/_services/dyb-messaging-provider.control-service.spec.ts +374 -0
  59. package/src/_modules/bot/_modules/slack-bot/_services/slb-messaging-provider.control-service.spec.ts +344 -0
  60. package/src/_modules/bot/_modules/teams-bot/_services/teb-messaging-provider.control-service.spec.ts +345 -0
  61. package/src/_modules/bot/_services/bot-commands.control-service.spec.ts +116 -0
  62. package/src/_modules/bot/_services/bot-io.control-service.spec.ts +285 -0
  63. package/src/_modules/bot/_services/bot-main.control-service.spec.ts +208 -0
  64. package/src/_modules/bot/_services/bot-messaging-provider.service-base.spec.ts +349 -0
  65. package/src/_modules/bot/_services/bot-routines.control-service.spec.ts +111 -0
  66. package/src/_modules/custom-data/custom-data.controller.spec.ts +49 -0
  67. package/src/_modules/custom-data/custom-data.controller.ts +1 -3
  68. package/src/_modules/custom-data/custom-data.data-service.spec.ts +54 -0
  69. package/src/_modules/custom-data/get-custom-data-routing-module.util.spec.ts +28 -0
  70. package/src/_modules/defaults/_services/default-auth.service.spec.ts +269 -0
  71. package/src/_modules/defaults/_services/default-socket-events.service.spec.ts +42 -0
  72. package/src/_modules/defaults/_services/default-user.data-service.spec.ts +187 -0
  73. package/src/_modules/discord-assistant/_collections/dias.util.spec.ts +366 -0
  74. package/src/_modules/discord-assistant/_services/dias-io.control-service.spec.ts +108 -0
  75. package/src/_modules/discord-assistant/_services/dias-main.control-service.spec.ts +22 -0
  76. package/src/_modules/discord-assistant/_services/dias.service-base.spec.ts +195 -0
  77. package/src/_modules/discord-assistant-voiced/_services/dias-discord-bot.control-service.spec.ts +34 -0
  78. package/src/_modules/discord-bot/_collections/dibo-operations.util.spec.ts +214 -0
  79. package/src/_modules/discord-bot/_services/dibo-commands.control-service.spec.ts +154 -0
  80. package/src/_modules/discord-bot/_services/dibo-io.control-service.spec.ts +264 -0
  81. package/src/_modules/discord-bot/_services/dibo-main.control-service.spec.ts +408 -0
  82. package/src/_modules/discord-bot/_services/dibo-routines.control-service.spec.ts +105 -0
  83. package/src/_modules/local-vector-search/_services/lvs-doc-chunk-data.service.spec.ts +418 -0
  84. package/src/_modules/local-vector-search/_services/lvs-local-vector-search.data-service.spec.ts +345 -0
  85. package/src/_modules/messaging/_collections/msg.util.spec.ts +226 -0
  86. package/src/_modules/messaging/_services/msg-events.service.spec.ts +219 -0
  87. package/src/_modules/messaging/_services/msg-main.control-service.spec.ts +147 -0
  88. package/src/_modules/messaging/_services/msg.controller.spec.ts +201 -0
  89. package/src/_modules/mock/data-model.mock.spec.ts +27 -24
  90. package/src/_modules/oauth2/_routes/oauth2.controller.spec.ts +107 -0
  91. package/src/_modules/oauth2/_services/oauth2.auth-service.spec.ts +254 -0
  92. package/src/_modules/oauth2/_services/oauth2.control-service.spec.ts +585 -0
  93. package/src/_modules/server/errors/errors.control-service.spec.ts +230 -0
  94. package/src/_modules/server/errors/errors.controller.spec.ts +165 -0
  95. package/src/_modules/server/errors/errors.data-service.spec.ts +355 -0
  96. package/src/_modules/server/server-status/server-status-snapshot.control-service.spec.ts +70 -0
  97. package/src/_modules/server/server-status/server-status-snapshot.data-service.spec.ts +77 -0
  98. package/src/_modules/server/server-status/server-status.control-service.spec.ts +516 -0
  99. package/src/_modules/server/server-status/server-status.controller.spec.ts +156 -0
  100. package/src/_modules/socket/_models/socket-client-service-params.control-model.spec.ts +6 -3
  101. package/src/_modules/socket/_models/socket-presence.control-model.spec.ts +164 -0
  102. package/src/_modules/socket/_services/socket-client.service.spec.ts +15 -0
  103. package/src/_modules/test/get-test-routing-module.util.spec.ts +28 -0
  104. package/src/_modules/test/test.controller.spec.ts +72 -0
  105. package/src/_modules/usage/usage.controller.spec.ts +81 -0
  106. package/src/_modules/usage/usage.data-service.spec.ts +332 -0
  107. package/src/_services/base/api.service-base.spec.ts +125 -0
  108. package/src/_services/base/archive-data.service.spec.ts +196 -0
  109. package/src/_services/base/data.service.spec.ts +493 -0
  110. package/src/_services/base/db.service.spec.ts +59 -18
  111. package/src/_services/base/singleton.service-base.spec.ts +28 -0
  112. package/src/_services/base/singleton.service.spec.ts +114 -0
  113. package/src/_services/core/api.service.ts +1 -0
  114. package/src/_services/core/auth.service.spec.ts +159 -0
  115. package/src/_services/core/email.service.spec.ts +14 -22
  116. package/src/_services/core/global.service.spec.ts +275 -0
  117. package/src/_services/core/service-collection.service.spec.ts +46 -0
  118. package/src/_services/route/routing-module.service.spec.ts +8 -6
  119. package/src/_services/shared.static-service.spec.ts +89 -0
  120. package/src/_modules/socket/app-extended.server.spec.ts +0 -227
  121. package/src/_services/server/app.server.spec.ts +0 -138
@@ -0,0 +1,359 @@
1
+ // ============================================================================
2
+ // EGYEDI SPEC REPORTER - JELENLEG KIKOMMENTEZVE
3
+ // ============================================================================
4
+ // Ez az egyedi spec reporter jelenleg kikommentezve van, és a default reporter
5
+ // van használatban.
6
+ //
7
+ // ÚJRA AKTIVÁLÁS:
8
+ // 1. spec/support/jasmine.json fájlban:
9
+ // - Kommentezd ki: "../spec/support/helpers/ts-node-helper.js"
10
+ // - Kommentezd be: "../spec/support/helpers/spec-reporter-loader.js"
11
+ //
12
+ // 2. scripts/run-coverage-tests.js fájlban:
13
+ // - Kommentezd ki: NODE_OPTIONS: `--require ${tsNodeRegister} --require ${tsNodeHelper}`
14
+ // - Kommentezd be: NODE_OPTIONS: `--require ${tsNodeRegister} --require ${tsNodeHelper} --require ${specReporterLoader}`
15
+ //
16
+ // Ez az egyedi reporter a következő funkciókat biztosítja:
17
+ // - SpecNameReporter: Kiírja a spec nevét és statisztikákat minden tesztnél
18
+ // - SlowTestReporter: Jelzi a lassú teszteket (>1 másodperc)
19
+ // - FailedTestsReporter: Részletes hibajelentés a sikertelen tesztekről
20
+ // - SpecReporter: Színes, formázott kimenet a jasmine-spec-reporter-rel
21
+ // ============================================================================
22
+
23
+ // A jasmine-spec-reporter betöltése és konfigurálása
24
+ // Ez a fájl helper-ként töltődik be, így a Jasmine inicializálása után fut
25
+
26
+ console.log('[spec-reporter-loader] Helper fájl betöltve');
27
+
28
+ // Egyedi reporter, ami kiírja a spec nevét, amikor elindul
29
+ class SpecNameReporter {
30
+ constructor() {
31
+ this.currentTestNumber = 0;
32
+ this.totalTests = 0;
33
+ this.successfulCount = 0;
34
+ this.failedCount = 0;
35
+ this.pendingCount = 0;
36
+ this.startTime = Date.now();
37
+ }
38
+
39
+ jasmineStarted(result) {
40
+ // Get total number of specs from the result
41
+ if (result && result.totalSpecsDefined !== undefined) {
42
+ this.totalTests = result.totalSpecsDefined;
43
+ }
44
+ this.startTime = Date.now();
45
+ }
46
+
47
+ specStarted(result) {
48
+ this.currentTestNumber++;
49
+ const stats = `[${this.currentTestNumber}/${this.totalTests || '?'}] (✓${this.successfulCount} ✗${this.failedCount} ⊘${this.pendingCount})`;
50
+ console.log(`▶ ${stats} ${result.fullName}`);
51
+ }
52
+
53
+ specDone(result) {
54
+ if (result.status === 'passed') {
55
+ this.successfulCount++;
56
+ } else if (result.status === 'failed') {
57
+ this.failedCount++;
58
+ } else if (result.status === 'pending' || result.status === 'disabled') {
59
+ this.pendingCount++;
60
+ }
61
+ }
62
+
63
+ jasmineDone(result) {
64
+ const duration = Date.now() - this.startTime;
65
+ const durationSeconds = (duration / 1000).toFixed(2);
66
+
67
+ console.log('\n' + '='.repeat(80));
68
+ console.log('TEST SUMMARY');
69
+ console.log('='.repeat(80));
70
+ console.log(`Total: ${this.totalTests || '?'} specs`);
71
+ console.log(`✓ Successful: ${this.successfulCount}`);
72
+ console.log(`✗ Failed: ${this.failedCount}`);
73
+ console.log(`⊘ Pending: ${this.pendingCount}`);
74
+ console.log(`Duration: ${durationSeconds}s`);
75
+ console.log('='.repeat(80) + '\n');
76
+ }
77
+ }
78
+
79
+ // Slow test reporter - tracks tests that take longer than 1ms
80
+ class SlowTestReporter {
81
+ constructor() {
82
+ this.slowTests = [];
83
+ this.testStartTimes = new Map();
84
+ }
85
+
86
+ specStarted(result) {
87
+ // Extract file name from fullName (format: "| Suite | Test" or "Suite | Test")
88
+ let file = 'Unknown';
89
+ if (result.fullName) {
90
+ const parts = result.fullName.split('|');
91
+ if (parts.length > 0) {
92
+ file = parts[0].trim() || 'Unknown';
93
+ }
94
+ // If it starts with |, try to get from description or suite
95
+ if (file === '' && result.description) {
96
+ file = result.description.split('|')[0]?.trim() || 'Unknown';
97
+ }
98
+ }
99
+
100
+ this.testStartTimes.set(result.id, {
101
+ startTime: Date.now(),
102
+ fullName: result.fullName,
103
+ file: file
104
+ });
105
+ }
106
+
107
+ specDone(result) {
108
+ const testInfo = this.testStartTimes.get(result.id);
109
+ if (testInfo) {
110
+ const duration = Date.now() - testInfo.startTime;
111
+ if (duration > 1000) { // Only track tests longer than 1 second (1000ms)
112
+ this.slowTests.push({
113
+ file: testInfo.file,
114
+ test: result.fullName,
115
+ duration: duration
116
+ });
117
+ }
118
+ this.testStartTimes.delete(result.id);
119
+ }
120
+ }
121
+
122
+ jasmineDone(result) {
123
+ if (this.slowTests.length > 0) {
124
+ console.log('\n' + '='.repeat(80));
125
+ console.log('SLOW TESTS REPORT (tests taking longer than 1 second)');
126
+ console.log('='.repeat(80));
127
+
128
+ // Group by file
129
+ const byFile = {};
130
+ this.slowTests.forEach(test => {
131
+ if (!byFile[test.file]) {
132
+ byFile[test.file] = [];
133
+ }
134
+ byFile[test.file].push(test);
135
+ });
136
+
137
+ // Sort files by total duration
138
+ const fileEntries = Object.entries(byFile).map(([file, tests]) => ({
139
+ file,
140
+ tests,
141
+ totalDuration: tests.reduce((sum, t) => sum + t.duration, 0)
142
+ })).sort((a, b) => b.totalDuration - a.totalDuration);
143
+
144
+ // Output report
145
+ fileEntries.forEach(({ file, tests, totalDuration }) => {
146
+ console.log(`\n${file} (total: ${totalDuration}ms)`);
147
+ tests.sort((a, b) => b.duration - a.duration).forEach(test => {
148
+ console.log(` ${test.duration}ms - ${test.test}`);
149
+ });
150
+ });
151
+
152
+ console.log('\n' + '='.repeat(80));
153
+ console.log(`Total slow tests: ${this.slowTests.length}`);
154
+ console.log('='.repeat(80) + '\n');
155
+ }
156
+ }
157
+ }
158
+
159
+ // Failed tests reporter - tracks all failed tests
160
+ class FailedTestsReporter {
161
+ constructor() {
162
+ this.failedTests = [];
163
+ }
164
+
165
+ specDone(result) {
166
+ if (result.status === 'failed') {
167
+ // Extract file name from fullName
168
+ let file = 'Unknown';
169
+ if (result.fullName) {
170
+ const parts = result.fullName.split('|');
171
+ if (parts.length > 0) {
172
+ file = parts[0].trim() || 'Unknown';
173
+ }
174
+ if (file === '' && result.description) {
175
+ file = result.description.split('|')[0]?.trim() || 'Unknown';
176
+ }
177
+ }
178
+
179
+ this.failedTests.push({
180
+ file: file,
181
+ test: result.fullName,
182
+ message: result.failedExpectations && result.failedExpectations.length > 0
183
+ ? result.failedExpectations[0].message
184
+ : 'Unknown error',
185
+ stack: result.failedExpectations && result.failedExpectations.length > 0
186
+ ? result.failedExpectations[0].stack
187
+ : undefined
188
+ });
189
+ }
190
+ }
191
+
192
+ jasmineDone() {
193
+ if (this.failedTests.length > 0) {
194
+ console.log('\n' + '='.repeat(80));
195
+ console.log('FAILED TESTS REPORT');
196
+ console.log('='.repeat(80));
197
+
198
+ // Group by file
199
+ const byFile = {};
200
+ this.failedTests.forEach(test => {
201
+ if (!byFile[test.file]) {
202
+ byFile[test.file] = [];
203
+ }
204
+ byFile[test.file].push(test);
205
+ });
206
+
207
+ // Sort files by number of failures
208
+ const fileEntries = Object.entries(byFile).map(([file, tests]) => ({
209
+ file,
210
+ tests,
211
+ count: tests.length
212
+ })).sort((a, b) => b.count - a.count);
213
+
214
+ // Output report
215
+ fileEntries.forEach(({ file, tests, count }) => {
216
+ console.log(`\n${file} (${count} failure${count > 1 ? 's' : ''})`);
217
+ tests.forEach((test, index) => {
218
+ console.log(`\n ${index + 1}. ✗ ${test.test}`);
219
+ const raw = test.message || 'Unknown';
220
+ const message = raw.length > 150 ? raw.substring(0, 150) + '...' : raw;
221
+ console.log(` Message: ${(message || 'Unknown').split('\n')[0]}`);
222
+
223
+ // Print stacktrace if available
224
+ if (test.stack) {
225
+ // Filter out node_modules and jasmine internals for cleaner stacktrace
226
+ const stackLines = test.stack.split('\n')
227
+ .filter(line => {
228
+ const lowerLine = line.toLowerCase();
229
+ return !lowerLine.includes('node_modules') &&
230
+ !lowerLine.includes('jasmine') &&
231
+ !lowerLine.includes('spec-reporter');
232
+ })
233
+ .slice(0, 10); // Limit to first 10 relevant lines
234
+
235
+ if (stackLines.length > 0) {
236
+ console.log(` Stack:`);
237
+ stackLines.forEach(line => {
238
+ console.log(` ${line.trim()}`);
239
+ });
240
+ }
241
+ }
242
+ });
243
+ });
244
+
245
+ console.log('\n' + '='.repeat(80));
246
+ console.log(`Total failed tests: ${this.failedTests.length}`);
247
+ console.log('='.repeat(80) + '\n');
248
+ }
249
+ }
250
+ }
251
+
252
+ // A jasmine-spec-reporter betöltése
253
+ const { SpecReporter } = require('jasmine-spec-reporter');
254
+
255
+ // Helper fájlként töltődik be, így a Jasmine már inicializálva van
256
+ const initReporters = () => {
257
+ const getJasmineEnv = () => {
258
+ // Módszer 1: globális jasmine objektum
259
+ if (typeof global !== 'undefined' && global.jasmine && typeof global.jasmine.getEnv === 'function') {
260
+ return global.jasmine.getEnv();
261
+ }
262
+ // Módszer 2: jasmine globális változó
263
+ if (typeof jasmine !== 'undefined' && typeof jasmine.getEnv === 'function') {
264
+ return jasmine.getEnv();
265
+ }
266
+ return null;
267
+ };
268
+
269
+ const env = getJasmineEnv();
270
+ if (env) {
271
+ console.log('[spec-reporter-loader] Jasmine környezet megtalálva, reporterek inicializálása...');
272
+ const slowTestReporter = new SlowTestReporter();
273
+ const failedTestsReporter = new FailedTestsReporter();
274
+
275
+ const specNameReporter = new SpecNameReporter();
276
+ env.addReporter(specNameReporter);
277
+ env.addReporter(slowTestReporter);
278
+ env.addReporter(failedTestsReporter);
279
+ env.addReporter(new SpecReporter({
280
+ spec: {
281
+ displayPending: true,
282
+ displayDuration: true,
283
+ displaySuccessful: true,
284
+ displayFailed: true
285
+ },
286
+ suite: {
287
+ displayNumber: true
288
+ },
289
+ summary: {
290
+ displayDuration: true,
291
+ displayErrorMessages: true,
292
+ displayStacktrace: 'pretty',
293
+ displaySuccessful: true,
294
+ displayFailed: true
295
+ },
296
+ colors: {
297
+ enabled: true
298
+ }
299
+ }));
300
+
301
+ // Ensure reports are printed before coverage report
302
+ // Order: slow tests, failed tests, then summary
303
+ env.addReporter({
304
+ jasmineDone: (result) => {
305
+ // Print slow tests report first
306
+ slowTestReporter.jasmineDone(result);
307
+ // Print failed tests report second
308
+ failedTestsReporter.jasmineDone(result);
309
+ // Print summary last (before coverage table)
310
+ specNameReporter.jasmineDone(result);
311
+ }
312
+ });
313
+
314
+ console.log('[spec-reporter-loader] Reporterek sikeresen inicializálva');
315
+ return true;
316
+ }
317
+ return false;
318
+ };
319
+
320
+ // Próbáljuk meg azonnal
321
+ if (!initReporters()) {
322
+ console.log('[spec-reporter-loader] Jasmine környezet még nem elérhető, várunk...');
323
+
324
+ // Próbáljuk meg több időpontban is, hasonlóan a timeout-helper-hez
325
+ setTimeout(() => {
326
+ if (!initReporters()) {
327
+ setTimeout(() => {
328
+ if (!initReporters()) {
329
+ setTimeout(() => {
330
+ if (!initReporters()) {
331
+ // Ha még mindig nem sikerült, várunk és újra próbáljuk
332
+ let attempts = 0;
333
+ const maxAttempts = 100;
334
+
335
+ const interval = setInterval(() => {
336
+ attempts++;
337
+ if (initReporters()) {
338
+ clearInterval(interval);
339
+ console.log('[spec-reporter-loader] Reporterek sikeresen inicializálva', attempts, 'próbálkozás után');
340
+ } else if (attempts >= maxAttempts) {
341
+ clearInterval(interval);
342
+ console.error('[spec-reporter-loader] Failed to initialize reporters after', maxAttempts, 'attempts');
343
+ console.error('[spec-reporter-loader] Debug info:', {
344
+ hasGlobal: typeof global !== 'undefined',
345
+ hasJasmine: typeof jasmine !== 'undefined',
346
+ globalJasmine: typeof global !== 'undefined' && global.jasmine,
347
+ jasmineGetEnv: typeof jasmine !== 'undefined' && typeof jasmine.getEnv === 'function'
348
+ });
349
+ }
350
+ }, 50);
351
+ }
352
+ }, 100);
353
+ }
354
+ }, 50);
355
+ }
356
+ }, 0);
357
+ } else {
358
+ console.log('[spec-reporter-loader] Reporterek azonnal inicializálva');
359
+ }
@@ -7,3 +7,87 @@ require('ts-node').register({
7
7
  }
8
8
  });
9
9
 
10
+ // Set default timeout for all tests immediately
11
+ // This ensures that failed tests timeout quickly (2 seconds) instead of running for too long
12
+ // We set it both immediately and in a delayed callback to ensure it works even if spec files override it
13
+ // NOTE: This is also set in jasmine.json and jasmine.coverage.json - keep all 3 in sync!
14
+ const FORCE_TIMEOUT = 2000; // 2 seconds
15
+
16
+ // Function to force timeout setting - agresszíven felülírja minden timeout beállítást
17
+ const forceTimeout = () => {
18
+ if (typeof jasmine !== 'undefined') {
19
+ jasmine.DEFAULT_TIMEOUT_INTERVAL = FORCE_TIMEOUT;
20
+ }
21
+ if (typeof global !== 'undefined' && global.jasmine) {
22
+ global.jasmine.DEFAULT_TIMEOUT_INTERVAL = FORCE_TIMEOUT;
23
+ }
24
+ // Try to access jasmine through window if available (for browser environments)
25
+ if (typeof window !== 'undefined' && window.jasmine) {
26
+ window.jasmine.DEFAULT_TIMEOUT_INTERVAL = FORCE_TIMEOUT;
27
+ }
28
+ };
29
+
30
+ // Set timeout immediately if jasmine is available
31
+ forceTimeout();
32
+
33
+ // Agresszív timeout felülírás - folyamatosan felülírja minden 100ms-ben
34
+ // Ez biztosítja, hogy még a spec fájlokban lévő timeout beállítások is felülírásra kerüljenek
35
+ const aggressiveTimeoutInterval = setInterval(() => {
36
+ forceTimeout();
37
+ }, 100);
38
+
39
+ // Stop the aggressive interval after 10 seconds (enough time for all tests to start)
40
+ setTimeout(() => {
41
+ clearInterval(aggressiveTimeoutInterval);
42
+ }, 10000);
43
+
44
+ // Hook into jasmine's environment if available
45
+ const initTimeout = () => {
46
+ // Try both global and local jasmine
47
+ const jasmineObj = (typeof global !== 'undefined' && global.jasmine) || (typeof jasmine !== 'undefined' ? jasmine : null);
48
+
49
+ if (jasmineObj && typeof jasmineObj.getEnv === 'function') {
50
+ try {
51
+ const env = jasmineObj.getEnv();
52
+ if (env) {
53
+ // Force timeout immediately
54
+ forceTimeout();
55
+
56
+ // Add a global beforeEach that runs in every spec file to force timeout
57
+ env.beforeEach(() => {
58
+ forceTimeout();
59
+ });
60
+ // Also add afterEach to ensure timeout is set after each test
61
+ env.afterEach(() => {
62
+ forceTimeout();
63
+ });
64
+ // Add a reporter that forces timeout on every spec start and done
65
+ // This ensures that even if a spec file sets timeout, it gets overridden
66
+ env.addReporter({
67
+ specStarted: () => {
68
+ forceTimeout();
69
+ },
70
+ specDone: () => {
71
+ forceTimeout();
72
+ },
73
+ suiteStarted: () => {
74
+ forceTimeout();
75
+ },
76
+ suiteDone: () => {
77
+ forceTimeout();
78
+ }
79
+ });
80
+ }
81
+ } catch (e) {
82
+ // Ignore errors if jasmine is not fully initialized yet
83
+ }
84
+ }
85
+ };
86
+
87
+ // Try to initialize multiple times to catch late initialization
88
+ initTimeout();
89
+ setTimeout(initTimeout, 0);
90
+ setTimeout(initTimeout, 50);
91
+ setTimeout(initTimeout, 200);
92
+ setTimeout(initTimeout, 1000);
93
+
@@ -17,7 +17,8 @@
17
17
  ],
18
18
  "env": {
19
19
  "stopSpecOnExpectationFailure": false,
20
- "random": true
20
+ "random": true,
21
+ "defaultTimeoutInterval": 2000
21
22
  }
22
23
  }
23
24
 
@@ -14,11 +14,11 @@
14
14
  "**/*[sS]pec.ts"
15
15
  ],
16
16
  "helpers": [
17
- "helpers/**/*.ts",
18
- "helpers/**/*.js"
17
+ "../spec/support/helpers/ts-node-helper.js"
19
18
  ],
20
19
  "env": {
21
20
  "stopSpecOnExpectationFailure": false,
22
- "random": true
21
+ "random": true,
22
+ "defaultTimeoutInterval": 2000
23
23
  }
24
24
  }
@@ -18,4 +18,40 @@ describe('| DyNTS_getArchivedDBName', () => {
18
18
  const expectedArchivedName = `${dbName}_${DyNTS_archiveSuffix}`;
19
19
  expect(DyNTS_getArchivedDBName(dbName)).toBe(expectedArchivedName);
20
20
  });
21
+
22
+ it('| should handle database names with spaces', () => {
23
+ const dbName = 'Test DB Name';
24
+ const expectedArchivedName = `${dbName}_${DyNTS_archiveSuffix}`;
25
+ expect(DyNTS_getArchivedDBName(dbName)).toBe(expectedArchivedName);
26
+ });
27
+
28
+ it('| should handle database names with numbers', () => {
29
+ const dbName = 'DB123';
30
+ const expectedArchivedName = `${dbName}_${DyNTS_archiveSuffix}`;
31
+ expect(DyNTS_getArchivedDBName(dbName)).toBe(expectedArchivedName);
32
+ });
33
+
34
+ it('| should handle very long database names', () => {
35
+ const dbName = 'A'.repeat(100);
36
+ const expectedArchivedName = `${dbName}_${DyNTS_archiveSuffix}`;
37
+ expect(DyNTS_getArchivedDBName(dbName)).toBe(expectedArchivedName);
38
+ });
39
+
40
+ it('| should use the correct archive suffix constant', () => {
41
+ expect(DyNTS_archiveSuffix).toBe('archived');
42
+ const dbName = 'TestDB';
43
+ const result = DyNTS_getArchivedDBName(dbName);
44
+ expect(result).toContain('archived');
45
+ expect(result).toBe('TestDB_archived');
46
+ });
47
+ });
48
+
49
+ describe('| DyNTS_archiveSuffix', () => {
50
+ it('| should have the correct value', () => {
51
+ expect(DyNTS_archiveSuffix).toBe('archived');
52
+ });
53
+
54
+ it('| should be a string', () => {
55
+ expect(typeof DyNTS_archiveSuffix).toBe('string');
56
+ });
21
57
  });