Skip to content

Commit 05bbbb8

Browse files
committed
chore: modernize program-boilerplate
* Updated minimum supported Node version to 24 * Updated to TypeScript 6 * Updated to bson-objectid 2 * Removed jest, ts-jest & jest-cucumber in favor of native Node test runner * Removed typedoc (was unused) * Removed source-map * Removed prettier (install from dev environment) * Removed ts-node as Node can run TypeScript natively * Updated all dependencies * Converted package to ESM
1 parent 83a4dc2 commit 05bbbb8

19 files changed

Lines changed: 2183 additions & 10176 deletions
Lines changed: 17 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,43 @@
11
import jsonata from "jsonata";
2-
import { safeJsonata, timeboxExpression } from "../src/jsonata";
2+
import * as assert from "node:assert";
3+
import { describe, test } from "node:test";
4+
import { safeJsonata, timeboxExpression } from "../src/jsonata.ts";
35

46
describe("#timeboxExpression", () => {
57
const infExpr = jsonata("( $inf := function(){$inf()}; $inf())");
68

7-
test("infinite loops throw error", () => {
9+
test("infinite loops throw error", { timeout: 7000 }, () => {
810
timeboxExpression(infExpr);
911

1012
let error: any;
11-
expect(() => {
13+
assert.throws(() => {
1214
try {
1315
infExpr.evaluate(undefined);
1416
} catch (e) {
1517
error = e;
1618
throw e;
1719
}
18-
}).toThrow();
19-
expect(error!.code === "U1001" || error!.code === "U1002").toBe(true);
20-
}, 7000);
20+
});
21+
22+
assert.strictEqual(
23+
error!.code === "U1001" || error!.code === "U1002",
24+
true,
25+
);
26+
});
2127
});
2228

2329
describe("#safeJsonata", () => {
2430
const infExpr = "( $inf := function(){$inf()}; $inf())";
2531

2632
const expr = "( event.key = 'purchase' ? 111 )";
2733
const input = { event: { key: "purchase" } };
28-
test("infinite loops do not throw, but still exit", () => {
29-
expect(() => {
34+
test("infinite loops do not throw, but still exit", { timeout: 7000 }, () => {
35+
assert.doesNotThrow(() => {
3036
safeJsonata(infExpr, undefined);
31-
}).not.toThrow();
32-
}, 7000);
37+
});
38+
});
3339

3440
test("jsonata is evaluated as normal", () => {
35-
expect(safeJsonata(expr, input)).toBe(111);
41+
assert.strictEqual(safeJsonata(expr, input), 111);
3642
});
3743
});
Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,22 @@
1-
import { getLogger, setLogLevel } from "../src/logger";
1+
import * as assert from "node:assert";
2+
import { describe, test } from "node:test";
3+
import { getLogger, setLogLevel } from "../src/logger.ts";
24

35
const logger = getLogger("notice");
46
describe("#getLogger", () => {
57
test("first call initializes the logger at the given level", () => {
6-
expect(logger);
7-
expect(logger.level).toBe("notice");
8+
assert.ok(logger);
9+
assert.strictEqual(logger.level, "notice");
810
});
911

1012
test("logger is only initialized once", () => {
11-
expect(getLogger("warn")).toBe(logger);
13+
assert.deepStrictEqual(getLogger("warn"), logger);
1214
});
1315
});
1416

1517
describe("#setLogLevel", () => {
1618
test("sets the log level of an initialized logger", () => {
1719
setLogLevel("crit");
18-
expect(logger.level).toBe("crit");
20+
assert.strictEqual(logger.level, "crit");
1921
});
2022
});

packages/program-boilerplate/__tests__/transaction.test.ts

Lines changed: 36 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
1+
import * as assert from "node:assert";
2+
import { beforeEach, describe, test } from "node:test";
13
import {
24
nonRewardEmailQueryForNonReferralPrograms,
35
nonRewardEmailQueryForReferralPrograms,
46
rewardEmailQuery,
57
rewardEmailQueryForNonReferralPrograms,
6-
} from "../src/queries";
7-
import Transaction from "../src/transaction";
8-
import { Referral } from "../src/types/saasquatch";
8+
} from "../src/queries.ts";
9+
import Transaction from "../src/transaction.ts";
10+
import type { Referral } from "../src/types/saasquatch.ts";
911

