@temporalio/testing 1.8.6 → 1.9.0-rc.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.
package/lib/index.d.ts CHANGED
@@ -13,7 +13,7 @@ import events from 'node:events';
13
13
  import * as activity from '@temporalio/activity';
14
14
  import { AsyncCompletionClient, Client, ClientOptions, WorkflowClient, WorkflowClientOptions, WorkflowResultOptions } from '@temporalio/client';
15
15
  import { ActivityFunction, Duration } from '@temporalio/common';
16
- import { NativeConnection } from '@temporalio/worker';
16
+ import { ActivityInterceptorsFactory, NativeConnection } from '@temporalio/worker';
17
17
  import { EphemeralServer, EphemeralServerConfig, DevServerConfig, TimeSkippingServerConfig } from '@temporalio/core-bridge';
18
18
  import { Connection, TestService } from './connection';
19
19
  export { TimeSkippingServerConfig, DevServerConfig, EphemeralServerExecutable } from '@temporalio/core-bridge';
@@ -214,6 +214,9 @@ export declare class TestWorkflowEnvironment {
214
214
  */
215
215
  currentTimeMs(): Promise<number>;
216
216
  }
217
+ export interface MockActivityEnvironmentOptions {
218
+ interceptors?: ActivityInterceptorsFactory[];
219
+ }
217
220
  /**
218
221
  * Used as the default activity info for Activities executed in the {@link MockActivityEnvironment}
219
222
  */
@@ -221,13 +224,17 @@ export declare const defaultActivityInfo: activity.Info;
221
224
  /**
222
225
  * An execution environment for testing Activities.
223
226
  *
224
- * Mocks Activity {@link Context | activity.Context} and exposes hooks for
225
- * cancellation and heartbeats.
227
+ * Mocks Activity {@link Context | activity.Context} and exposes hooks for cancellation and heartbeats.
228
+ *
229
+ * Note that the `Context` object used by this environment will be reused for all activities that are run in this
230
+ * environment. Consequently, once `cancel()` is called, any further activity that gets executed in this environment
231
+ * will immediately be in a cancelled state.
226
232
  */
227
233
  export declare class MockActivityEnvironment extends events.EventEmitter {
228
234
  cancel: (reason?: any) => void;
229
235
  readonly context: activity.Context;
230
- constructor(info?: Partial<activity.Info>);
236
+ private readonly activity;
237
+ constructor(info?: Partial<activity.Info>, opts?: MockActivityEnvironmentOptions);
231
238
  /**
232
239
  * Run a function in Activity Context
233
240
  */
package/lib/index.js CHANGED
@@ -8,29 +8,6 @@
8
8
  *
9
9
  * @module
10
10
  */
11
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
- if (k2 === undefined) k2 = k;
13
- var desc = Object.getOwnPropertyDescriptor(m, k);
14
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
- desc = { enumerable: true, get: function() { return m[k]; } };
16
- }
17
- Object.defineProperty(o, k2, desc);
18
- }) : (function(o, m, k, k2) {
19
- if (k2 === undefined) k2 = k;
20
- o[k2] = m[k];
21
- }));
22
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
- Object.defineProperty(o, "default", { enumerable: true, value: v });
24
- }) : function(o, v) {
25
- o["default"] = v;
26
- });
27
- var __importStar = (this && this.__importStar) || function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
11
  var __importDefault = (this && this.__importDefault) || function (mod) {
35
12
  return (mod && mod.__esModule) ? mod : { "default": mod };
36
13
  };
@@ -39,11 +16,11 @@ exports.MockActivityEnvironment = exports.defaultActivityInfo = exports.TestWork
39
16
  require("abort-controller/polyfill"); // eslint-disable-line import/no-unassigned-import
40
17
  const node_path_1 = __importDefault(require("node:path"));
41
18
  const node_events_1 = __importDefault(require("node:events"));
42
- const activity = __importStar(require("@temporalio/activity"));
43
19
  const client_1 = require("@temporalio/client");
44
20
  const common_1 = require("@temporalio/common");
45
21
  const time_1 = require("@temporalio/common/lib/time");
46
22
  const worker_1 = require("@temporalio/worker");
23
+ const activity_1 = require("@temporalio/worker/lib/activity");
47
24
  const core_bridge_1 = require("@temporalio/core-bridge");
