@anchan828/nest-redlock 0.0.5 → 0.0.6

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/README.md CHANGED
@@ -108,6 +108,16 @@ export class ExampleService {
108
108
  }
109
109
  ```
110
110
 
111
+ ## Using the RedisRedlockService mock
112
+
113
+ If you do not want to use Redis in your Unit tests, define the mock class as RedisRedlockService.
114
+
115
+ ```ts
116
+ const app = await Test.createTestingModule({
117
+ providers: [TestService, { provide: RedisRedlockService, useClass: MockRedisRedlockService }],
118
+ }).compile();
119
+ ```
120
+
111
121
  ## Troubleshooting
112
122
 
113
123
  ### Nest can't resolve dependencies of the XXX. Please make sure that the "@redisRedlockService" property is available in the current context.
@@ -128,6 +138,16 @@ import Redis from "ioredis";
128
138
  export class AppModule {}
129
139
  ```
130
140
 
141
+ #### What should I do with Unit tests, I don't want to use Redis.
142
+
143
+ Use `MockRedisRedlockService` class. Register MockRedisRedlockService with the provider as RedisRedlockService.
144
+
145
+ ```ts
146
+ const app = await Test.createTestingModule({
147
+ providers: [TestService, { provide: RedisRedlockService, useClass: MockRedisRedlockService }],
148
+ }).compile();
149
+ ```
150
+
131
151
  ## License
132
152
 
133
153
  [MIT](LICENSE)
package/dist/index.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  export { RedisRedlock } from "./redis-redlock.decorator";
2
2
  export { GenerateResourceFunc, RedisRedlockModuleOptions } from "./redis-redlock.interface";
3
+ export { MockRedisRedlockService } from "./redis-redlock.mock-service";
3
4
  export { RedisRedlockModule } from "./redis-redlock.module";
4
5
  export { RedisRedlockService } from "./redis-redlock.service";
package/dist/index.js CHANGED
@@ -1,8 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RedisRedlockService = exports.RedisRedlockModule = exports.RedisRedlock = void 0;
3
+ exports.RedisRedlockService = exports.RedisRedlockModule = exports.MockRedisRedlockService = exports.RedisRedlock = void 0;
4
4
  var redis_redlock_decorator_1 = require("./redis-redlock.decorator");
5
5
  Object.defineProperty(exports, "RedisRedlock", { enumerable: true, get: function () { return redis_redlock_decorator_1.RedisRedlock; } });
6
+ var redis_redlock_mock_service_1 = require("./redis-redlock.mock-service");
7
+ Object.defineProperty(exports, "MockRedisRedlockService", { enumerable: true, get: function () { return redis_redlock_mock_service_1.MockRedisRedlockService; } });
6
8
  var redis_redlock_module_1 = require("./redis-redlock.module");
7
9
  Object.defineProperty(exports, "RedisRedlockModule", { enumerable: true, get: function () { return redis_redlock_module_1.RedisRedlockModule; } });
8
10
  var redis_redlock_service_1 = require("./redis-redlock.service");
@@ -0,0 +1,11 @@
1
+ /// <reference types="node" />
2
+ import { ExecutionResult, Lock, RedlockAbortSignal, Settings } from "redlock";
3
+ import { EventEmitter } from "stream";
4
+ export declare class MockRedisRedlockService extends EventEmitter {
5
+ quit(): Promise<void>;
6
+ acquire(resources: string[], duration: number, settings?: Partial<Settings> | undefined): Promise<Lock>;
7
+ release(lock: Lock, settings?: Partial<Settings> | undefined): Promise<ExecutionResult>;
8
+ extend(existing: Lock, duration: number, settings?: Partial<Settings> | undefined): Promise<Lock>;
9
+ using<T>(resources: string[], duration: number, settings: Partial<Settings>, routine?: ((signal: RedlockAbortSignal) => Promise<T>) | undefined): Promise<T>;
10
+ using<T>(resources: string[], duration: number, routine: (signal: RedlockAbortSignal) => Promise<T>): Promise<T>;
11
+ }
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MockRedisRedlockService = void 0;
4
+ const stream_1 = require("stream");
5
+ class MockRedisRedlockService extends stream_1.EventEmitter {
6
+ // eslint-disable-next-line @typescript-eslint/no-empty-function
7
+ async quit() { }
8
+ async acquire(resources, duration, settings) {
9
+ return createLockMock();
10
+ }
11
+ async release(lock, settings) {
12
+ return { attempts: [] };
13
+ }
14
+ async extend(existing, duration, settings) {
15
+ return createLockMock();
16
+ }
17
+ async using(resources, duration, settingsOrRoutine, routine) {
18
+ const routineFunc = typeof settingsOrRoutine === "function" ? settingsOrRoutine : routine;
19
+ return await routineFunc?.({ aborted: false });
20
+ }
21
+ }
22
+ exports.MockRedisRedlockService = MockRedisRedlockService;
23
+ function createLockMock() {
24
+ let lock;
25
+ // eslint-disable-next-line prefer-const
26
+ lock = {
27
+ release: async () => ({ attempts: [] }),
28
+ extend: async (duration) => lock,
29
+ };
30
+ return lock;
31
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anchan828/nest-redlock",
3
- "version": "0.0.5",
3
+ "version": "0.0.6",
4
4
  "description": "This is a [Nest](https://github.com/nestjs/nest) implementation of the redlock algorithm for distributed redis locks.",
5
5
  "homepage": "https://github.com/anchan828/nest-redlock#readme",
6
6
  "bugs": {