Skip to content

Commit

Permalink
test: for get providers/controllers when the decorator is not used
Browse files Browse the repository at this point in the history
  • Loading branch information
micalevisk committed Oct 6, 2023
1 parent ed92fd3 commit 3f385b8
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 6 deletions.
36 changes: 30 additions & 6 deletions integration/discovery/e2e/discover-by-meta.spec.ts
Original file line number Diff line number Diff line change
@@ -1,15 +1,21 @@
import { Test } from '@nestjs/testing';
import { Test, TestingModule } from '@nestjs/testing';
import { DiscoveryService } from '@nestjs/core';
import { expect } from 'chai';
import { AppModule } from '../src/app.module';
import { WebhooksExplorer } from '../src/webhooks.explorer';
import { NonAppliedDecorator } from '../src/decorators/non-applied.decorator';

describe('DiscoveryModule', () => {
it('should discover all providers & handlers with corresponding annotations', async () => {
const builder = Test.createTestingModule({
let moduleRef: TestingModule;

beforeEach(async () => {
moduleRef = await Test.createTestingModule({
imports: [AppModule],
});
const testingModule = await builder.compile();
const webhooksExplorer = testingModule.get(WebhooksExplorer);
}).compile();
});

it('should discover all providers & handlers with corresponding annotations', async () => {
const webhooksExplorer = moduleRef.get(WebhooksExplorer);

expect(webhooksExplorer.getWebhooks()).to.be.eql([
{
Expand All @@ -32,4 +38,22 @@ describe('DiscoveryModule', () => {
},
]);
});

it('should return an empty array if no providers were found for a given discoverable decorator', () => {
const discoveryService = moduleRef.get(DiscoveryService);

const providers = discoveryService.getProviders({
metadataKey: NonAppliedDecorator.KEY,
});
expect(providers).to.be.eql([]);
});

it('should return an empty array if no controllers were found for a given discoverable decorator', () => {
const discoveryService = moduleRef.get(DiscoveryService);

const controllers = discoveryService.getControllers({
metadataKey: NonAppliedDecorator.KEY,
});
expect(controllers).to.be.eql([]);
});
});
8 changes: 8 additions & 0 deletions integration/discovery/src/decorators/non-applied.decorator.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
import { DiscoveryService } from '@nestjs/core';

/**
* This decorator must not be used anywhere!
* This will be used to test the scenario where we are trying to fetching metadata
* for a discoverable decorator that was not applied to any class.
*/
export const NonAppliedDecorator = DiscoveryService.createDecorator();

0 comments on commit 3f385b8

Please sign in to comment.