48
25
  const internal_non_workflow_1 = require("@temporalio/common/lib/internal-non-workflow");
49
26
  const connection_1 = require("./connection");
@@ -299,31 +276,31 @@ exports.defaultActivityInfo = {
299
276
  /**
300
277
  * An execution environment for testing Activities.
301
278
  *
302
- * Mocks Activity {@link Context | activity.Context} and exposes hooks for
303
- * cancellation and heartbeats.
279
+ * Mocks Activity {@link Context | activity.Context} and exposes hooks for cancellation and heartbeats.
280
+ *
281
+ * Note that the `Context` object used by this environment will be reused for all activities that are run in this
282
+ * environment. Consequently, once `cancel()` is called, any further activity that gets executed in this environment
283
+ * will immediately be in a cancelled state.
304
284
  */
305
285
  class MockActivityEnvironment extends node_events_1.default.EventEmitter {
306
- constructor(info) {
286
+ constructor(info, opts) {
307
287
  super();
308
288
  this.cancel = () => undefined;
309
- const abortController = new AbortController();
310
- const promise = new Promise((_, reject) => {
311
- this.cancel = (reason) => {
312
- abortController.abort();
313
- reject(new common_1.CancelledFailure(reason));
314
- };
315
- });
316
289
  const heartbeatCallback = (details) => this.emit('heartbeat', details);
317
- this.context = new activity.Context({ ...exports.defaultActivityInfo, ...info }, promise, abortController.signal, heartbeatCallback, worker_1.Runtime.instance().logger);
318
- promise.catch(() => {
319
- /* avoid unhandled rejection */
320
- });
290
+ const loadedDataConverter = {
291
+ payloadConverter: common_1.defaultPayloadConverter,
292
+ payloadCodecs: [],
293
+ failureConverter: common_1.defaultFailureConverter,
294
+ };
295
+ this.activity = new activity_1.Activity({ ...exports.defaultActivityInfo, ...info }, undefined, loadedDataConverter, heartbeatCallback, opts?.interceptors ?? []);
296
+ this.context = this.activity.context;
297
+ this.cancel = this.activity.cancel;
321
298
  }
322
299
  /**
323
300
  * Run a function in Activity Context
324
301
  */
325
- run(fn, ...args) {
326
- return activity.asyncLocalStorage.run(this.context, fn, ...args);
302
+ async run(fn, ...args) {
303
+ return this.activity.runNoEncoding(fn, { args, headers: {} });
327
304
  }
328
305
  }
329
306
  exports.MockActivityEnvironment = MockActivityEnvironment;
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@temporalio/testing",
3
- "version": "1.8.6",
3
+ "version": "1.9.0-rc.0",
4
4
  "description": "Temporal.io SDK Testing sub-package",
5
5
  "main": "lib/index.js",
6
6
  "types": "./lib/index.d.ts",
@@ -13,13 +13,13 @@
13
13
  "license": "MIT",
14
14
  "dependencies": {
15
15
  "@grpc/grpc-js": "~1.7.3",
16
- "@temporalio/activity": "1.8.6",
17
- "@temporalio/client": "1.8.6",
18
- "@temporalio/common": "1.8.6",
19
- "@temporalio/core-bridge": "1.8.6",
20
- "@temporalio/proto": "1.8.6",
21
- "@temporalio/worker": "1.8.6",
22
- "@temporalio/workflow": "1.8.6",
16
+ "@temporalio/activity": "1.9.0-rc.0",
17
+ "@temporalio/client": "1.9.0-rc.0",
18
+ "@temporalio/common": "1.9.0-rc.0",
19
+ "@temporalio/core-bridge": "1.9.0-rc.0",
20
+ "@temporalio/proto": "1.9.0-rc.0",
21
+ "@temporalio/worker": "1.9.0-rc.0",
22
+ "@temporalio/workflow": "1.9.0-rc.0",
23
23
  "abort-controller": "^3.0.0"
24
24
  },
25
25
  "bugs": {
@@ -38,5 +38,5 @@
38
38
  "publishConfig": {
39
39
  "access": "public"
40
40
  },
41
- "gitHead": "1e95cf92ec5e6efffb7aedb064ea46be05df0c14"
41
+ "gitHead": "ca3e508e62de02b2c9bb40d0d889003cebba282d"
42
42
  }
package/src/index.ts CHANGED
@@ -20,9 +20,10 @@ import {
20
20
  WorkflowClientOptions,
21
21
  WorkflowResultOptions,
22
22
  } from '@temporalio/client';
23
- import { ActivityFunction, CancelledFailure, Duration } from '@temporalio/common';
23
+ import { ActivityFunction, Duration, defaultFailureConverter, defaultPayloadConverter } from '@temporalio/common';
24
24
  import { msToNumber, msToTs, tsToMs } from '@temporalio/common/lib/time';
25
- import { NativeConnection, Runtime } from '@temporalio/worker';
25
+ import { ActivityInterceptorsFactory, NativeConnection, Runtime } from '@temporalio/worker';
26
+ import { Activity } from '@temporalio/worker/lib/activity';
26
27
  import {
27
28
  EphemeralServer,
28
29
  EphemeralServerConfig,
@@ -364,6 +365,10 @@ export class TestWorkflowEnvironment {
364
365
  }
365
366
  }
366
367
 
368
+ export interface MockActivityEnvironmentOptions {
369
+ interceptors?: ActivityInterceptorsFactory[];
370
+ }
371
+
367
372
  /**
368
373
  * Used as the default activity info for Activities executed in the {@link MockActivityEnvironment}
369
374
  */
@@ -390,39 +395,40 @@ export const defaultActivityInfo: activity.Info = {
390
395
  /**
391
396
  * An execution environment for testing Activities.
392
397
  *
393
- * Mocks Activity {@link Context | activity.Context} and exposes hooks for
394
- * cancellation and heartbeats.
398
+ * Mocks Activity {@link Context | activity.Context} and exposes hooks for cancellation and heartbeats.
399
+ *
400
+ * Note that the `Context` object used by this environment will be reused for all activities that are run in this
401
+ * environment. Consequently, once `cancel()` is called, any further activity that gets executed in this environment
402
+ * will immediately be in a cancelled state.
395
403
  */
396
404
  export class MockActivityEnvironment extends events.EventEmitter {
397
405
  public cancel: (reason?: any) => void = () => undefined;
398
406
  public readonly context: activity.Context;
407
+ private readonly activity: Activity;
399
408
 
400
- constructor(info?: Partial<activity.Info>) {
409
+ constructor(info?: Partial<activity.Info>, opts?: MockActivityEnvironmentOptions) {
401
410
  super();
402
- const abortController = new AbortController();
403
- const promise = new Promise<never>((_, reject) => {
404
- this.cancel = (reason?: any) => {
405
- abortController.abort();
406
- reject(new CancelledFailure(reason));
407
- };
408
- });
409
411
  const heartbeatCallback = (details?: unknown) => this.emit('heartbeat', details);
410
- this.context = new activity.Context(
412
+ const loadedDataConverter = {
413
+ payloadConverter: defaultPayloadConverter,
414
+ payloadCodecs: [],
415
+ failureConverter: defaultFailureConverter,
416
+ };
417
+ this.activity = new Activity(
411
418
  { ...defaultActivityInfo, ...info },
412
- promise,
413
- abortController.signal,
419
+ undefined,
420
+ loadedDataConverter,
414
421
  heartbeatCallback,
415
- Runtime.instance().logger
422
+ opts?.interceptors ?? []
416
423
  );
417
- promise.catch(() => {
418
- /* avoid unhandled rejection */
419
- });
424
+ this.context = this.activity.context;
425
+ this.cancel = this.activity.cancel;
420
426
  }
421
427
 
422
428
  /**
423
429
  * Run a function in Activity Context
424
430
  */
425
- public run<P extends any[], R, F extends ActivityFunction<P, R>>(fn: F, ...args: P): Promise<R> {
426
- return activity.asyncLocalStorage.run(this.context, fn, ...args);
431
+ public async run<P extends any[], R, F extends ActivityFunction<P, R>>(fn: F, ...args: P): Promise<R> {
432
+ return this.activity.runNoEncoding(fn as ActivityFunction<any, any>, { args, headers: {} }) as Promise<R>;
427
433
  }
428
434
  }