strapi-plugin-magic-mail 2.0.1 → 2.0.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.
@@ -1,24 +1,24 @@
1
1
  /**
2
2
  * Test Controller für Template-Version Relations
3
+ * [SUCCESS] Migrated to strapi.documents() API (Strapi v5 Best Practice)
3
4
  */
4
5
 
5
6
  'use strict';
6
7
 
8
+ const EMAIL_TEMPLATE_UID = 'plugin::magic-mail.email-template';
9
+ const EMAIL_TEMPLATE_VERSION_UID = 'plugin::magic-mail.email-template-version';
10
+
7
11
  module.exports = {
8
12
  /**
9
13
  * Test Template-Version Relations
10
- *
11
- * Tests beide Richtungen:
12
- * 1. Version → Template beim Erstellen
13
- * 2. Template → Version nachträglich via connect
14
14
  */
15
15
  async testRelations(ctx) {
16
16
  try {
17
17
  console.log('\n' + '='.repeat(60));
18
- console.log('🧪 TEST: Template ↔ Version Relations');
18
+ console.log('🧪 TEST: Template ↔ Version Relations (Document Service API)');
19
19
  console.log('='.repeat(60));
20
20
 
21
- // Initialize all test result variables
21
+ // Initialize test result variables
22
22
  let test1Success = false;
23
23
  let test1ReverseSuccess = false;
24
24
  let test2Success = false;
@@ -29,14 +29,12 @@ module.exports = {
29
29
  let test3b_allHaveTemplate = false;
30
30
 
31
31
  // ============================================================
32
- // TEST 1: Version mit Template verbinden (manyToOne Direction)
32
+ // TEST 1: Version mit Template verbinden
33
33
  // ============================================================
34
- console.log('\n📝 TEST 1: Version → Template Verbindung\n');
34
+ console.log('\n[TEST] TEST 1: Version → Template Verbindung\n');
35
35
 
36
- // Erstelle ein Test-Template
37
- const testTemplate = await strapi.entityService.create(
38
- 'plugin::magic-mail.email-template',
39
- {
36
+ // Erstelle Test-Template
37
+ const testTemplate = await strapi.documents(EMAIL_TEMPLATE_UID).create({
40
38
  data: {
41
39
  templateReferenceId: Math.floor(Math.random() * 1000000),
42
40
  name: 'Test Template Relations',
@@ -46,75 +44,59 @@ module.exports = {
46
44
  category: 'custom',
47
45
  isActive: true
48
46
  }
49
- }
50
- );
47
+ });
51
48
 
52
- console.log(`✅ Template erstellt: ID ${testTemplate.id}`);
49
+ console.log(`[SUCCESS] Template erstellt: documentId ${testTemplate.documentId}`);
53
50
 
54
- // Erstelle eine Version und verbinde sie direkt mit dem Template
55
- const version1 = await strapi.entityService.create(
56
- 'plugin::magic-mail.email-template-version',
57
- {
51
+ // Erstelle Version mit Template-Verbindung
52
+ const version1 = await strapi.documents(EMAIL_TEMPLATE_VERSION_UID).create({
58
53
  data: {
59
- template: testTemplate.id, // 👈 Direkte Verbindung beim Erstellen
54
+ template: testTemplate.documentId,
60
55
  versionNumber: 1,
61
56
  name: 'Version 1 von Test',
62
57
  subject: 'Test Subject V1',
63
58
  bodyHtml: '<p>Version 1 HTML</p>',
64
59
  bodyText: 'Version 1 Text'
65
60
  }
66
- }
67
- );
61
+ });
68
62
 
69
- console.log(`✅ Version erstellt: ID ${version1.id}, versionNumber: ${version1.versionNumber}`);
63
+ console.log(`[SUCCESS] Version erstellt: documentId ${version1.documentId}, versionNumber: ${version1.versionNumber}`);
70
64
 
71
- // Prüfe die Verbindung von Version → Template
72
- const versionCheck = await strapi.entityService.findOne(
73
- 'plugin::magic-mail.email-template-version',
74
- version1.id,
75
- {
65
+ // Prüfe Version → Template
66
+ const versionCheck = await strapi.documents(EMAIL_TEMPLATE_VERSION_UID).findOne({
67
+ documentId: version1.documentId,
76
68
  populate: ['template']
77
- }
78
- );
69
+ });
79
70
 
80
- console.log('\n🔍 Prüfung Version → Template:');
71
+ console.log('\n[CHECK] Prüfung Version → Template:');
81
72
  test1Success = !!versionCheck.template;
82
73
  if (test1Success) {
83
- console.log(` SUCCESS: Version ${versionCheck.id} → Template ${versionCheck.template.id}`);
84
- console.log(` 📋 Template: "${versionCheck.template.name}"`);
74
+ console.log(` [SUCCESS] SUCCESS: Version → Template ${versionCheck.template.documentId}`);
85
75
  } else {
86
- console.log(` FEHLER: Version ${versionCheck.id} hat KEINE Template-Verbindung!`);
76
+ console.log(` [ERROR] FEHLER: Version hat KEINE Template-Verbindung!`);
87
77
  }
88
78
 
89
- // Prüfe die Verbindung von Template → Version
90
- const templateCheck1 = await strapi.entityService.findOne(
91
- 'plugin::magic-mail.email-template',
92
- testTemplate.id,
93
- {
79
+ // Prüfe Template → Versions
80
+ const templateCheck1 = await strapi.documents(EMAIL_TEMPLATE_UID).findOne({
81
+ documentId: testTemplate.documentId,
94
82
  populate: ['versions']
95
- }
96
- );
83
+ });
97
84
 
98
- console.log('\n🔍 Prüfung Template → Versions:');
85
+ console.log('\n[CHECK] Prüfung Template → Versions:');
99
86
  test1ReverseSuccess = templateCheck1.versions && templateCheck1.versions.length > 0;
100
87
  if (test1ReverseSuccess) {
101
- console.log(` SUCCESS: Template ${templateCheck1.id} hat ${templateCheck1.versions.length} Version(en)`);
102
- templateCheck1.versions.forEach(v => {
103
- console.log(` 📋 Version ${v.id}: versionNumber ${v.versionNumber}`);
104
- });
88
+ console.log(` [SUCCESS] SUCCESS: Template hat ${templateCheck1.versions.length} Version(en)`);
105
89
  } else {
106
- console.log(` FEHLER: Template ${templateCheck1.id} hat KEINE Versionen!`);
90
+ console.log(` [ERROR] FEHLER: Template hat KEINE Versionen!`);
107
91
  }
108
92
 
109
93
  // ============================================================
110
- // TEST 2: Nachträglich Version mit Template verbinden
94
+ // TEST 2: Nachträgliche Verbindung
111
95
  // ============================================================
112
- console.log('\n\n📝 TEST 2: Nachträgliche Verbindung (Template Update)\n');
96
+ console.log('\n\n[TEST] TEST 2: Nachträgliche Verbindung\n');
113
97
 
114
- // Erstelle Version OHNE Template
115
- const version2 = await strapi.entityService.create(
116
- 'plugin::magic-mail.email-template-version',
117
- {
98
+ // Version OHNE Template
99
+ const version2 = await strapi.documents(EMAIL_TEMPLATE_VERSION_UID).create({
118
100
  data: {
119
101
  versionNumber: 2,
120
102
  name: 'Version 2 ohne Template',
@@ -122,73 +104,53 @@ module.exports = {
122
104
  bodyHtml: '<p>Version 2 HTML</p>',
123
105
  bodyText: 'Version 2 Text'
124
106
  }
125
- }
126
- );
107
+ });
127
108
 
128
- console.log(`✅ Version 2 erstellt: ID ${version2.id} (ohne Template)`);
109
+ console.log(`[SUCCESS] Version 2 erstellt: documentId ${version2.documentId} (ohne Template)`);
129
110
 
130
- // Verbinde Version nachträglich mit Template über Template-Update
131
- await strapi.entityService.update(
132
- 'plugin::magic-mail.email-template',
133
- testTemplate.id,
134
- {
111
+ // Nachträgliche Verbindung via Version-Update
112
+ await strapi.documents(EMAIL_TEMPLATE_VERSION_UID).update({
113
+ documentId: version2.documentId,
135
114
  data: {
136
- versions: {
137
- connect: [version2.id] // 👈 Nachträgliche Verbindung
115
+ template: testTemplate.documentId
138
116
  }
139
- }
140
- }
141
- );
117
+ });
142
118
 
143
- console.log(`✅ Template updated: Version ${version2.id} verbunden`);
119
+ console.log(`[SUCCESS] Version 2 mit Template verbunden`);
144
120
 
145
- // Prüfe ob die Verbindung jetzt existiert
146
- const templateCheck2 = await strapi.entityService.findOne(
147
- 'plugin::magic-mail.email-template',
148
- testTemplate.id,
149
- {
121
+ // Prüfe Verbindung
122
+ const templateCheck2 = await strapi.documents(EMAIL_TEMPLATE_UID).findOne({
123
+ documentId: testTemplate.documentId,
150
124
  populate: ['versions']
151
- }
152
- );
125
+ });
153
126
 
154
- console.log('\n🔍 Prüfung nach Template Update:');
127
+ console.log('\n[CHECK] Prüfung nach Update:');
155
128
  test2Success = templateCheck2.versions && templateCheck2.versions.length >= 2;
156
129
  if (test2Success) {
157
- console.log(` SUCCESS: Template hat jetzt ${templateCheck2.versions.length} Versionen`);
158
- templateCheck2.versions.forEach(v => {
159
- console.log(` 📋 Version ${v.id}: versionNumber ${v.versionNumber}, "${v.name}"`);
160
- });
130
+ console.log(` [SUCCESS] SUCCESS: Template hat jetzt ${templateCheck2.versions.length} Versionen`);
161
131
  } else {
162
- console.log(` FEHLER: Template hat nur ${templateCheck2.versions?.length || 0} Version(en)!`);
132
+ console.log(` [ERROR] FEHLER: Template hat nur ${templateCheck2.versions?.length || 0} Version(en)!`);
163
133
  }
164
134
 
165
- // Prüfe auch von Version 2 aus
166
- const version2Check = await strapi.entityService.findOne(
167
- 'plugin::magic-mail.email-template-version',
168
- version2.id,
169
- {
135
+ // Prüfe von Version 2 aus
136
+ const version2Check = await strapi.documents(EMAIL_TEMPLATE_VERSION_UID).findOne({
137
+ documentId: version2.documentId,
170
138
  populate: ['template']
171
- }
172
- );
139
+ });
173
140
 
174
- console.log('\n🔍 Prüfung Version 2 → Template:');
175
141
  test2ReverseSuccess = !!version2Check.template;
176
142
  if (test2ReverseSuccess) {
177
- console.log(` SUCCESS: Version ${version2Check.id} → Template ${version2Check.template.id}`);
178
- console.log(` 📋 Template: "${version2Check.template.name}"`);
143
+ console.log(` [SUCCESS] SUCCESS: Version 2 → Template verbunden`);
179
144
  } else {
180
- console.log(` FEHLER: Version ${version2Check.id} hat KEINE Template-Verbindung!`);
145
+ console.log(` [ERROR] FEHLER: Version 2 hat KEINE Template-Verbindung!`);
181
146
  }
182
147
 
183
148
  // ============================================================
184
- // TEST 3: ECHTER USE CASE - Template Update mit Auto-Versionierung
149
+ // TEST 3: Auto-Versionierung
185
150
  // ============================================================
186
- console.log('\n\n📝 TEST 3: Template Update (Auto-Versionierung)\n');
151
+ console.log('\n\n[TEST] TEST 3: Template Update (Auto-Versionierung)\n');
187
152
 
188
- // Erstelle ein neues Template für diesen Test
189
- const autoTemplate = await strapi.entityService.create(
190
- 'plugin::magic-mail.email-template',
191
- {
153
+ const autoTemplate = await strapi.documents(EMAIL_TEMPLATE_UID).create({
192
154
  data: {
193
155
  templateReferenceId: Math.floor(Math.random() * 1000000),
194
156
  name: 'Auto Version Test',
@@ -198,164 +160,126 @@ module.exports = {
198
160
  category: 'custom',
199
161
  isActive: true
200
162
  }
201
- }
202
- );
203
-
204
- console.log(`✅ Template erstellt: ID ${autoTemplate.id}, name: "${autoTemplate.name}"`);
205
-
206
- // Prüfe: Sollte noch KEINE Versionen haben
207
- const beforeUpdate = await strapi.entityService.findOne(
208
- 'plugin::magic-mail.email-template',
209
- autoTemplate.id,
210
- { populate: ['versions'] }
211
- );
163
+ });
212
164
 
213
- console.log(` 📊 Versionen vor Update: ${beforeUpdate.versions?.length || 0}`);
165
+ console.log(`[SUCCESS] Template erstellt: documentId ${autoTemplate.documentId}`);
214
166
 
215
- // Jetzt UPDATE das Template (sollte automatisch Version erstellen)
216
- console.log('\n🔄 Führe Template-Update aus...');
217
-
167
+ // Update via email-designer Service
218
168
  const emailDesignerService = strapi.plugin('magic-mail').service('email-designer');
219
- await emailDesignerService.update(autoTemplate.id, {
169
+ await emailDesignerService.update(autoTemplate.documentId, {
220
170
  subject: 'Updated Subject V1',
221
171
  bodyHtml: '<p>Updated HTML V1</p>',
222
172
  bodyText: 'Updated Text V1'
223
173
  });
224
174
 
225
- console.log(' Template updated');
175
+ console.log('[SUCCESS] Template updated');
226
176
 
227
- // Prüfe ob automatisch eine Version erstellt wurde
228
- const afterFirstUpdate = await strapi.entityService.findOne(
229
- 'plugin::magic-mail.email-template',
230
- autoTemplate.id,
231
- { populate: ['versions'] }
232
- );
177
+ const afterFirstUpdate = await strapi.documents(EMAIL_TEMPLATE_UID).findOne({
178
+ documentId: autoTemplate.documentId,
179
+ populate: ['versions']
180
+ });
233
181
 
234
- console.log('\n🔍 Prüfung nach 1. Update:');
182
+ console.log('\n[CHECK] Prüfung nach 1. Update:');
235
183
  test3a_versionCreated = afterFirstUpdate.versions && afterFirstUpdate.versions.length === 1;
236
184
 
237
185
  if (test3a_versionCreated) {
238
- console.log(` SUCCESS: Automatisch 1 Version erstellt`);
186
+ console.log(` [SUCCESS] SUCCESS: Automatisch 1 Version erstellt`);
239
187
 
240
- // Prüfe ob die Version eine Template-Verbindung hat
241
- const autoVersion1 = await strapi.entityService.findOne(
242
- 'plugin::magic-mail.email-template-version',
243
- afterFirstUpdate.versions[0].id,
244
- { populate: ['template'] }
245
- );
188
+ const autoVersion1 = await strapi.documents(EMAIL_TEMPLATE_VERSION_UID).findOne({
189
+ documentId: afterFirstUpdate.versions[0].documentId,
190
+ populate: ['template']
191
+ });
246
192
 
247
193
  test3a_hasTemplate = !!autoVersion1.template;
248
194
  if (test3a_hasTemplate) {
249
- console.log(` SUCCESS: Version ${autoVersion1.id} hat Template-Verbindung (Template ID: ${autoVersion1.template.id})`);
250
- console.log(` 📋 Version: versionNumber ${autoVersion1.versionNumber}, subject: "${autoVersion1.subject}"`);
195
+ console.log(` [SUCCESS] SUCCESS: Version hat Template-Verbindung`);
251
196
  } else {
252
- console.log(` FEHLER: Version ${autoVersion1.id} hat KEINE Template-Verbindung!`);
197
+ console.log(` [ERROR] FEHLER: Version hat KEINE Template-Verbindung!`);
253
198
  }
254
199
  } else {
255
- console.log(` FEHLER: Keine Version erstellt! Versionen: ${afterFirstUpdate.versions?.length || 0}`);
200
+ console.log(` [ERROR] FEHLER: Keine Version erstellt!`);
256
201
  }
257
202
 
258
- // Zweites Update - sollte eine zweite Version erstellen
259
- console.log('\n🔄 Führe 2. Template-Update aus...');
260
-
261
- await emailDesignerService.update(autoTemplate.id, {
203
+ // Zweites Update
204
+ await emailDesignerService.update(autoTemplate.documentId, {
262
205
  subject: 'Updated Subject V2',
263
206
  bodyHtml: '<p>Updated HTML V2</p>',
264
207
  bodyText: 'Updated Text V2'
265
208
  });
266
209
 
267
- console.log('✅ Template updated (2. Mal)');
268
-
269
- // Prüfe ob jetzt 2 Versionen existieren
270
- const afterSecondUpdate = await strapi.entityService.findOne(
271
- 'plugin::magic-mail.email-template',
272
- autoTemplate.id,
273
- { populate: ['versions'] }
274
- );
210
+ const afterSecondUpdate = await strapi.documents(EMAIL_TEMPLATE_UID).findOne({
211
+ documentId: autoTemplate.documentId,
212
+ populate: ['versions']
213
+ });
275
214
 
276
- console.log('\n🔍 Prüfung nach 2. Update:');
215
+ console.log('\n[CHECK] Prüfung nach 2. Update:');
277
216
  test3b_twoVersions = afterSecondUpdate.versions && afterSecondUpdate.versions.length === 2;
278
217
 
279
218
  if (test3b_twoVersions) {
280
- console.log(` SUCCESS: Jetzt 2 Versionen vorhanden`);
219
+ console.log(` [SUCCESS] SUCCESS: Jetzt 2 Versionen vorhanden`);
281
220
 
282
- // Prüfe beide Versionen
283
221
  let allVersionsHaveTemplate = true;
284
222
  for (const version of afterSecondUpdate.versions) {
285
- const fullVersion = await strapi.entityService.findOne(
286
- 'plugin::magic-mail.email-template-version',
287
- version.id,
288
- { populate: ['template'] }
289
- );
223
+ const fullVersion = await strapi.documents(EMAIL_TEMPLATE_VERSION_UID).findOne({
224
+ documentId: version.documentId,
225
+ populate: ['template']
226
+ });
290
227
 
291
- if (fullVersion.template) {
292
- console.log(` ✅ Version ${fullVersion.id} (v${fullVersion.versionNumber}): Template-Verbindung OK`);
293
- } else {
294
- console.log(` ❌ Version ${fullVersion.id} (v${fullVersion.versionNumber}): KEINE Template-Verbindung!`);
228
+ if (!fullVersion.template) {
295
229
  allVersionsHaveTemplate = false;
296
230
  }
297
231
  }
298
232
 
299
233
  test3b_allHaveTemplate = allVersionsHaveTemplate;
300
234
  if (allVersionsHaveTemplate) {
301
- console.log(` SUCCESS: Alle Versionen haben Template-Verbindung!`);
235
+ console.log(` [SUCCESS] SUCCESS: Alle Versionen haben Template-Verbindung!`);
236
+ } else {
237
+ console.log(` [ERROR] FEHLER: Nicht alle Versionen haben Template-Verbindung!`);
302
238
  }
303
239
  } else {
304
- console.log(` FEHLER: Falsche Anzahl Versionen! Erwartet: 2, Gefunden: ${afterSecondUpdate.versions?.length || 0}`);
240
+ console.log(` [ERROR] FEHLER: Falsche Anzahl Versionen!`);
305
241
  }
306
242
 
307
- // Cleanup für Test 3
243
+ // Cleanup Test 3
308
244
  console.log('\n🧹 Cleanup Test 3...');
309
245
  if (afterSecondUpdate.versions) {
310
246
  for (const version of afterSecondUpdate.versions) {
311
- await strapi.entityService.delete('plugin::magic-mail.email-template-version', version.id);
247
+ await strapi.documents(EMAIL_TEMPLATE_VERSION_UID).delete({ documentId: version.documentId });
312
248
  }
313
249
  }
314
- await strapi.entityService.delete('plugin::magic-mail.email-template', autoTemplate.id);
315
- console.log(' Test 3 Daten gelöscht');
250
+ await strapi.documents(EMAIL_TEMPLATE_UID).delete({ documentId: autoTemplate.documentId });
251
+ console.log(' [SUCCESS] Test 3 Daten gelöscht');
316
252
 
317
253
  // ============================================================
318
254
  // Zusammenfassung
319
255
  // ============================================================
320
256
  console.log('\n\n' + '='.repeat(60));
321
- console.log('📊 ZUSAMMENFASSUNG');
257
+ console.log('[STATS] ZUSAMMENFASSUNG');
322
258
  console.log('='.repeat(60));
323
259
 
324
- const finalTemplate = await strapi.entityService.findOne(
325
- 'plugin::magic-mail.email-template',
326
- testTemplate.id,
327
- {
260
+ const finalTemplate = await strapi.documents(EMAIL_TEMPLATE_UID).findOne({
261
+ documentId: testTemplate.documentId,
328
262
  populate: ['versions']
329
- }
330
- );
263
+ });
331
264
 
332
- console.log(`\n📋 Template: "${finalTemplate.name}" (ID: ${finalTemplate.id})`);
333
- console.log(` Anzahl Versionen im Template: ${finalTemplate.versions?.length || 0}`);
334
-
335
- if (finalTemplate.versions && finalTemplate.versions.length > 0) {
336
- finalTemplate.versions.forEach(v => {
337
- console.log(` - Version ${v.id}: versionNumber ${v.versionNumber}`);
338
- });
339
- }
265
+ console.log(`\n[INFO] Template: "${finalTemplate.name}" (documentId: ${finalTemplate.documentId})`);
266
+ console.log(` Anzahl Versionen: ${finalTemplate.versions?.length || 0}`);
340
267
 
341
268
  // Cleanup
342
269
  console.log('\n🧹 Aufräumen...');
343
- await strapi.entityService.delete('plugin::magic-mail.email-template-version', version1.id);
344
- console.log(` ✅ Version ${version1.id} gelöscht`);
345
- await strapi.entityService.delete('plugin::magic-mail.email-template-version', version2.id);
346
- console.log(` Version ${version2.id} gelöscht`);
347
- await strapi.entityService.delete('plugin::magic-mail.email-template', testTemplate.id);
348
- console.log(` ✅ Template ${testTemplate.id} gelöscht`);
270
+ await strapi.documents(EMAIL_TEMPLATE_VERSION_UID).delete({ documentId: version1.documentId });
271
+ await strapi.documents(EMAIL_TEMPLATE_VERSION_UID).delete({ documentId: version2.documentId });
272
+ await strapi.documents(EMAIL_TEMPLATE_UID).delete({ documentId: testTemplate.documentId });
273
+ console.log(' [SUCCESS] Alle Test-Daten gelöscht');
349
274
 
350
- console.log('\n Test abgeschlossen!\n');
275
+ console.log('\n[SUCCESS] Test abgeschlossen!\n');
351
276
 
352
- // Return result
353
277
  const allSuccess = test1Success && test1ReverseSuccess && test2Success && test2ReverseSuccess &&
354
278
  test3a_versionCreated && test3a_hasTemplate && test3b_twoVersions && test3b_allHaveTemplate;
355
279
 
356
280
  ctx.body = {
357
281
  success: allSuccess,
358
- message: allSuccess ? 'Alle Tests erfolgreich! ' : 'Einige Tests fehlgeschlagen ',
282
+ message: allSuccess ? 'Alle Tests erfolgreich! [SUCCESS]' : 'Einige Tests fehlgeschlagen [ERROR]',
359
283
  tests: {
360
284
  test1_version_to_template: test1Success,
361
285
  test1_template_to_version: test1ReverseSuccess,
@@ -365,19 +289,13 @@ module.exports = {
365
289
  test3_auto_version_has_template: test3a_hasTemplate,
366
290
  test3_two_auto_versions: test3b_twoVersions,
367
291
  test3_all_auto_versions_have_template: test3b_allHaveTemplate,
368
- },
369
- template: {
370
- id: testTemplate.id,
371
- name: testTemplate.name,
372
- versionsCount: finalTemplate.versions?.length || 0
373
292
  }
374
293
  };
375
294
 
376
295
  } catch (error) {
377
- console.error('\n FEHLER:', error.message);
296
+ console.error('\n[ERROR] FEHLER:', error.message);
378
297
  console.error(error.stack);
379
298
  ctx.throw(500, error);
380
299
  }
381
300
  }
382
301
  };
383
-