@camphoric/camphoric-event-import-tools 2.0.0 → 2.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/CamphoricEventCreator.ts +210 -15
  3. package/README.md +59 -5
  4. package/dist/CamphoricEventCreator.d.ts +30 -4
  5. package/dist/CamphoricEventCreator.d.ts.map +1 -1
  6. package/dist/CamphoricEventCreator.js +163 -15
  7. package/dist/CamphoricEventCreator.js.map +1 -1
  8. package/dist/e2e.d.ts +17 -3
  9. package/dist/e2e.d.ts.map +1 -1
  10. package/dist/e2e.js +60 -7
  11. package/dist/e2e.js.map +1 -1
  12. package/dist/e2eAdmin.d.ts +59 -0
  13. package/dist/e2eAdmin.d.ts.map +1 -0
  14. package/dist/e2eAdmin.js +103 -0
  15. package/dist/e2eAdmin.js.map +1 -0
  16. package/dist/e2eImport.d.ts +1 -0
  17. package/dist/e2eImport.d.ts.map +1 -1
  18. package/dist/e2eImport.js +8 -4
  19. package/dist/e2eImport.js.map +1 -1
  20. package/dist/e2ePayPal.d.ts +34 -0
  21. package/dist/e2ePayPal.d.ts.map +1 -0
  22. package/dist/e2ePayPal.js +104 -0
  23. package/dist/e2ePayPal.js.map +1 -0
  24. package/dist/e2eRegistrationForm.d.ts +42 -0
  25. package/dist/e2eRegistrationForm.d.ts.map +1 -1
  26. package/dist/e2eRegistrationForm.js +99 -0
  27. package/dist/e2eRegistrationForm.js.map +1 -1
  28. package/dist/e2eServer.d.ts +2 -0
  29. package/dist/e2eServer.d.ts.map +1 -1
  30. package/dist/e2eServer.js +14 -1
  31. package/dist/e2eServer.js.map +1 -1
  32. package/dist/types.d.ts +21 -0
  33. package/dist/types.d.ts.map +1 -1
  34. package/e2e-compose.yml +38 -3
  35. package/e2e.ts +67 -9
  36. package/e2eAdmin.ts +174 -0
  37. package/e2eFakePayPal.py +112 -0
  38. package/e2eImport.ts +13 -2
  39. package/e2ePayPal.ts +129 -0
  40. package/e2eRegistrationForm.ts +108 -0
  41. package/e2eServer.ts +19 -1
  42. package/package.json +4 -1
  43. package/types.ts +21 -0
@@ -18,10 +18,12 @@
18
18
  * ---------
19
19
  *
