Skip to content

Commit f037eda

Browse files
integration(@nestjs) add circular dependency integration test
1 parent 9c404cd commit f037eda

10 files changed

Lines changed: 111 additions & 2 deletions

File tree

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
import { expect } from 'chai';
2+
import { Test, TestingModuleBuilder } from '@nestjs/testing';
3+
import { INestApplication } from '@nestjs/common';
4+
import { CircularModule } from '../src/circular-modules/circular.module';
5+
import { InputService } from '../src/circular-modules/input.service';
6+
import { CircularService } from '../src/circular-modules/circular.service';
7+
import { InputModule } from '../src/circular-modules/input.module';
8+
9+
describe('Circular dependency (modules)', () => {
10+
it('should resolve circular dependency between providers', async () => {
11+
const builder = Test.createTestingModule({
12+
imports: [CircularModule, InputModule],
13+
});
14+
const testingModule = await builder.compile();
15+
const inputService = testingModule.get<InputService>(InputService);
16+
const circularService = testingModule.get<CircularService>(CircularService);
17+
18+
expect(inputService.service).to.be.eql(circularService);
19+
expect(circularService.service).to.be.eql(inputService);
20+
});
21+
});
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import { expect } from 'chai';
2+
import { Test, TestingModuleBuilder } from '@nestjs/testing';
3+
import { INestApplication } from '@nestjs/common';
4+
import { CircularModule } from '../src/circular/circular.module';
5+
import { InputService } from '../src/circular/input.service';
6+
import { CircularService } from '../src/circular/circular.service';
7+
8+
describe('Circular dependency', () => {
9+
it('should resolve circular dependency between providers', async () => {
10+
const builder = Test.createTestingModule({
11+
imports: [CircularModule],
12+
});
13+
const testingModule = await builder.compile();
14+
const inputService = testingModule.get<InputService>(InputService);
15+
const circularService = testingModule.get<CircularService>(CircularService);
16+
17+
expect(inputService.service).to.be.eql(circularService);
18+
expect(circularService.service).to.be.eql(inputService);
19+
});
20+
});
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { Module, forwardRef } from '@nestjs/common';
2+
import { CircularService } from './circular.service';
3+
import { InputModule } from './input.module';
4+
5+
@Module({
6+
imports: [forwardRef(() => InputModule)],
7+
providers: [CircularService],
8+
exports: [CircularService],
9+
})
10+
export class CircularModule {}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { Injectable, forwardRef, Inject } from '@nestjs/common';
2+
import { InputService } from './input.service';
3+
4+
@Injectable()
5+
export class CircularService {
6+
constructor(
7+
@Inject(forwardRef(() => InputService))
8+
public readonly service: InputService,
9+
) {}
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { Module, forwardRef } from '@nestjs/common';
2+
import { CircularModule } from './circular.module';
3+
import { InputService } from './input.service';
4+
5+
@Module({
6+
imports: [forwardRef(() => CircularModule)],
7+
providers: [InputService],
8+
exports: [InputService],
9+
})
10+
export class InputModule {}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { Injectable, Inject, forwardRef } from '@nestjs/common';
2+
import { CircularService } from './circular.service';
3+
4+
@Injectable()
5+
export class InputService {
6+
constructor(
7+
@Inject(forwardRef(() => CircularService))
8+
public readonly service: CircularService,
9+
) {}
10+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
import { Module } from '@nestjs/common';
2+
import { CircularService } from './circular.service';
3+
import { InputService } from './input.service';
4+
5+
@Module({
6+
providers: [CircularService, InputService],
7+
})
8+
export class CircularModule {}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { Injectable, forwardRef, Inject } from '@nestjs/common';
2+
import { InputService } from './input.service';
3+
4+
@Injectable()
5+
export class CircularService {
6+
constructor(
7+
@Inject(forwardRef(() => InputService))
8+
public readonly service: InputService,
9+
) {}
10+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
import { Injectable, Inject, forwardRef } from '@nestjs/common';
2+
import { CircularService } from './circular.service';
3+
4+
@Injectable()
5+
export class InputService {
6+
constructor(
7+
@Inject(forwardRef(() => CircularService))
8+
public readonly service: CircularService,
9+
) {}
10+
}

integration/injector/src/dynamic/dynamic.module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ export class NestDynamicModule {
1515
module: NestDynamicModule,
1616
providers: [dynamicProvider],
1717
exports: [dynamicProvider],
18-
}
18+
};
1919
}
2020

2121
static byName(): DynamicModule {
2222
return {
2323
module: NestDynamicModule,
2424
providers: [dynamicProvider],
2525
exports: [DYNAMIC_TOKEN],
26-
}
26+
};
2727
}
2828
}

0 commit comments

Comments
 (0)