@unchainedshop/core-enrollments 2.0.0-beta8 → 2.0.0-beta9

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.
package/jest.config.js CHANGED
@@ -2,4 +2,13 @@
2
2
  export default {
3
3
  preset: 'ts-jest',
4
4
  testEnvironment: 'node',
5
+ extensionsToTreatAsEsm: ['.ts'],
6
+ transform: {
7
+ '^.+\\.tsx?$': [
8
+ 'ts-jest',
9
+ {
10
+ useESM: true,
11
+ },
12
+ ],
13
+ },
5
14
  };
@@ -1,2 +1,6 @@
1
1
  import { IEnrollmentAdapter } from '@unchainedshop/types/enrollments';
2
+ export declare const periodForReferenceDate: (referenceDate: Date, intervalCount?: number, interval?: string) => {
3
+ start: Date;
4
+ end: Date;
5
+ };
2
6
  export declare const EnrollmentAdapter: Omit<IEnrollmentAdapter, 'key' | 'label' | 'version'>;
@@ -1,6 +1,6 @@
1
1
  import { log, LogLevel } from '@unchainedshop/logger';
2
2
  import { startOfHour, startOfMinute, add } from 'date-fns';
3
- const periodForReferenceDate = (referenceDate, intervalCount = 1, interval = 'WEEKS') => {
3
+ export const periodForReferenceDate = (referenceDate, intervalCount = 1, interval = 'WEEKS') => {
4
4
  const lowerCase = interval.toLowerCase();
5
5
  const start = lowerCase === 'hours' ? startOfMinute(referenceDate) : startOfHour(referenceDate);
6
6
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"EnrollmentAdapter.js","sourceRoot":"","sources":["../../src/director/EnrollmentAdapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EnrollmentAdapter.js","sourceRoot":"","sources":["../../src/director/EnrollmentAdapter.ts"],"names":[],"mappings":"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"}
@@ -16,12 +16,12 @@ const findAppropriateAdapters = (productPlan) => baseDirector.getAdapters({
16
16
  });
17
17
  export const EnrollmentDirector = {
18
18
  ...baseDirector,
19
- transformOrderItemToEnrollment: async ({ orderPosition, product }, doc, requestContext) => {
19
+ transformOrderItemToEnrollment: async ({ orderPosition, product }, doc, unchainedAPI) => {
20
20
  const Adapter = findAppropriateAdapters(product.plan)?.[0];
21
21
  if (!Adapter) {
22
22
  throw new Error('No suitable enrollment plugin available for this item');
23
23
  }
24
- const enrollmentPlan = await Adapter.transformOrderItemToEnrollmentPlan(orderPosition, requestContext);
24
+ const enrollmentPlan = await Adapter.transformOrderItemToEnrollmentPlan(orderPosition, unchainedAPI);
25
25
  const enrollmentData = {
26
26
  ...doc,
27
27
  ...enrollmentPlan,
@@ -29,8 +29,8 @@ export const EnrollmentDirector = {
29
29
  };
30
30
  return enrollmentData;
31
31
  },
32
- actions: async (enrollmentContext, requestContext) => {
33
- const context = { ...enrollmentContext, ...requestContext };
32
+ actions: async (enrollmentContext, unchainedAPI) => {
33
+ const context = { ...enrollmentContext, ...unchainedAPI };
34
34
  // Resolve adapter
35
35
  const product = await context.modules.products.findProduct({
36
36
  productId: context.enrollment.productId,
@@ -1 +1 @@
1
- {"version":3,"file":"EnrollmentDirector.js","sourceRoot":"","sources":["../../src/director/EnrollmentDirector.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,YAAY,GAAG,YAAY,CAAqB,oBAAoB,EAAE;IAC1E,cAAc,EAAE,YAAY;CAC7B,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,CAAC,WAAyB,EAAE,EAAE,CAC5D,YAAY,CAAC,WAAW,CAAC;IACvB,aAAa,EAAE,CAAC,OAA2B,EAAE,EAAE;QAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,EAAE;YACd,GAAG,CAAC,0BAA0B,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,OAAO,WAAW,EAAE;gBACxE,KAAK,EAAE,QAAQ,CAAC,OAAO;aACxB,CAAC,CAAC;SACJ;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,kBAAkB,GAAwB;IACrD,GAAG,YAAY;IAEf,8BAA8B,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,cAAc,EAAE,EAAE;QACxF,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;SAC1E;QAED,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,kCAAkC,CACrE,aAAa,EACb,cAAc,CACf,CAAC;QAEF,MAAM,cAAc,GAAmB;YACrC,GAAG,GAAG;YACN,GAAG,cAAc;YACjB,aAAa,EAAE,EAAE;SAClB,CAAC;QAEF,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,EAAE;QACnD,MAAM,OAAO,GAAG,EAAE,GAAG,iBAAiB,EAAE,GAAG,cAAc,EAAE,CAAC;QAE5D,kBAAkB;QAClB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YACzD,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS;SACxC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE5D,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;SACxF;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEzC,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"EnrollmentDirector.js","sourceRoot":"","sources":["../../src/director/EnrollmentDirector.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,YAAY,GAAG,YAAY,CAAqB,oBAAoB,EAAE;IAC1E,cAAc,EAAE,YAAY;CAC7B,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,CAAC,WAAyB,EAAE,EAAE,CAC5D,YAAY,CAAC,WAAW,CAAC;IACvB,aAAa,EAAE,CAAC,OAA2B,EAAE,EAAE;QAC7C,MAAM,SAAS,GAAG,OAAO,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,EAAE;YACd,GAAG,CAAC,0BAA0B,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,OAAO,WAAW,EAAE;gBACxE,KAAK,EAAE,QAAQ,CAAC,OAAO;aACxB,CAAC,CAAC;SACJ;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;CACF,CAAC,CAAC;AAEL,MAAM,CAAC,MAAM,kBAAkB,GAAwB;IACrD,GAAG,YAAY;IAEf,8BAA8B,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,YAAY,EAAE,EAAE;QACtF,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;SAC1E;QAED,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,kCAAkC,CAAC,aAAa,EAAE,YAAY,CAAC,CAAC;QAErG,MAAM,cAAc,GAAmB;YACrC,GAAG,GAAG;YACN,GAAG,cAAc;YACjB,aAAa,EAAE,EAAE;SAClB,CAAC;QAEF,OAAO,cAAc,CAAC;IACxB,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,EAAE;QACjD,MAAM,OAAO,GAAG,EAAE,GAAG,iBAAiB,EAAE,GAAG,YAAY,EAAE,CAAC;QAE1D,kBAAkB;QAClB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YACzD,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS;SACxC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,uBAAuB,CAAC,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAE5D,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,IAAI,KAAK,CAAC,qEAAqE,CAAC,CAAC;SACxF;QACD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAEzC,OAAO,OAAO,CAAC;IACjB,CAAC;CACF,CAAC"}
@@ -1,4 +1,4 @@
1
- export { configureEnrollmentsModule } from './module/configureEnrollmentsModule';
1
+ export { configureEnrollmentsModule, buildFindSelector } from './module/configureEnrollmentsModule';
2
2
  export { EnrollmentAdapter } from './director/EnrollmentAdapter';
3
3
  export { EnrollmentDirector } from './director/EnrollmentDirector';
4
4
  export { EnrollmentStatus } from './db/EnrollmentStatus';
@@ -1,4 +1,4 @@
1
- export { configureEnrollmentsModule } from './module/configureEnrollmentsModule';
1
+ export { configureEnrollmentsModule, buildFindSelector } from './module/configureEnrollmentsModule';
2
2
  export { EnrollmentAdapter } from './director/EnrollmentAdapter';
3
3
  export { EnrollmentDirector } from './director/EnrollmentDirector';
4
4
  export { EnrollmentStatus } from './db/EnrollmentStatus';
@@ -1 +1 @@
1
- {"version":3,"file":"enrollments-index.js","sourceRoot":"","sources":["../src/enrollments-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,MAAM,qCAAqC,CAAC;AAEjF,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC"}
1
+ {"version":3,"file":"enrollments-index.js","sourceRoot":"","sources":["../src/enrollments-index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,0BAA0B,EAAE,iBAAiB,EAAE,MAAM,qCAAqC,CAAC;AAEpG,OAAO,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AAEnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -1,3 +1,11 @@
1
1
  import { ModuleInput } from '@unchainedshop/types/core';
2
- import { EnrollmentsModule, EnrollmentsSettingsOptions } from '@unchainedshop/types/enrollments';
2
+ import { EnrollmentQuery, EnrollmentsModule, EnrollmentsSettingsOptions } from '@unchainedshop/types/enrollments';
3
+ export declare const buildFindSelector: ({ queryString, status, userId }: EnrollmentQuery) => {
4
+ deleted: Date;
5
+ status?: any;
6
+ $text?: {
7
+ $search?: string;
8
+ };
9
+ userId?: string;
10
+ };
3
11
  export declare const configureEnrollmentsModule: ({ db, options: enrollmentOptions, }: ModuleInput<EnrollmentsSettingsOptions>) => Promise<EnrollmentsModule>;
@@ -1,3 +1,4 @@
1
+ import { SortDirection } from '@unchainedshop/types/api';
1
2
  import { emit, registerEvents } from '@unchainedshop/events';
2
3
  import { log } from '@unchainedshop/logger';
3
4
  import { generateDbFilterById, generateDbMutations, buildSortOptions } from '@unchainedshop/utils';
@@ -12,7 +13,7 @@ const ENROLLMENT_EVENTS = [
12
13
  'ENROLLMENT_REMOVE',
13
14
  'ENROLLMENT_UPDATE',
14
15
  ];
15
- const buildFindSelector = ({ queryString, status, userId }) => {
16
+ export const buildFindSelector = ({ queryString, status, userId }) => {
16
17
  const selector = {
17
18
  deleted: null,
18
19
  };
@@ -36,9 +37,9 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
36
37
  }
37
38
  return findNewEnrollmentNumber(enrollment, index + 1);
38
39
  };
39
- const findNextStatus = async (enrollment, requestContext) => {
40
+ const findNextStatus = async (enrollment, unchainedAPI) => {
40
41
  let status = enrollment.status;
41
- const director = await EnrollmentDirector.actions({ enrollment }, requestContext);
42
+ const director = await EnrollmentDirector.actions({ enrollment }, unchainedAPI);
42
43
  if (status === EnrollmentStatus.INITIAL || status === EnrollmentStatus.PAUSED) {
43
44
  if (await director.isValidForActivation()) {
44
45
  status = EnrollmentStatus.ACTIVE;
@@ -49,19 +50,19 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
49
50
  status = EnrollmentStatus.PAUSED;
50
51
  }
51
52
  }
52
- else if (requestContext.modules.enrollments.isExpired(enrollment, {})) {
53
+ else if (unchainedAPI.modules.enrollments.isExpired(enrollment, {})) {
53
54
  status = EnrollmentStatus.TERMINATED;
54
55
  }
55
56
  return status;
56
57
  };
57
- const updateStatus = async (enrollmentId, { status, info = '' }, requestContext) => {
58
+ const updateStatus = async (enrollmentId, { status, info = '' }) => {
58
59
  const selector = generateDbFilterById(enrollmentId);
59
60
  const enrollment = await Enrollments.findOne(selector, {});
60
61
  if (enrollment.status === status)
61
62
  return enrollment;
62
63
  const date = new Date();
63
64
  const modifier = {
64
- $set: { status, updated: new Date(), updatedBy: requestContext.userId },
65
+ $set: { status, updated: new Date() },
65
66
  $push: {
66
67
  log: {
67
68
  date,
@@ -89,33 +90,33 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
89
90
  const reactivateEnrollment = async (enrollment) => {
90
91
  return enrollment;
91
92
  };
92
- const processEnrollment = async (enrollment, params, requestContext) => {
93
- let status = await findNextStatus(enrollment, requestContext);
93
+ const processEnrollment = async (enrollment, unchainedAPI) => {
94
+ let status = await findNextStatus(enrollment, unchainedAPI);
94
95
  if (status === EnrollmentStatus.ACTIVE) {
95
96
  const nextEnrollment = await reactivateEnrollment(enrollment);
96
- status = await findNextStatus(nextEnrollment, requestContext);
97
+ status = await findNextStatus(nextEnrollment, unchainedAPI);
97
98
  }
98
- return updateStatus(enrollment._id, { status, info: 'enrollment processed' }, requestContext);
99
+ return updateStatus(enrollment._id, { status, info: 'enrollment processed' }, unchainedAPI);
99
100
  };
100
- const initializeEnrollment = async (enrollment, params, requestContext) => {
101
- const { modules, userId } = requestContext;
102
- // const user = await modules.users.findUserById(enrollment.userId);
103
- // const locale = modules.users.userLocale(user, requestContext);
104
- // const reason = "new_enrollment";
105
- const director = await EnrollmentDirector.actions({ enrollment }, requestContext);
101
+ const initializeEnrollment = async (enrollment, params, unchainedAPI) => {
102
+ const { modules } = unchainedAPI;
103
+ const director = await EnrollmentDirector.actions({ enrollment }, unchainedAPI);
106
104
  const period = await director.nextPeriod();
107
105
  if (period && (params.orderIdForFirstPeriod || period.isTrial)) {
108
- const intializedEnrollment = await modules.enrollments.addEnrollmentPeriod(enrollment._id, { ...period, orderId: params.orderIdForFirstPeriod }, userId);
109
- return processEnrollment(intializedEnrollment, params, requestContext);
106
+ const intializedEnrollment = await modules.enrollments.addEnrollmentPeriod(enrollment._id, {
107
+ ...period,
108
+ orderId: params.orderIdForFirstPeriod,
109
+ });
110
+ return processEnrollment(intializedEnrollment, unchainedAPI);
110
111
  }
111
- return processEnrollment(enrollment, params, requestContext);
112
+ return processEnrollment(enrollment, unchainedAPI);
112
113
  };
113
- const sendStatusToCustomer = async (enrollment, params, requestContext) => {
114
- const { modules, userId } = requestContext;
114
+ const sendStatusToCustomer = async (enrollment, params, unchainedAPI) => {
115
+ const { modules } = unchainedAPI;
115
116
  let { locale } = params;
116
117
  if (!locale) {
117
118
  const user = await modules.users.findUserById(enrollment.userId);
118
- locale = modules.users.userLocale(user, requestContext);
119
+ locale = modules.users.userLocale(user);
119
120
  }
120
121
  await modules.worker.addWork({
121
122
  type: 'MESSAGE',
@@ -126,7 +127,7 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
126
127
  template: 'ENROLLMENT_STATUS',
127
128
  enrollmentId: enrollment._id,
128
129
  },
129
- }, userId);
130
+ });
130
131
  return enrollment;
131
132
  };
132
133
  const updateEnrollmentField = (fieldKey) => async (enrollmentId, fieldValue, userId) => {
@@ -134,7 +135,7 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
134
135
  enrollmentId,
135
136
  userId,
136
137
  });
137
- await mutations.update(enrollmentId, { $set: { [fieldKey]: fieldValue } }, userId);
138
+ await mutations.update(enrollmentId, { $set: { [fieldKey]: fieldValue } });
138
139
  const enrollment = await Enrollments.findOne(generateDbFilterById(enrollmentId), {});
139
140
  await emit('ENROLLMENT_UPDATE', { enrollment, field: fieldKey });
140
141
  return enrollment;
@@ -145,6 +146,11 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
145
146
  const enrollmentCount = await Enrollments.countDocuments(buildFindSelector(query));
146
147
  return enrollmentCount;
147
148
  },
149
+ openEnrollmentWithProduct: async ({ productId }) => {
150
+ const selector = { productId };
151
+ selector.status = { $in: [EnrollmentStatus.ACTIVE, EnrollmentStatus.PAUSED] };
152
+ return Enrollments.findOne(selector);
153
+ },
148
154
  findEnrollment: async ({ enrollmentId, orderId }, options) => {
149
155
  const selector = enrollmentId
150
156
  ? generateDbFilterById(enrollmentId)
@@ -152,10 +158,11 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
152
158
  return Enrollments.findOne(selector, options);
153
159
  },
154
160
  findEnrollments: async ({ limit, offset, sort, ...query }) => {
161
+ const defaultSortOption = [{ key: 'created', value: SortDirection.ASC }];
155
162
  const enrollments = Enrollments.find(buildFindSelector(query), {
156
163
  skip: offset,
157
164
  limit,
158
- sort: buildSortOptions(sort),
165
+ sort: buildSortOptions(sort || defaultSortOption),
159
166
  });
160
167
  return enrollments.toArray();
161
168
  },
@@ -172,28 +179,28 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
172
179
  return isExpired;
173
180
  },
174
181
  // Processing
175
- terminateEnrollment: async (enrollment, { enrollmentContext }, requestContext) => {
182
+ terminateEnrollment: async (enrollment, unchainedAPI) => {
176
183
  if (enrollment.status === EnrollmentStatus.TERMINATED)
177
184
  return enrollment;
178
185
  let updatedEnrollment = await updateStatus(enrollment._id, {
179
186
  status: EnrollmentStatus.TERMINATED,
180
187
  info: 'terminated manually',
181
- }, requestContext);
182
- updatedEnrollment = await processEnrollment(updatedEnrollment, { enrollmentContext }, requestContext);
183
- return sendStatusToCustomer(updatedEnrollment, {}, requestContext);
188
+ }, unchainedAPI);
189
+ updatedEnrollment = await processEnrollment(updatedEnrollment, unchainedAPI);
190
+ return sendStatusToCustomer(updatedEnrollment, {}, unchainedAPI);
184
191
  },
185
- activateEnrollment: async (enrollment, { enrollmentContext }, requestContext) => {
192
+ activateEnrollment: async (enrollment, unchainedAPI) => {
186
193
  if (enrollment.status === EnrollmentStatus.TERMINATED)
187
194
  return enrollment;
188
195
  let updatedEnrollment = await updateStatus(enrollment._id, {
189
196
  status: EnrollmentStatus.ACTIVE,
190
197
  info: 'activated manually',
191
- }, requestContext);
192
- updatedEnrollment = await processEnrollment(updatedEnrollment, { enrollmentContext }, requestContext);
193
- return sendStatusToCustomer(updatedEnrollment, {}, requestContext);
198
+ }, unchainedAPI);
199
+ updatedEnrollment = await processEnrollment(updatedEnrollment, unchainedAPI);
200
+ return sendStatusToCustomer(updatedEnrollment, {}, unchainedAPI);
194
201
  },
195
202
  // Mutations
196
- addEnrollmentPeriod: async (enrollmentId, period, userId) => {
203
+ addEnrollmentPeriod: async (enrollmentId, period) => {
197
204
  const { start, end, orderId, isTrial } = period;
198
205
  const selector = generateDbFilterById(enrollmentId);
199
206
  await Enrollments.updateOne(selector, {
@@ -207,20 +214,18 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
207
214
  },
208
215
  $set: {
209
216
  updated: new Date(),
210
- updatedBy: userId,
211
217
  },
212
218
  });
213
219
  const enrollment = await Enrollments.findOne(selector, {});
214
220
  await emit('ENROLLMENT_ADD_PERIOD', { enrollment });
215
221
  return enrollment;
216
222
  },
217
- create: async ({ countryCode, currencyCode, orderIdForFirstPeriod, ...enrollmentData }, requestContext) => {
218
- const { userId, services } = requestContext;
219
- log('Create Enrollment', { userId });
223
+ create: async ({ countryCode, currencyCode, orderIdForFirstPeriod, ...enrollmentData }, unchainedAPI) => {
224
+ const { services } = unchainedAPI;
220
225
  const currency = currencyCode ||
221
226
  (await services.countries.resolveDefaultCurrencyCode({
222
227
  isoCode: countryCode,
223
- }, requestContext));
228
+ }, unchainedAPI));
224
229
  const enrollmentId = await mutations.create({
225
230
  ...enrollmentData,
226
231
  status: EnrollmentStatus.INITIAL,
@@ -229,21 +234,21 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
229
234
  countryCode,
230
235
  configuration: enrollmentData.configuration || [],
231
236
  log: [],
232
- }, userId);
237
+ });
233
238
  const newEnrollment = await Enrollments.findOne(generateDbFilterById(enrollmentId), {});
234
239
  const reason = 'new_enrollment';
235
240
  const initializedEnrollment = await initializeEnrollment(newEnrollment, {
236
241
  orderIdForFirstPeriod,
237
242
  reason,
238
- }, requestContext);
243
+ }, unchainedAPI);
239
244
  const enrollment = await sendStatusToCustomer(initializedEnrollment, {
240
245
  reason,
241
- }, requestContext);
246
+ }, unchainedAPI);
242
247
  await emit('ENROLLMENT_CREATE', { enrollment });
243
248
  return enrollment;
244
249
  },
245
- createFromCheckout: async (order, { items, context }, requestContext) => {
246
- const { modules } = requestContext;
250
+ createFromCheckout: async (order, { items, context }, unchainedAPI) => {
251
+ const { modules } = unchainedAPI;
247
252
  const orderId = order._id;
248
253
  const payment = await modules.orders.payments.findOrderPayment({
249
254
  orderPaymentId: order.paymentId,
@@ -270,21 +275,20 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
270
275
  ...context,
271
276
  };
272
277
  await Promise.all(items.map(async (item) => {
273
- const enrollmentData = await EnrollmentDirector.transformOrderItemToEnrollment(item, template, requestContext);
274
- return modules.enrollments.create(enrollmentData, requestContext);
278
+ const enrollmentData = await EnrollmentDirector.transformOrderItemToEnrollment(item, template, unchainedAPI);
279
+ return modules.enrollments.create(enrollmentData, unchainedAPI);
275
280
  }));
276
281
  },
277
- delete: async (enrollmentId, userId) => {
278
- const deletedCount = await mutations.delete(enrollmentId, userId);
282
+ delete: async (enrollmentId) => {
283
+ const deletedCount = await mutations.delete(enrollmentId);
279
284
  await emit('ORDER_REMOVE', { enrollmentId });
280
285
  return deletedCount;
281
286
  },
282
- removeEnrollmentPeriodByOrderId: async (enrollmentId, orderId, userId) => {
287
+ removeEnrollmentPeriodByOrderId: async (enrollmentId, orderId) => {
283
288
  const selector = generateDbFilterById(enrollmentId);
284
289
  await Enrollments.updateOne(selector, {
285
290
  $set: {
286
291
  updated: new Date(),
287
- updatedBy: userId,
288
292
  },
289
293
  $pull: {
290
294
  periods: { orderId: { $in: [orderId, undefined, null] } },
@@ -297,23 +301,21 @@ export const configureEnrollmentsModule = async ({ db, options: enrollmentOption
297
301
  updateContext: updateEnrollmentField('context'),
298
302
  updateDelivery: updateEnrollmentField('delivery'),
299
303
  updatePayment: updateEnrollmentField('payment'),
300
- updatePlan: async (enrollmentId, plan, requestContext) => {
301
- const { userId } = requestContext;
304
+ updatePlan: async (enrollmentId, plan, unchainedAPI) => {
302
305
  log(`Update enrollment plan fields`, {
303
306
  enrollmentId,
304
- userId,
305
307
  });
306
308
  await mutations.update(enrollmentId, {
307
309
  productId: plan.productId,
308
310
  quantity: plan.quantity,
309
311
  configuration: plan.configuration,
310
- }, userId);
312
+ });
311
313
  const selector = generateDbFilterById(enrollmentId);
312
314
  const enrollment = await Enrollments.findOne(selector, {});
313
315
  await emit('ENROLLMENT_UPDATE', { enrollment, field: 'plan' });
314
316
  const reason = 'updated_plan';
315
- const initializedEnrollment = await initializeEnrollment(enrollment, { reason }, requestContext);
316
- return sendStatusToCustomer(initializedEnrollment, { reason }, requestContext);
317
+ const initializedEnrollment = await initializeEnrollment(enrollment, { reason }, unchainedAPI);
318
+ return sendStatusToCustomer(initializedEnrollment, { reason }, unchainedAPI);
317
319
  },
318
320
  updateStatus,
319
321
  };
@@ -1 +1 @@
1
- {"version":3,"file":"configureEnrollmentsModule.js","sourceRoot":"","sources":["../../src/module/configureEnrollmentsModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"configureEnrollmentsModule.js","sourceRoot":"","sources":["../../src/module/configureEnrollmentsModule.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unchainedshop/core-enrollments",
3
- "version": "2.0.0-beta8",
3
+ "version": "2.0.0-beta9",
4
4
  "main": "lib/enrollments-index.js",
5
5
  "exports": {
6
6
  ".": "./lib/enrollments-index.js",
@@ -12,7 +12,8 @@
12
12
  "clean": "rm -rf lib",
13
13
  "build": "npm run clean && tsc",
14
14
  "watch": "tsc -w",
15
- "test": "jest --watch"
15
+ "test": "NODE_OPTIONS=--experimental-vm-modules jest --detectOpenHandles --forceExit",
16
+ "test:watch": "NODE_OPTIONS=--experimental-vm-modules jest --watch --detectOpenHandles --forceExit"
16
17
  },
17
18
  "repository": {
18
19
  "type": "git",
@@ -31,19 +32,19 @@
31
32
  "homepage": "https://github.com/unchainedshop/unchained#readme",
32
33
  "dependencies": {
33
34
  "@breejs/later": "^4.1.0",
34
- "@unchainedshop/events": "^2.0.0-beta8",
35
- "@unchainedshop/logger": "^2.0.0-beta8",
36
- "@unchainedshop/utils": "^2.0.0-beta8",
35
+ "@unchainedshop/events": "^2.0.0-beta9",
36
+ "@unchainedshop/logger": "^2.0.0-beta9",
37
+ "@unchainedshop/utils": "^2.0.0-beta9",
37
38
  "date-fns": "^2.29.3",
38
39
  "locale": "0.1.0",
39
- "simpl-schema": "^3.0.1"
40
+ "simpl-schema": "^3.2.0"
40
41
  },
41
42
  "devDependencies": {
42
43
  "@types/locale": "^0.1.1",
43
- "@types/node": "^18.11.9",
44
- "@unchainedshop/types": "^2.0.0-beta8",
44
+ "@types/node": "^18.11.12",
45
+ "@unchainedshop/types": "^2.0.0-beta9",
45
46
  "jest": "^29.3.1",
46
47
  "ts-jest": "^29.0.3",
47
- "typescript": "^4.9.3"
48
+ "typescript": "^4.9.4"
48
49
  }
49
50
  }
@@ -3,7 +3,7 @@ import { startOfHour, startOfMinute, add } from 'date-fns';
3
3
 
4
4
  import { IEnrollmentAdapter } from '@unchainedshop/types/enrollments';
5
5
 
6
- const periodForReferenceDate = (referenceDate: Date, intervalCount = 1, interval = 'WEEKS') => {
6
+ export const periodForReferenceDate = (referenceDate: Date, intervalCount = 1, interval = 'WEEKS') => {
7
7
  const lowerCase = interval.toLowerCase();
8
8
  const start = lowerCase === 'hours' ? startOfMinute(referenceDate) : startOfHour(referenceDate);
9
9
 
@@ -27,16 +27,13 @@ const findAppropriateAdapters = (productPlan?: ProductPlan) =>
27
27
  export const EnrollmentDirector: IEnrollmentDirector = {
28
28
  ...baseDirector,
29
29
 
30
- transformOrderItemToEnrollment: async ({ orderPosition, product }, doc, requestContext) => {
30
+ transformOrderItemToEnrollment: async ({ orderPosition, product }, doc, unchainedAPI) => {
31
31
  const Adapter = findAppropriateAdapters(product.plan)?.[0];
32
32
  if (!Adapter) {
33
33
  throw new Error('No suitable enrollment plugin available for this item');
34
34
  }
35
35
 
36
- const enrollmentPlan = await Adapter.transformOrderItemToEnrollmentPlan(
37
- orderPosition,
38
- requestContext,
39
- );
36
+ const enrollmentPlan = await Adapter.transformOrderItemToEnrollmentPlan(orderPosition, unchainedAPI);
40
37
 
41
38
  const enrollmentData: EnrollmentData = {
42
39
  ...doc,
@@ -47,8 +44,8 @@ export const EnrollmentDirector: IEnrollmentDirector = {
47
44
  return enrollmentData;
48
45
  },
49
46
 
50
- actions: async (enrollmentContext, requestContext) => {
51
- const context = { ...enrollmentContext, ...requestContext };
47
+ actions: async (enrollmentContext, unchainedAPI) => {
48
+ const context = { ...enrollmentContext, ...unchainedAPI };
52
49
 
53
50
  // Resolve adapter
54
51
  const product = await context.modules.products.findProduct({
@@ -1,4 +1,4 @@
1
- export { configureEnrollmentsModule } from './module/configureEnrollmentsModule';
1
+ export { configureEnrollmentsModule, buildFindSelector } from './module/configureEnrollmentsModule';
2
2
 
3
3
  export { EnrollmentAdapter } from './director/EnrollmentAdapter';
4
4
  export { EnrollmentDirector } from './director/EnrollmentDirector';
@@ -1,5 +1,5 @@
1
- import { Context, SortOption } from '@unchainedshop/types/api';
2
- import { ModuleInput, ModuleMutations } from '@unchainedshop/types/core';
1
+ import { SortDirection, SortOption } from '@unchainedshop/types/api';
2
+ import { ModuleInput, ModuleMutations, UnchainedCore } from '@unchainedshop/types/core';
3
3
  import {
4
4
  Enrollment,
5
5
  EnrollmentQuery,
@@ -10,6 +10,7 @@ import type { Locale } from 'locale';
10
10
  import { emit, registerEvents } from '@unchainedshop/events';
11
11
  import { log } from '@unchainedshop/logger';
12
12
  import { generateDbFilterById, generateDbMutations, buildSortOptions } from '@unchainedshop/utils';
13
+ import { Query } from '@unchainedshop/types/common';
13
14
  import { EnrollmentsCollection } from '../db/EnrollmentsCollection';
14
15
  import { EnrollmentsSchema } from '../db/EnrollmentsSchema';
15
16
  import { EnrollmentStatus } from '../db/EnrollmentStatus';
@@ -23,7 +24,7 @@ const ENROLLMENT_EVENTS: string[] = [
23
24
  'ENROLLMENT_UPDATE',
24
25
  ];
25
26
 
26
- const buildFindSelector = ({ queryString, status, userId }: EnrollmentQuery) => {
27
+ export const buildFindSelector = ({ queryString, status, userId }: EnrollmentQuery) => {
27
28
  const selector: {
28
29
  deleted: Date;
29
30
  status?: any;
@@ -65,10 +66,10 @@ export const configureEnrollmentsModule = async ({
65
66
 
66
67
  const findNextStatus = async (
67
68
  enrollment: Enrollment,
68
- requestContext: Context,
69
+ unchainedAPI: UnchainedCore,
69
70
  ): Promise<EnrollmentStatus> => {
70
71
  let status = enrollment.status as EnrollmentStatus;
71
- const director = await EnrollmentDirector.actions({ enrollment }, requestContext);
72
+ const director = await EnrollmentDirector.actions({ enrollment }, unchainedAPI);
72
73
 
73
74
  if (status === EnrollmentStatus.INITIAL || status === EnrollmentStatus.PAUSED) {
74
75
  if (await director.isValidForActivation()) {
@@ -78,7 +79,7 @@ export const configureEnrollmentsModule = async ({
78
79
  if (await director.isOverdue()) {
79
80
  status = EnrollmentStatus.PAUSED;
80
81
  }
81
- } else if (requestContext.modules.enrollments.isExpired(enrollment, {})) {
82
+ } else if (unchainedAPI.modules.enrollments.isExpired(enrollment, {})) {
82
83
  status = EnrollmentStatus.TERMINATED;
83
84
  }
84
85
 
@@ -88,7 +89,6 @@ export const configureEnrollmentsModule = async ({
88
89
  const updateStatus: EnrollmentsModule['updateStatus'] = async (
89
90
  enrollmentId,
90
91
  { status, info = '' },
91
- requestContext,
92
92
  ) => {
93
93
  const selector = generateDbFilterById(enrollmentId);
94
94
  const enrollment = await Enrollments.findOne(selector, {});
@@ -100,7 +100,7 @@ export const configureEnrollmentsModule = async ({
100
100
  $set: Partial<Enrollment>;
101
101
  $push: { log: Enrollment['log'][0] };
102
102
  } = {
103
- $set: { status, updated: new Date(), updatedBy: requestContext.userId },
103
+ $set: { status, updated: new Date() },
104
104
  $push: {
105
105
  log: {
106
106
  date,
@@ -136,74 +136,62 @@ export const configureEnrollmentsModule = async ({
136
136
  return enrollment;
137
137
  };
138
138
 
139
- const processEnrollment = async (
140
- enrollment: Enrollment,
141
- params: { enrollmentContext?: any; orderIdForFirstPeriod?: string },
142
- requestContext: Context,
143
- ) => {
144
- let status = await findNextStatus(enrollment, requestContext);
139
+ const processEnrollment = async (enrollment: Enrollment, unchainedAPI: UnchainedCore) => {
140
+ let status = await findNextStatus(enrollment, unchainedAPI);
145
141
 
146
142
  if (status === EnrollmentStatus.ACTIVE) {
147
143
  const nextEnrollment = await reactivateEnrollment(enrollment);
148
- status = await findNextStatus(nextEnrollment, requestContext);
144
+ status = await findNextStatus(nextEnrollment, unchainedAPI);
149
145
  }
150
146
 
151
- return updateStatus(enrollment._id, { status, info: 'enrollment processed' }, requestContext);
147
+ return updateStatus(enrollment._id, { status, info: 'enrollment processed' }, unchainedAPI);
152
148
  };
153
149
 
154
150
  const initializeEnrollment = async (
155
151
  enrollment: Enrollment,
156
152
  params: { orderIdForFirstPeriod?: string; reason: string },
157
- requestContext: Context,
153
+ unchainedAPI: UnchainedCore,
158
154
  ) => {
159
- const { modules, userId } = requestContext;
155
+ const { modules } = unchainedAPI;
160
156
 
161
- // const user = await modules.users.findUserById(enrollment.userId);
162
- // const locale = modules.users.userLocale(user, requestContext);
163
- // const reason = "new_enrollment";
164
-
165
- const director = await EnrollmentDirector.actions({ enrollment }, requestContext);
157
+ const director = await EnrollmentDirector.actions({ enrollment }, unchainedAPI);
166
158
  const period = await director.nextPeriod();
167
159
 
168
160
  if (period && (params.orderIdForFirstPeriod || period.isTrial)) {
169
- const intializedEnrollment = await modules.enrollments.addEnrollmentPeriod(
170
- enrollment._id,
171
- { ...period, orderId: params.orderIdForFirstPeriod },
172
- userId,
173
- );
161
+ const intializedEnrollment = await modules.enrollments.addEnrollmentPeriod(enrollment._id, {
162
+ ...period,
163
+ orderId: params.orderIdForFirstPeriod,
164
+ });
174
165
 
175
- return processEnrollment(intializedEnrollment, params, requestContext);
166
+ return processEnrollment(intializedEnrollment, unchainedAPI);
176
167
  }
177
168
 
178
- return processEnrollment(enrollment, params, requestContext);
169
+ return processEnrollment(enrollment, unchainedAPI);
179
170
  };
180
171
 
181
172
  const sendStatusToCustomer = async (
182
173
  enrollment: Enrollment,
183
174
  params: { locale?: Locale; reason?: string },
184
- requestContext: Context,
175
+ unchainedAPI: UnchainedCore,
185
176
  ) => {
186
- const { modules, userId } = requestContext;
177
+ const { modules } = unchainedAPI;
187
178
 
188
179
  let { locale } = params;
189
180
  if (!locale) {
190
181
  const user = await modules.users.findUserById(enrollment.userId);
191
- locale = modules.users.userLocale(user, requestContext);
182
+ locale = modules.users.userLocale(user);
192
183
  }
193
184
 
194
- await modules.worker.addWork(
195
- {
196
- type: 'MESSAGE',
197
- retries: 0,
198
- input: {
199
- reason: params.reason || 'status_change',
200
- locale,
201
- template: 'ENROLLMENT_STATUS',
202
- enrollmentId: enrollment._id,
203
- },
185
+ await modules.worker.addWork({
186
+ type: 'MESSAGE',
187
+ retries: 0,
188
+ input: {
189
+ reason: params.reason || 'status_change',
190
+ locale,
191
+ template: 'ENROLLMENT_STATUS',
192
+ enrollmentId: enrollment._id,
204
193
  },
205
- userId,
206
- );
194
+ });
207
195
 
208
196
  return enrollment;
209
197
  };
@@ -215,7 +203,7 @@ export const configureEnrollmentsModule = async ({
215
203
  userId,
216
204
  });
217
205
 
218
- await mutations.update(enrollmentId, { $set: { [fieldKey]: fieldValue } }, userId);
206
+ await mutations.update(enrollmentId, { $set: { [fieldKey]: fieldValue } });
219
207
 
220
208
  const enrollment = await Enrollments.findOne(generateDbFilterById(enrollmentId), {});
221
209
 
@@ -230,6 +218,11 @@ export const configureEnrollmentsModule = async ({
230
218
  const enrollmentCount = await Enrollments.countDocuments(buildFindSelector(query));
231
219
  return enrollmentCount;
232
220
  },
221
+ openEnrollmentWithProduct: async ({ productId }) => {
222
+ const selector: Query = { productId };
223
+ selector.status = { $in: [EnrollmentStatus.ACTIVE, EnrollmentStatus.PAUSED] };
224
+ return Enrollments.findOne(selector);
225
+ },
233
226
 
234
227
  findEnrollment: async ({ enrollmentId, orderId }, options) => {
235
228
  const selector = enrollmentId
@@ -245,10 +238,11 @@ export const configureEnrollmentsModule = async ({
245
238
  sort,
246
239
  ...query
247
240
  }: EnrollmentQuery & { limit?: number; offset?: number; sort?: Array<SortOption> }) => {
241
+ const defaultSortOption: Array<SortOption> = [{ key: 'created', value: SortDirection.ASC }];
248
242
  const enrollments = Enrollments.find(buildFindSelector(query), {
249
243
  skip: offset,
250
244
  limit,
251
- sort: buildSortOptions(sort),
245
+ sort: buildSortOptions(sort || defaultSortOption),
252
246
  });
253
247
 
254
248
  return enrollments.toArray();
@@ -269,7 +263,7 @@ export const configureEnrollmentsModule = async ({
269
263
  },
270
264
 
271
265
  // Processing
272
- terminateEnrollment: async (enrollment, { enrollmentContext }, requestContext) => {
266
+ terminateEnrollment: async (enrollment, unchainedAPI) => {
273
267
  if (enrollment.status === EnrollmentStatus.TERMINATED) return enrollment;
274
268
 
275
269
  let updatedEnrollment = await updateStatus(
@@ -278,19 +272,15 @@ export const configureEnrollmentsModule = async ({
278
272
  status: EnrollmentStatus.TERMINATED,
279
273
  info: 'terminated manually',
280
274
  },
281
- requestContext,
275
+ unchainedAPI,
282
276
  );
283
277
 
284
- updatedEnrollment = await processEnrollment(
285
- updatedEnrollment,
286
- { enrollmentContext },
287
- requestContext,
288
- );
278
+ updatedEnrollment = await processEnrollment(updatedEnrollment, unchainedAPI);
289
279
 
290
- return sendStatusToCustomer(updatedEnrollment, {}, requestContext);
280
+ return sendStatusToCustomer(updatedEnrollment, {}, unchainedAPI);
291
281
  },
292
282
 
293
- activateEnrollment: async (enrollment, { enrollmentContext }, requestContext) => {
283
+ activateEnrollment: async (enrollment, unchainedAPI) => {
294
284
  if (enrollment.status === EnrollmentStatus.TERMINATED) return enrollment;
295
285
 
296
286
  let updatedEnrollment = await updateStatus(
@@ -299,20 +289,16 @@ export const configureEnrollmentsModule = async ({
299
289
  status: EnrollmentStatus.ACTIVE,
300
290
  info: 'activated manually',
301
291
  },
302
- requestContext,
292
+ unchainedAPI,
303
293
  );
304
294
 
305
- updatedEnrollment = await processEnrollment(
306
- updatedEnrollment,
307
- { enrollmentContext },
308
- requestContext,
309
- );
295
+ updatedEnrollment = await processEnrollment(updatedEnrollment, unchainedAPI);
310
296
 
311
- return sendStatusToCustomer(updatedEnrollment, {}, requestContext);
297
+ return sendStatusToCustomer(updatedEnrollment, {}, unchainedAPI);
312
298
  },
313
299
 
314
300
  // Mutations
315
- addEnrollmentPeriod: async (enrollmentId, period, userId) => {
301
+ addEnrollmentPeriod: async (enrollmentId, period) => {
316
302
  const { start, end, orderId, isTrial } = period;
317
303
  const selector = generateDbFilterById(enrollmentId);
318
304
  await Enrollments.updateOne(selector, {
@@ -326,7 +312,6 @@ export const configureEnrollmentsModule = async ({
326
312
  },
327
313
  $set: {
328
314
  updated: new Date(),
329
- updatedBy: userId,
330
315
  },
331
316
  });
332
317
  const enrollment = await Enrollments.findOne(selector, {});
@@ -338,11 +323,9 @@ export const configureEnrollmentsModule = async ({
338
323
 
339
324
  create: async (
340
325
  { countryCode, currencyCode, orderIdForFirstPeriod, ...enrollmentData },
341
- requestContext,
326
+ unchainedAPI,
342
327
  ) => {
343
- const { userId, services } = requestContext;
344
-
345
- log('Create Enrollment', { userId });
328
+ const { services } = unchainedAPI;
346
329
 
347
330
  const currency =
348
331
  currencyCode ||
@@ -350,21 +333,18 @@ export const configureEnrollmentsModule = async ({
350
333
  {
351
334
  isoCode: countryCode,
352
335
  },
353
- requestContext,
336
+ unchainedAPI,
354
337
  ));
355
338
 
356
- const enrollmentId = await mutations.create(
357
- {
358
- ...enrollmentData,
359
- status: EnrollmentStatus.INITIAL,
360
- periods: [],
361
- currencyCode: currency,
362
- countryCode,
363
- configuration: enrollmentData.configuration || [],
364
- log: [],
365
- },
366
- userId,
367
- );
339
+ const enrollmentId = await mutations.create({
340
+ ...enrollmentData,
341
+ status: EnrollmentStatus.INITIAL,
342
+ periods: [],
343
+ currencyCode: currency,
344
+ countryCode,
345
+ configuration: enrollmentData.configuration || [],
346
+ log: [],
347
+ });
368
348
 
369
349
  const newEnrollment = await Enrollments.findOne(generateDbFilterById(enrollmentId), {});
370
350
 
@@ -376,7 +356,7 @@ export const configureEnrollmentsModule = async ({
376
356
  orderIdForFirstPeriod,
377
357
  reason,
378
358
  },
379
- requestContext,
359
+ unchainedAPI,
380
360
  );
381
361
 
382
362
  const enrollment = await sendStatusToCustomer(
@@ -384,7 +364,7 @@ export const configureEnrollmentsModule = async ({
384
364
  {
385
365
  reason,
386
366
  },
387
- requestContext,
367
+ unchainedAPI,
388
368
  );
389
369
 
390
370
  await emit('ENROLLMENT_CREATE', { enrollment });
@@ -392,8 +372,8 @@ export const configureEnrollmentsModule = async ({
392
372
  return enrollment;
393
373
  },
394
374
 
395
- createFromCheckout: async (order, { items, context }, requestContext) => {
396
- const { modules } = requestContext;
375
+ createFromCheckout: async (order, { items, context }, unchainedAPI) => {
376
+ const { modules } = unchainedAPI;
397
377
  const orderId = order._id;
398
378
 
399
379
  const payment = await modules.orders.payments.findOrderPayment({
@@ -427,26 +407,25 @@ export const configureEnrollmentsModule = async ({
427
407
  const enrollmentData = await EnrollmentDirector.transformOrderItemToEnrollment(
428
408
  item,
429
409
  template,
430
- requestContext,
410
+ unchainedAPI,
431
411
  );
432
412
 
433
- return modules.enrollments.create(enrollmentData, requestContext);
413
+ return modules.enrollments.create(enrollmentData, unchainedAPI);
434
414
  }),
435
415
  );
436
416
  },
437
417
 
438
- delete: async (enrollmentId, userId) => {
439
- const deletedCount = await mutations.delete(enrollmentId, userId);
418
+ delete: async (enrollmentId) => {
419
+ const deletedCount = await mutations.delete(enrollmentId);
440
420
  await emit('ORDER_REMOVE', { enrollmentId });
441
421
  return deletedCount;
442
422
  },
443
423
 
444
- removeEnrollmentPeriodByOrderId: async (enrollmentId, orderId, userId) => {
424
+ removeEnrollmentPeriodByOrderId: async (enrollmentId, orderId) => {
445
425
  const selector = generateDbFilterById(enrollmentId);
446
426
  await Enrollments.updateOne(selector, {
447
427
  $set: {
448
428
  updated: new Date(),
449
- updatedBy: userId,
450
429
  },
451
430
 
452
431
  $pull: {
@@ -463,23 +442,16 @@ export const configureEnrollmentsModule = async ({
463
442
  updateDelivery: updateEnrollmentField('delivery'),
464
443
  updatePayment: updateEnrollmentField('payment'),
465
444
 
466
- updatePlan: async (enrollmentId, plan, requestContext) => {
467
- const { userId } = requestContext;
468
-
445
+ updatePlan: async (enrollmentId, plan, unchainedAPI) => {
469
446
  log(`Update enrollment plan fields`, {
470
447
  enrollmentId,
471
- userId,
472
448
  });
473
449
 
474
- await mutations.update(
475
- enrollmentId,
476
- {
477
- productId: plan.productId,
478
- quantity: plan.quantity,
479
- configuration: plan.configuration,
480
- },
481
- userId,
482
- );
450
+ await mutations.update(enrollmentId, {
451
+ productId: plan.productId,
452
+ quantity: plan.quantity,
453
+ configuration: plan.configuration,
454
+ });
483
455
 
484
456
  const selector = generateDbFilterById(enrollmentId);
485
457
  const enrollment = await Enrollments.findOne(selector, {});
@@ -487,9 +459,9 @@ export const configureEnrollmentsModule = async ({
487
459
  await emit('ENROLLMENT_UPDATE', { enrollment, field: 'plan' });
488
460
 
489
461
  const reason = 'updated_plan';
490
- const initializedEnrollment = await initializeEnrollment(enrollment, { reason }, requestContext);
462
+ const initializedEnrollment = await initializeEnrollment(enrollment, { reason }, unchainedAPI);
491
463
 
492
- return sendStatusToCustomer(initializedEnrollment, { reason }, requestContext);
464
+ return sendStatusToCustomer(initializedEnrollment, { reason }, unchainedAPI);
493
465
  },
494
466
 
495
467
  updateStatus,
@@ -1,91 +1,54 @@
1
- import { assert } from 'chai';
2
- import { initDb } from '@unchainedshop/mongodb';
3
- import { configureUsersModule } from '@unchainedshop/core-users';
4
- import { configureEnrollmentsModule } from '@unchainedshop/core-enrollments';
5
- import { EnrollmentsModule } from '@unchainedshop/types/enrollments';
6
- import { Context } from '@unchainedshop/types/api';
7
- import { User, UsersModule } from '@unchainedshop/types/user';
1
+ import { EnrollmentStatus } from "@unchainedshop/types/enrollments";
2
+ import {periodForReferenceDate} from "../src/director/EnrollmentAdapter";
8
3
 
9
- describe('Test exports', () => {
10
- const context: {
11
- modules: { enrollments: EnrollmentsModule; users: UsersModule };
12
- services: { countries: { resolveDefaultCurrencyCode: () => string } };
13
- } = {
14
- modules: {
15
- enrollments: null,
16
- users: null,
17
- },
18
- services: {
19
- countries: {
20
- resolveDefaultCurrencyCode: () => 'CHF',
21
- },
22
- },
23
- };
24
- let user: User
4
+ import {buildFindSelector} from '../src/module/configureEnrollmentsModule'
25
5
 
26
- before(async () => {
27
- const db = await initDb();
28
- const enrollmentsModule = await configureEnrollmentsModule({ db }).catch(
29
- (error) => {
30
- console.error(error);
31
6
 
32
- throw error;
33
- }
34
- );
35
-
36
- const usersModules = await configureUsersModule({ db }).catch((error) => {
37
- console.error(error);
38
-
39
- throw error;
7
+ describe('Enrollment', () => {
8
+ describe('periodForReferenceDate', () => {
9
+ it('Should return 1 week interval from When passed a given date', async () => {
10
+ expect(periodForReferenceDate(new Date('2022-12-03T17:00:00.000Z'))).toEqual({ start: new Date( '2022-12-03T17:00:00.000Z'), end: new Date('2022-12-10T17:00:00.000Z') })
11
+ });
12
+ it('Should return 2 week interval from When passed 2 as interval', async () => {
13
+ expect(periodForReferenceDate(new Date('2022-12-03T17:00:00.000Z'), 2)).toEqual({ start: new Date( '2022-12-03T17:00:00.000Z'), end: new Date('2022-12-17T17:00:00.000Z') })
40
14
  });
41
15
 
42
- context.modules.enrollments = enrollmentsModule;
43
- context.modules.users = usersModules;
16
+ it('Should return 2 HOURS when interval is set to HOURS', async () => {
17
+ expect(periodForReferenceDate(new Date('2022-12-03T17:00:00.000Z'), 2, 'HOURS')).toEqual({ start: new Date( '2022-12-03T17:00:00.000Z'), end: new Date('2022-12-03T19:00:00.000Z') })
18
+ });
44
19
  });
45
20
 
46
- it('Insert enrollment', async () => {
47
- let enrollment = await context.modules.enrollments.create(
48
- {
49
- billingAddress: {
50
- lastName: 'Mustermann',
51
- firstName: 'Max',
52
- addressLine: 'Teststreet 11',
53
- city: 'Zürich',
54
- postalCode: '8009',
55
- company: 'Unchained Commerce',
56
- countryCode: 'CH',
57
- },
58
- countryCode: 'CH',
59
- currencyCode: 'CHF',
60
- contact: {},
61
- productId: 'Product-123',
62
- quantity: 2,
63
- userId: 'Test-User-1',
64
- payment: {
65
- paymentProviderId: 'payment-provider-1',
66
- context: {},
67
- },
68
- delivery: {
69
- deliveryProviderId: 'delivery-provider-1',
70
- context: {},
71
- },
72
- },
73
- context as Context
74
- );
75
-
76
- assert.ok(enrollment);
77
- const enrollmentId = enrollment._id;
78
- enrollment = await context.modules.enrollments.findEnrollment({
79
- enrollmentId,
21
+ describe('buildFindSelector', () => {
22
+ it('Should correct filter when passed status, userId and queryString', async () => {
23
+ expect(buildFindSelector({queryString: "Hello World", status: [EnrollmentStatus.ACTIVE], userId: 'admin-id'})).toEqual({
24
+ deleted: null,
25
+ status: { '$in': [ 'ACTIVE' ] },
26
+ userId: 'admin-id',
27
+ '$text': { '$search': 'Hello World' }
28
+ })
29
+ });
30
+ it('Should correct filter when passed userId and queryString', async () => {
31
+
32
+ expect(buildFindSelector({queryString: "Hello World", userId: 'admin-id'})).toEqual({
33
+ deleted: null,
34
+ userId: 'admin-id',
35
+ '$text': { '$search': 'Hello World' }
36
+ })
80
37
  });
81
38
 
82
- assert.ok(enrollment);
39
+ it('Should correct filter when passed queryString', async () => {
40
+
41
+ expect(buildFindSelector({queryString: "Hello World"})).toEqual({
42
+ deleted: null,
43
+ '$text': { '$search': 'Hello World' }
44
+ })
45
+ });
83
46
 
84
- const deletedCount = await context.modules.enrollments
85
- .delete(enrollmentId, 'Test-User-1')
86
- .catch((error) => {
87
- return 0;
88
- });
89
- assert.equal(deletedCount, 1);
90
- });
91
- });
47
+ it('Should correct filter when passed no argument', async () => {
48
+
49
+ expect(buildFindSelector({})).toEqual({
50
+ deleted: null,
51
+ })
52
+ });
53
+ })
54
+ })