1012
describe("Transaction class", () => {
1113
const messageType: "PROGRAM_TRIGGER" = "PROGRAM_TRIGGER";
@@ -53,7 +55,7 @@ describe("Transaction class", () => {
5355
id: "referrerID",
5456
accountId: "referrerACCOUNTID",
5557
programGoals: [],
56-
referredByReferral: <Referral>{
58+
referredByReferral: {
5759
id: "referralID",
5860
fraudFlags: [],
5961
isFraudExempt: false,
@@ -67,7 +69,7 @@ describe("Transaction class", () => {
6769
},
6870
},
6971
rewards: [],
70-
},
72+
} as Referral,
7173
};
7274

7375
let transaction = new Transaction(testContext);
@@ -78,7 +80,7 @@ describe("Transaction class", () => {
7880
describe("#fireProgramEvalAnalytics", () => {
7981
test("evalAnalytic is pushed to analytics", () => {
8082
transaction.fireProgramEvalAnalytics(testUser, "ACQUISITION");
81-
expect(transaction.analytics).toStrictEqual([
83+
assert.deepStrictEqual(transaction.analytics, [
8284
{
8385
eventType: "PROGRAM_EVALUATED",
8486
data: {
@@ -102,10 +104,10 @@ describe("Transaction class", () => {
102104
"testAnalyticsKey",
103105
"testDedupKey",
104106
now,
105-
false
107+
false,
106108
);
107109

108-
expect(transaction.analytics).toStrictEqual([
110+
assert.deepStrictEqual(transaction.analytics, [
109111
{
110112
eventType: "PROGRAM_GOAL",
111113
data: {
@@ -128,7 +130,7 @@ describe("Transaction class", () => {
128130
const rewardKey = "testRewardKey123";
129131
test("createReward mutation is pushed to mutations", () => {
130132
const { rewardId } = transaction.generateSimpleReward(rewardKey);
131-
expect(transaction.mutations).toStrictEqual([
133+
assert.deepStrictEqual(transaction.mutations, [
132134
{
133135
type: "CREATE_REWARD",
134136
data: {
@@ -164,7 +166,7 @@ describe("Transaction class", () => {
164166
unit: "CAD",
165167
},
166168
});
167-
expect(transaction.mutations).toStrictEqual([
169+
assert.deepStrictEqual(transaction.mutations, [
168170
{
169171
type: "CREATE_REWARD",
170172
data: {
@@ -195,7 +197,7 @@ describe("Transaction class", () => {
195197
const emailKey = "testEmailKey2344";
196198
test("sendEmail mutation is pushed to mutations (with reward)", () => {
197199
transaction.generateSimpleEmail({ emailKey, user: testUser, rewardId });
198-
expect(transaction.mutations).toStrictEqual([
200+
assert.deepStrictEqual(transaction.mutations, [
199201
{
200202
type: "SEND_EMAIL",
201203
data: {
@@ -219,7 +221,7 @@ describe("Transaction class", () => {
219221

220222
test("sendEmail mutation is pushed to mutations (without reward)", () => {
221223
transaction.generateSimpleEmail({ emailKey, user: testUser });
222-
expect(transaction.mutations).toStrictEqual([
224+
assert.deepStrictEqual(transaction.mutations, [
223225
{
224226
type: "SEND_EMAIL",
225227
data: {
@@ -252,7 +254,7 @@ describe("Transaction class", () => {
252254
referralId,
253255
rewardId,
254256
});
255-
expect(transaction.mutations).toStrictEqual([
257+
assert.deepStrictEqual(transaction.mutations, [
256258
{
257259
type: "SEND_EMAIL",
258260
data: {
@@ -284,7 +286,7 @@ describe("Transaction class", () => {
284286
user: testUser,
285287
referralId,
286288
});
287-
expect(transaction.mutations).toStrictEqual([
289+
assert.deepStrictEqual(transaction.mutations, [
288290
{
289291
type: "SEND_EMAIL",
290292
data: {
@@ -320,20 +322,20 @@ describe("Transaction class", () => {
320322
user: testUser,
321323
});
322324

323-
expect(transaction.mutations.length).toBe(2);
325+
assert.deepStrictEqual(transaction.mutations.length, 2);
324326

325327
const [rewardMutation, emailMutation] = transaction.mutations;
326-
expect(rewardMutation.type).toBe("CREATE_REWARD");
327-
expect(rewardMutation.data.user).toStrictEqual({
328+
assert.deepStrictEqual(rewardMutation.type, "CREATE_REWARD");
329+
assert.deepStrictEqual(rewardMutation.data.user, {
328330
id: "referrerID",
329331
accountId: "referrerACCOUNTID",
330332
});
331-
expect(rewardMutation.data.key).toBe(rewardKey);
332-
expect(rewardMutation.data.user).toStrictEqual({
333+
assert.deepStrictEqual(rewardMutation.data.key, rewardKey);
334+
assert.deepStrictEqual(rewardMutation.data.user, {
333335
id: "referrerID",
334336
accountId: "referrerACCOUNTID",
335337
});
336-
expect(emailMutation).toStrictEqual({
338+
assert.deepStrictEqual(emailMutation, {
337339
type: "SEND_EMAIL",
338340
data: {
339341
user: {
@@ -375,33 +377,33 @@ describe("Transaction class", () => {
375377
},
376378
});
377379

378-
expect(transaction.mutations.length).toBe(2);
380+
assert.deepStrictEqual(transaction.mutations.length, 2);
379381

380382
const [rewardMutation, emailMutation] = transaction.mutations;
381-
expect(rewardMutation.type).toBe("CREATE_REWARD");
382-
expect(rewardMutation.data.user).toStrictEqual({
383+
assert.deepStrictEqual(rewardMutation.type, "CREATE_REWARD");
384+
assert.deepStrictEqual(rewardMutation.data.user, {
383385
id: "referrerID",
384386
accountId: "referrerACCOUNTID",
385387
});
386-
expect(rewardMutation.data.key).toBe(rewardKey);
387-
expect(rewardMutation.data.referralId).toBe(referralId);
388-
expect(rewardMutation.data.status).toBe(undefined);
389-
expect(rewardMutation.data.rewardSource).toBe(undefined);
390-
expect(rewardMutation.data.userEvent).toBe(undefined);
391-
expect(rewardMutation.data.overrideProperties).toStrictEqual({
388+
assert.deepStrictEqual(rewardMutation.data.key, rewardKey);
389+
assert.deepStrictEqual(rewardMutation.data.referralId, referralId);
390+
assert.deepStrictEqual(rewardMutation.data.status, undefined);
391+
assert.deepStrictEqual(rewardMutation.data.rewardSource, undefined);
392+
assert.deepStrictEqual(rewardMutation.data.userEvent, undefined);
393+
assert.deepStrictEqual(rewardMutation.data.overrideProperties, {
392394
dateExpires: ts,
393395
});
394-
expect(rewardMutation.data.dynamicProperties).toStrictEqual({
396+
assert.deepStrictEqual(rewardMutation.data.dynamicProperties, {
395397
type: "testReward",
396398
assignedCredit: 2000,
397399
unit: "CAD",
398400
});
399-
expect(rewardMutation.data.user).toStrictEqual({
401+
assert.deepStrictEqual(rewardMutation.data.user, {
400402
id: "referrerID",
401403
accountId: "referrerACCOUNTID",
402404
});
403405

404-
expect(emailMutation).toStrictEqual({
406+
assert.deepStrictEqual(emailMutation, {
405407
type: "SEND_EMAIL",
406408
data: {
407409
user: {
@@ -456,7 +458,7 @@ describe("Transaction class", () => {
456458
];
457459

458460
transaction.generateRefunds();
459-
expect(transaction.mutations).toStrictEqual([
461+
assert.deepStrictEqual(transaction.mutations, [
460462
{
461463
type: "MODERATE_GRAPH_NODES",
462464
data: {
@@ -531,7 +533,7 @@ describe("Transaction class", () => {
531533
},
532534
];
533535

534-
expect(transaction.toJson()).toStrictEqual({
536+
assert.deepStrictEqual(transaction.toJson(), {
535537
mutations: [
536538
{
537539
type: "MODERATE_GRAPH_NODES",

0 commit comments

Comments
 (0)