nestjs-kafkajs-module
Version:
86 lines (72 loc) • 2.23 kB
text/typescript
import { Test } from "@nestjs/testing";
import { InjectConsumer, InjectProducer, KafkajsModule } from "../../lib/main";
import { Consumer, Producer } from "kafkajs";
import { KAFKAJS_MODULE_CONSUMER, KAFKAJS_MODULE_PRODUCER } from "../../lib/module/kafkajs-module";
import { Injectable } from "@nestjs/common";
jest.mock("kafkajs", () => ({
Kafka: jest.fn().mockImplementation(() => ({
producer: jest.fn().mockImplementation(() => ({
connect: jest.fn(),
})),
consumer: jest.fn().mockImplementation(() => ({
connect: jest.fn(),
})),
})),
}));
describe("KafkajsModule", () => {
describe("Importing the module", () => {
let producer: Producer;
let consumer: Consumer;
beforeAll(async () => {
jest.clearAllMocks();
const moduleRef = await Test.createTestingModule({
imports: [
KafkajsModule.register(
{
brokers: ["localhost:9092"],
},
"test-consumer",
),
],
}).compile();
consumer = moduleRef.get(KAFKAJS_MODULE_CONSUMER);
producer = moduleRef.get(KAFKAJS_MODULE_PRODUCER);
});
it("consumer should be exported", () => {
expect(consumer).toBeDefined();
});
it("producer should be exported", () => {
expect(producer).toBeDefined();
});
});
describe("Decorators", () => {
()
class ExampleService {
constructor(
() public readonly consumer: Consumer,
() public readonly producer: Producer,
) {}
}
let exampleService: ExampleService;
beforeAll(async () => {
const moduleRef = await Test.createTestingModule({
imports: [
KafkajsModule.register(
{
brokers: ["localhost:9092"],
},
"test-consumer",
),
],
providers: [ExampleService],
}).compile();
exampleService = moduleRef.get(ExampleService);
});
it("consumer should be injected", () => {
expect(exampleService.consumer).toBeDefined();
});
it("producer should be injected", () => {
expect(exampleService.producer).toBeDefined();
});
});
});