20
20
  * data: an event import object (the spec's EventImport), checked first with
21
- * `validate`, the spec's validateEventImport. Every field of `data.event` is sent to the
22
- * events API as-is, including optional ones such as
23
- * `registration_error_messages` (custom validation messages for the
24
- * registration form).
21
+ * `validate`, the spec's validateEventImport, and then for names it refers to
22
+ * (a promo code's excluded registration types must be the event's). Every
23
+ * field of `data.event` is sent to the events API as-is, including optional
24
+ * ones such as `registration_error_messages` (custom validation messages for
25
+ * the registration form), except its emails' fields, which are set on the
26
+ * event's confirmation and invoice email templates.
25
27
  *
26
28
  * sampleRegGenerator: a SampleRegGenerator, called with
27
29
  * - fetch: a fetch function
@@ -38,6 +40,47 @@ import lodash from 'lodash';
38
40
  import Fetcher from "./CamphoricFetcher.js";
39
41
  import { Organizations } from "./organizations.js";
40
42
  import { formatDate, formatDateTime } from "./utils.js";
43
+ // A group email's fields, as a new template has them: one the data leaves out
44
+ // is set to this, so a template matched by name ends up as the data declares it.
45
+ const GROUP_EMAIL_DEFAULTS = {
46
+ from_email: '',
47
+ reply_to: '',
48
+ recipient_source: 'registrations',
49
+ filter: {},
50
+ filter_expression: '',
51
+ address_expression: '',
52
+ name_expression: '',
53
+ recipient_list: '',
54
+ include_incomplete: false,
55
+ };
56
+ // Likewise for a promo code
57
+ const PROMO_CODE_DEFAULTS = {
58
+ scope: 'registration',
59
+ enabled: true,
60
+ expiration_date: null,
61
+ excluded_registration_types: [],
62
+ excludes_uninvited: false,
63
+ };
64
+ /**
65
+ * What the import data names that it doesn't hold: each promo code's excluded
66
+ * registration types must be among the event's. An empty list when there are
67
+ * none.
68
+ */
69
+ export function referenceProblems(data) {
70
+ const typeNames = new Set(data.registration_types.map(t => t.name));
71
+ return (data.promo_codes ?? []).flatMap(promo => (promo.excluded_registration_types ?? [])
72
+ .filter(name => !typeNames.has(name))
73
+ .map(name => `promo code '${promo.code}' excludes registration type '${name}', which the event doesn't have`));
74
+ }
75
+ /** The problems a template check found that are errors, by template. */
76
+ export function templateErrors(results) {
77
+ return results.flatMap(result => result.diagnostics
78
+ .filter(d => d.severity === 'error')
79
+ .map(d => {
80
+ const where = [d.field, d.line ? `line ${d.line}` : ''].filter(Boolean).join(', ');
81
+ return `${result.label}${where ? ` (${where})` : ''}: ${d.message}`;
82
+ }));
83
+ }
41
84
  /**
42
85
  * Requests started ahead of the Promise.all that collects them, pausing
43
86
  * between batches so the server keeps up. Each is handled as it starts, so
@@ -67,6 +110,10 @@ export default class CamphoricEventCreator extends Fetcher {
67
110
  if (errors.length) {
68
111
  throw this.error('event data object did not pass JSON schema validation', ...errors);
69
112
  }
113
+ const references = referenceProblems(data);
114
+ if (references.length) {
115
+ throw this.error('event data object names what it does not hold', ...references);
116
+ }
70
117
  this.setOrganizations(organizations, data.organization);
71
118
  if (sampleRegGenerator) {
72
119
  if (typeof sampleRegGenerator !== 'function') {
@@ -116,8 +163,9 @@ export default class CamphoricEventCreator extends Fetcher {
116
163
  const existingEvent = events.find(event => event.name === this.data.event.name);
117
164
  const emailAccounts = await this.fetch('GET', '/api/emailaccounts/');
118
165
  const email = emailAccounts.find(e => e.organization === org.id);
119
- // The confirmation email is the event's email template, updated below.
120
- const { confirmation_email_subject: subject, confirmation_email_template: body, ...eventData } = this.data.event;
166
+ // The confirmation and invoice emails are the event's email templates,
167
+ // updated below.
168
+ const { confirmation_email_subject, confirmation_email_template, confirmation_email_reply_to, invoice_email_subject, invoice_email_template, invoice_email_from, invoice_email_reply_to, ...eventData } = this.data.event;
121
169
  const event = {
122
170
  organization: org.id,
123
171
  ...eventData,
@@ -136,19 +184,32 @@ export default class CamphoricEventCreator extends Fetcher {
136
184
  event.confirmation_email_from || email.account;
137
185
  }
138
186
  const eventResponse = await this.fetch(existingEvent ? 'PUT' : 'POST', `/api/events/${existingEvent ? event.id : ''}`, event);
139
- await this.loadEmailTemplate(eventResponse.confirmation_template, subject, body);
187
+ await this.updateEmailTemplate(eventResponse.confirmation_template, {
188
+ subject: confirmation_email_subject,
189
+ body: confirmation_email_template,
190
+ reply_to: confirmation_email_reply_to,
191
+ });
192
+ await this.updateEmailTemplate(eventResponse.invoice_template, {
193
+ subject: invoice_email_subject,
194
+ body: invoice_email_template,
195
+ from_email: invoice_email_from,
196
+ reply_to: invoice_email_reply_to,
197
+ });
140
198
  this.results.event = eventResponse;
141
199
  return eventResponse;
142
200
  }
143
201
  // An event's confirmation and a registration type's invitation are email
144
202
  // templates, created with them (SPEC DR-45); set the text the data gives.
145
203
  async loadEmailTemplate(templateId, subject, body) {
146
- if (!templateId || (subject === undefined && body === undefined))
204
+ await this.updateEmailTemplate(templateId, { subject, body });
205
+ }
206
+ // Set the fields of an email template created with its event or
207
+ // registration type that the data gives (an undefined one is left as is).
208
+ async updateEmailTemplate(templateId, fields) {
209
+ const given = Object.fromEntries(Object.entries(fields).filter(([, value]) => value !== undefined));
210
+ if (!templateId || !Object.keys(given).length)
147
211
  return;
148
- await this.fetch('PATCH', `/api/emailtemplates/${templateId}/`, {
149
- ...(subject !== undefined ? { subject } : {}),
150
- ...(body !== undefined ? { body } : {}),
151
- });
212
+ await this.fetch('PATCH', `/api/emailtemplates/${templateId}/`, given);
152
213
  }
153
214
  async loadLodgings() {
154
215
  const event = this.savedEvent();
@@ -178,6 +239,7 @@ export default class CamphoricEventCreator extends Fetcher {
178
239
  reserved: lodging.reserved || 0,
179
240
  sharing_multiplier: lodging.sharing_multiplier || 1,
180
241
  notes: lodging.notes || '',
242
+ availability: lodging.availability || 'auto',
181
243
  };
182
244
  const saved = await this.fetch('POST', '/api/lodgings/', data);
183
245
  createdLodging = saved;
@@ -234,18 +296,100 @@ export default class CamphoricEventCreator extends Fetcher {
234
296
  const event = this.savedEvent();
235
297
  const response = await this.fetch('GET', '/api/registrationtypes/');
236
298
  const existingRegTypes = response.filter(regType => regType.event === event.id);
237
- await Promise.all(this.data.registration_types.map(async (regType) => {
299
+ this.results.registration_types = await Promise.all(this.data.registration_types.map(async (regType) => {
238
300
  const exists = existingRegTypes.find(r => r.name === regType.name);
239
- const { invitation_email_subject: subject, invitation_email_template: body, ...typeData } = regType;
301
+ const { invitation_email_subject: subject, invitation_email_template: body, invitation_email_from: from_email, invitation_email_reply_to: reply_to, ...typeData } = regType;
240
302
  const saved = await this.fetch(exists ? 'PUT' : 'POST', `/api/registrationtypes${exists ? `/${exists.id}` : ''}/`, {
241
303
  ...typeData,
242
304
  ...(exists ? { id: exists.id } : {}),
243
305
  event: event.id,
244
306
  });
245
- await this.loadEmailTemplate(saved.invitation_template, subject, body);
307
+ await this.updateEmailTemplate(saved.invitation_template, { subject, body, from_email, reply_to });
246
308
  return saved;
247
309
  }));
248
310
  }
311
+ // The event's group emails (SPEC §8.9): each one the data declares is
312
+ // created, or, when the event has one by its name, updated to match.
313
+ // Others the event has are left alone.
314
+ async loadGroupEmails() {
315
+ const { email_templates } = this.data;
316
+ if (!email_templates || !email_templates.length)
317
+ return;
318
+ const event = this.savedEvent();
319
+ const all = await this.fetch('GET', '/api/emailtemplates/');
320
+ const existing = all.filter(t => t.event === event.id && t.purpose === 'group');
321
+ this.results.email_templates = await Promise.all(email_templates.map((template) => {
322
+ const exists = existing.find(t => t.name === template.name);
323
+ return this.fetch(exists ? 'PUT' : 'POST', `/api/emailtemplates/${exists ? `${exists.id}/` : ''}`, { ...GROUP_EMAIL_DEFAULTS, ...template, purpose: 'group', event: event.id });
324
+ }));
325
+ }
326
+ // The event's promo codes (SPEC DR-67): each one the data declares is
327
+ // created, or, when the event has a live one with its code (ignoring case),
328
+ // updated to match. Its excluded registration types are given by name, so
329
+ // this runs once they're saved. Others the event has are left alone.
330
+ async loadPromoCodes() {
331
+ const { promo_codes } = this.data;
332
+ if (!promo_codes || !promo_codes.length)
333
+ return;
334
+ const event = this.savedEvent();
335
+ const regTypes = this.results.registration_types ?? [];
336
+ // Every code is worked out before any is sent, so a problem sends none.
337
+ const bodies = promo_codes.map((promo) => {
338
+ const excluded = (promo.excluded_registration_types ?? []).map((name) => {
339
+ const regType = regTypes.find(t => t.name === name);
340
+ if (!regType) {
341
+ throw this.error(`promo code '${promo.code}' excludes registration type '${name}', which was not imported`);
342
+ }
343
+ return regType.id;
344
+ });
345
+ // An expiry that can't be read must not save as "never expires"
346
+ const expiration = formatDateTime(promo.expiration_date);
347
+ if (promo.expiration_date !== undefined && expiration === undefined) {
348
+ throw this.error(`promo code '${promo.code}' has an expiration_date that can't be read: '${promo.expiration_date}'`);
349
+ }
350
+ return {
351
+ ...PROMO_CODE_DEFAULTS,
352
+ ...promo,
353
+ expiration_date: expiration ?? null,
354
+ excluded_registration_types: excluded,
355
+ event: event.id,
356
+ };
357
+ });
358
+ const all = await this.fetch('GET', '/api/promocodes/');
359
+ const existing = all.filter(p => p.event === event.id);
360
+ const sameCode = (a, b) => String(a).trim().toLowerCase() === b.trim().toLowerCase();
361
+ this.results.promo_codes = await Promise.all(bodies.map((body) => {
362
+ const exists = existing.find(p => sameCode(p.code, body.code));
363
+ return this.fetch(exists ? 'PUT' : 'POST', `/api/promocodes/${exists ? `${exists.id}/` : ''}`, body);
364
+ }));
365
+ }
366
+ // Check every template of the event through the server (SPEC §9.3), as
367
+ // `manage.py check_templates` does: each is rendered against the event's
368
+ // registrations (or, with none, parsed), so one that won't render fails the
369
+ // import rather than its first send.
370
+ async checkTemplates() {
371
+ const event = this.savedEvent();
372
+ const token = await this.getAuthToken();
373
+ // (Not this.fetch, which ends every path with a slash: this one has none.)
374
+ const res = await fetch(`${this.urlBase}/api/events/${event.id}/templates/check`, {
375
+ headers: { 'Authorization': `Token ${token}` },
376
+ });
377
+ const text = await res.text();
378
+ let json;
379
+ try {
380
+ json = JSON.parse(text);
381
+ }
382
+ catch {
383
+ throw this.error(`template check returned non-JSON (${res.status})`, { status: res.status, body: text });
384
+ }
385
+ if (!res.ok) {
386
+ throw this.error(`template check failed (${res.status})`, { status: res.status, response: json });
387
+ }
388
+ const errors = templateErrors(json.results ?? []);
389
+ if (errors.length) {
390
+ throw this.error(`${errors.length} template problem(s): ${errors.join('; ')}`, ...errors);
391
+ }
392
+ }
249
393
  async loadTestRegs() {
250
394
  if (!this.sampleRegGenerator)
251
395
  return [];
@@ -358,6 +502,8 @@ export default class CamphoricEventCreator extends Fetcher {
358
502
  await imp('custom charge types', this.loadCustomChargeTypes());
359
503
  await imp('reports', this.loadReports());
360
504
  await imp('registration types', this.loadRegTypes());
505
+ await imp('group emails', this.loadGroupEmails());
506
+ await imp('promo codes', this.loadPromoCodes());
361
507
  await this.loadLodgings();
362
508
  await imp('lodging', Promise.resolve());
363
509
  // Run the overrides in series in case order matters
@@ -370,6 +516,8 @@ export default class CamphoricEventCreator extends Fetcher {
370
516
  if (this.sampleRegGenerator && process.env.SKIP_TEST_REGS !== '1') {
371
517
  await imp('test registrations', this.loadTestRegs());
372
518
  }
519
+ // After the sample registrations, so the templates render against them
520
+ await imp('template check', this.checkTemplates());
373
521
  this.log(`🎉 Finished Importing ${this.data.event.name}!`);
374
522
  return true;
375
523
  }
@@ -1 +1 @@
1
- {"version":3,"file":"CamphoricEventCreator.js","sourceRoot":"","sources":["../CamphoricEventCreator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CamphoricEventCreator.js","sourceRoot":"","sources":["../CamphoricEventCreator.ts"],"names":[],"mappings":"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"}
package/dist/e2e.d.ts CHANGED
@@ -20,9 +20,15 @@
20
20
  * with its registration open, and removes the throwaway server when the tests
21
21
  * end. Every test, on every device, shares that one event: a registration
22
22
  * one test completes stays, taking up lodging capacity the others see.
23
+ *
24
+ * A throwaway server's PayPal is a fake (e2ePayPal.ts): with `onlinePayment`
25
+ * the payment step shows PayPal's buttons, and a test can read what the
26
+ * server asked PayPal for, without anything being paid.
23
27
  */
24
28
  import { type PlaywrightTestConfig } from '@playwright/test';
29
+ import { CamphoricAdmin } from './e2eAdmin.ts';
25
30
  import { type ImportForE2EOptions } from './e2eImport.ts';
31
+ import { FakePayPal } from './e2ePayPal.ts';
26
32
  import { RegistrationForm } from './e2eRegistrationForm.ts';
27
33
  import { type CamphoricServerOptions } from './e2eServer.ts';
28
34
  export { expect } from '@playwright/test';
@@ -30,8 +36,12 @@ export { camphoricServer } from './e2eServer.ts';
30
36
  export type { CamphoricServer, CamphoricServerOptions } from './e2eServer.ts';
31
37
  export { importForE2E } from './e2eImport.ts';
32
38
  export type { ImportForE2EOptions } from './e2eImport.ts';
33
- export { CamperSection, FormSection, RegistrationForm } from './e2eRegistrationForm.ts';
34
- export type SetUpEventOptions = Pick<ImportForE2EOptions, 'event' | 'validate' | 'withSampleRegistrations' | 'openRegistration'> & CamphoricServerOptions;
39
+ export { CamperSection, FormSection, ListQuestion, RegistrationForm } from './e2eRegistrationForm.ts';
40
+ export { CamphoricAdmin } from './e2eAdmin.ts';
41
+ export type { E2EInvitation, EmailsOptions, InviteOptions, SentEmail } from './e2eAdmin.ts';
42
+ export { FakePayPal } from './e2ePayPal.ts';
43
+ export type { PayPalOrder } from './e2ePayPal.ts';
44
+ export type SetUpEventOptions = Pick<ImportForE2EOptions, 'event' | 'validate' | 'withSampleRegistrations' | 'openRegistration' | 'onlinePayment'> & Omit<CamphoricServerOptions, 'fakePayPal'>;
35
45
  /**
36
46
  * A Playwright global setup: starts the server, imports the event, and
37
47
  * returns the teardown that removes a throwaway server.
@@ -46,10 +56,14 @@ export declare function defineEventE2EConfig({ globalSetup, ...overrides }: {
46
56
  } & PlaywrightTestConfig): PlaywrightTestConfig;
47
57
  /**
48
58
  * Playwright's test, with the server as its baseURL and these fixtures:
49
- * `eventId`, the imported event's id, and `registration`, its form.
59
+ * `eventId`, the imported event's id; `registration`, its form; `admin`,
60
+ * what an organizer does (invitations, the email sent); and `payPal`, the
61
+ * throwaway server's fake PayPal (the orders the server created).
50
62
  */
51
63
  export declare const test: import("@playwright/test").TestType<import("@playwright/test").PlaywrightTestArgs & import("@playwright/test").PlaywrightTestOptions & {
52
64
  eventId: number;
53
65
  registration: RegistrationForm;
66
+ admin: CamphoricAdmin;
67
+ payPal: FakePayPal;
54
68
  }, import("@playwright/test").PlaywrightWorkerArgs & import("@playwright/test").PlaywrightWorkerOptions>;
55
69
  //# sourceMappingURL=e2e.d.ts.map
package/dist/e2e.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"e2e.d.ts","sourceRoot":"","sources":["../e2e.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,OAAO,EAAuC,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAElG,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE9E,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAMxF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EACtD,OAAO,GAAG,UAAU,GAAG,yBAAyB,GAAG,kBAAkB,CAAC,GACpE,sBAAsB,CAAC;AAE3B;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAazF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,oBAAoB,GAC5E,oBAAoB,CAkBtB;AAED;;;GAGG;AAGH,eAAO,MAAM,IAAI;aAA0B,MAAM;kBAAgB,gBAAgB;wGAc/E,CAAC"}
1
+ {"version":3,"file":"e2e.d.ts","sourceRoot":"","sources":["../e2e.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,OAAO,EAAuC,KAAK,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGlG,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,OAAO,EAAgB,KAAK,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAmB,UAAU,EAAkB,MAAM,gBAAgB,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAE9E,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,YAAY,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACtG,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC5F,OAAO,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC5C,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAUlD,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,mBAAmB,EACtD,OAAO,GAAG,UAAU,GAAG,yBAAyB,GAAG,kBAAkB,GAAG,eAAe,CAAC,GACtF,IAAI,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,OAAO,CAAC,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,CAoBzF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,EAAE,WAAW,EAAE,GAAG,SAAS,EAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,GAAG,oBAAoB,GAC5E,oBAAoB,CAkBtB;AASD;;;;;GAKG;AAGH,eAAO,MAAM,IAAI;aACN,MAAM;kBACD,gBAAgB;WACvB,cAAc;YACb,UAAU;wGAqClB,CAAC"}
package/dist/e2e.js CHANGED
@@ -20,29 +20,51 @@
20
20
  * with its registration open, and removes the throwaway server when the tests
21
21
  * end. Every test, on every device, shares that one event: a registration
22
22
  * one test completes stays, taking up lodging capacity the others see.
23
+ *
24
+ * A throwaway server's PayPal is a fake (e2ePayPal.ts): with `onlinePayment`
25
+ * the payment step shows PayPal's buttons, and a test can read what the
26
+ * server asked PayPal for, without anything being paid.
23
27
  */
24
28
  import { defineConfig, devices, test as base } from '@playwright/test';
29
+ import { getAuthToken } from "./getAuthInfo.js";
30
+ import { CamphoricAdmin } from "./e2eAdmin.js";
25
31
  import { importForE2E } from "./e2eImport.js";
32
+ import { FAKE_PAYPAL_SDK, FakePayPal, PAYPAL_SDK_URL } from "./e2ePayPal.js";
26
33
  import { RegistrationForm } from "./e2eRegistrationForm.js";
27
34
  import { camphoricServer } from "./e2eServer.js";
28
35
  export { expect } from '@playwright/test';
29
36
  export { camphoricServer } from "./e2eServer.js";
30
37
  export { importForE2E } from "./e2eImport.js";
31
- export { CamperSection, FormSection, RegistrationForm } from "./e2eRegistrationForm.js";
38
+ export { CamperSection, FormSection, ListQuestion, RegistrationForm } from "./e2eRegistrationForm.js";
39
+ export { CamphoricAdmin } from "./e2eAdmin.js";
40
+ export { FakePayPal } from "./e2ePayPal.js";
32
41
  // What the global setup hands the tests (workers inherit its environment)
33
42
  const URL_VARIABLE = 'CAMPHORIC_E2E_RUN_URL';
34
43
  const EVENT_VARIABLE = 'CAMPHORIC_E2E_RUN_EVENT_ID';
44
+ // The admin's API token (signing in once: Camphoric throttles sign-in)
45
+ const TOKEN_VARIABLE = 'CAMPHORIC_E2E_RUN_TOKEN';
46
+ // A throwaway server's fake PayPal API
47
+ const PAYPAL_VARIABLE = 'CAMPHORIC_E2E_RUN_PAYPAL_URL';
35
48
  /**
36
49
  * A Playwright global setup: starts the server, imports the event, and
37
50
  * returns the teardown that removes a throwaway server.
38
51
  */
39
52
  export function setUpEvent(options) {
40
53
  return async () => {
41
- const server = await camphoricServer(options);
54
+ const server = await camphoricServer({ ...options, fakePayPal: options.onlinePayment });
42
55
  try {
56
+ if (options.onlinePayment && !server.payPalUrl) {
57
+ throw new Error('onlinePayment needs the throwaway server, whose PayPal is a fake: '
58
+ + 'CAMPHORIC_E2E_SERVER_URL\'s PayPal would refuse its client id');
59
+ }
43
60
  const eventId = await importForE2E({ ...options, ...server });
44
61
  process.env[URL_VARIABLE] = server.url;
45
62
  process.env[EVENT_VARIABLE] = String(eventId);
63
+ process.env[TOKEN_VARIABLE] = await getAuthToken(server.url);
64
+ if (server.payPalUrl)
65
+ process.env[PAYPAL_VARIABLE] = server.payPalUrl;
66
+ else
67
+ delete process.env[PAYPAL_VARIABLE];
46
68
  }
47
69
  catch (e) {
48
70
  await server.stop();
@@ -74,19 +96,35 @@ export function defineEventE2EConfig({ globalSetup, ...overrides }) {
74
96
  ...overrides,
75
97
  });
76
98
  }
99
+ // The server's URL, from the global setup
100
+ function serverUrl() {
101
+ const url = process.env[URL_VARIABLE];
102
+ if (!url)
103
+ throw new Error('no Camphoric server: run these tests with a config from defineEventE2EConfig');
104
+ return url;
105
+ }
77
106
  /**
78
107
  * Playwright's test, with the server as its baseURL and these fixtures:
79
- * `eventId`, the imported event's id, and `registration`, its form.
108
+ * `eventId`, the imported event's id; `registration`, its form; `admin`,
109
+ * what an organizer does (invitations, the email sent); and `payPal`, the
110
+ * throwaway server's fake PayPal (the orders the server created).
80
111
  */
81
112
  // (Playwright reads a fixture's dependencies from its destructured first
82
113
  // argument, so one with none takes an empty pattern.)
83
114
  export const test = base.extend({
84
115
  // eslint-disable-next-line no-empty-pattern
85
116
  baseURL: async ({}, use) => {
86
- const url = process.env[URL_VARIABLE];
87
- if (!url)
88
- throw new Error('no Camphoric server: run these tests with a config from defineEventE2EConfig');
89
- await use(url);
117
+ await use(serverUrl());
118
+ },
119
+ // With the fake PayPal API, the browser gets the fake PayPal script, whose
120
+ // buttons work with it
121
+ context: async ({ context }, use) => {
122
+ if (process.env[PAYPAL_VARIABLE]) {
123
+ await context.route(PAYPAL_SDK_URL, route => route.fulfill({
124
+ contentType: 'text/javascript', body: FAKE_PAYPAL_SDK,
125
+ }));
126
+ }
127
+ await use(context);
90
128
  },
91
129
  // eslint-disable-next-line no-empty-pattern
92
130
  eventId: async ({}, use) => {
@@ -95,5 +133,20 @@ export const test = base.extend({
95
133
  registration: async ({ page, eventId }, use) => {
96
134
  await use(new RegistrationForm(page, eventId));
97
135
  },
136
+ admin: async ({ eventId }, use) => {
137
+ const token = process.env[TOKEN_VARIABLE];
138
+ if (!token)
139
+ throw new Error('no admin token: run these tests with a config from defineEventE2EConfig');
140
+ await use(new CamphoricAdmin(serverUrl(), token, eventId));
141
+ },
142
+ // eslint-disable-next-line no-empty-pattern
143
+ payPal: async ({}, use) => {
144
+ const url = process.env[PAYPAL_VARIABLE];
145
+ if (!url) {
146
+ throw new Error('no fake PayPal: it comes with the throwaway server (not CAMPHORIC_E2E_SERVER_URL) '
147
+ + 'when setUpEvent is given onlinePayment: true');
148
+ }
149
+ await use(new FakePayPal(url));
150
+ },
98
151
  });
99
152
  //# sourceMappingURL=e2e.js.map
package/dist/e2e.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"e2e.js","sourceRoot":"","sources":["../e2e.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"e2e.js","sourceRoot":"","sources":["../e2e.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ /**
2
+ * What an organizer does in the admin, for an event's e2e tests: invitations
3
+ * to register as a registration type, and the emails the server sent. It
4
+ * uses the admin API (as the admin client does), signed in as the admin the
5
+ * event was imported as, so tests don't drive the admin's own pages.
6
+ */
7
+ /** An invitation to register as one of the event's registration types. */
8
+ export interface E2EInvitation {
9
+ id: number;
10
+ code: string;
11
+ email: string;
12
+ registerUrl: string;
13
+ }
14
+ export interface InviteOptions {
15
+ email?: string;
16
+ name?: string;
17
+ send?: boolean;
18
+ }
19
+ /** An email the server sent (or queued), from its outbox. */
20
+ export interface SentEmail {
21
+ id: number;
22
+ kind: string;
23
+ status: string;
24
+ to: string;
25
+ from: string;
26
+ replyTo: string;
27
+ subject: string;
28
+ text: string;
29
+ html: string;
30
+ lastError: string;
31
+ registration: number | null;
32
+ invitation: number | null;
33
+ }
34
+ export interface EmailsOptions {
35
+ to?: string;
36
+ kind?: string;
37
+ }
38
+ export declare class CamphoricAdmin {
39
+ readonly url: string;
40
+ readonly eventId: number;
41
+ private readonly token;
42
+ constructor(url: string, token: string, eventId: number);
43
+ /**
44
+ * Creates an invitation to register as the registration type with this
45
+ * `name` (its name in the event's data, not its label), as the admin's
46
+ * "Invite a special registration" does. Open its form with
47
+ * `page.goto(invitation.registerUrl)`.
48
+ */
49
+ invite(registrationType: string, options?: InviteOptions): Promise<E2EInvitation>;
50
+ /**
51
+ * The emails the server sent about the event (its outbox), newest first,
52
+ * with what each said. Email is recorded as the request that sends it ends,
53
+ * so after a registration it's there when the page has moved on; to wait
54
+ * for one: `await expect.poll(async () => (await admin.emails({ to })).length).toBe(1)`.
55
+ */
56
+ emails(options?: EmailsOptions): Promise<SentEmail[]>;
57
+ private request;
58
+ }
59
+ //# sourceMappingURL=e2eAdmin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"e2eAdmin.d.ts","sourceRoot":"","sources":["../e2eAdmin.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,0EAA0E;AAC1E,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IAGX,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IAGd,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,aAAa;IAE5B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,6DAA6D;AAC7D,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IAEX,IAAI,EAAE,MAAM,CAAC;IAGb,MAAM,EAAE,MAAM,CAAC;IACf,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;CAC3B;AAED,MAAM,WAAW,aAAa;IAE5B,EAAE,CAAC,EAAE,MAAM,CAAC;IAEZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAyBD,qBAAa,cAAc;IACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAMvD;;;;;OAKG;IACG,MAAM,CAAC,gBAAgB,EAAE,MAAM,EAAE,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,aAAa,CAAC;IAyB3F;;;;;OAKG;IACG,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;YAgCjD,OAAO;CActB"}