Skip to content

Commit

Permalink
test: tests for default ttl
Browse files Browse the repository at this point in the history
  • Loading branch information
hliang committed Nov 1, 2023
1 parent 06a0c0b commit 876a269
Show file tree
Hide file tree
Showing 4 changed files with 109 additions and 0 deletions.
42 changes: 42 additions & 0 deletions tests/e2e/default-ttl.spec.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import { INestApplication } from '@nestjs/common';
import { Test } from '@nestjs/testing';
import request from 'supertest';
import { DefaultTtlModule } from '../src/default-ttl/default-ttl.module';

describe('Caching Default TTL', () => {
let server: any;
let app: INestApplication;

describe('should use the same default ttl in every cach manager', () => {
beforeEach(async () => {
const module = await Test.createTestingModule({
imports: [DefaultTtlModule],
}).compile();

app = module.createNestApplication();
server = app.getHttpServer();
await app.init();
});

it(`should use default ttl in first test`, async () => {
await request(server).get('/').expect(200, 'Not found');
await new Promise(resolve => setTimeout(resolve, 400));
await request(server).get('/').expect(200, 'value');
await new Promise(resolve => setTimeout(resolve, 5000));
await request(server).get('/').expect(200, 'Not found');
}, 8000);

it(`should use default ttl in second test`, async () => {
await request(server).get('/').expect(200, 'Not found');
await new Promise(resolve => setTimeout(resolve, 400));
await request(server).get('/').expect(200, 'value');
await new Promise(resolve => setTimeout(resolve, 5000));
await request(server).get('/').expect(200, 'Not found');
}, 8000);

afterEach(async () => {
await app.close();
});
});

});
17 changes: 17 additions & 0 deletions tests/src/default-ttl/default-ttl.controller.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import { Controller, Get, Inject } from '@nestjs/common';
import { Cache } from 'cache-manager';
import { CACHE_MANAGER } from '../../../lib';

@Controller()
export class DefaultTtlController {
constructor(@Inject(CACHE_MANAGER) private cacheManager: Cache) {}

@Get()
async getFromStore(): Promise<unknown> {
const value = await this.cacheManager.get('key');
if (!value) {
await this.cacheManager.set('key', 'value');
}
return value ?? 'Not found';
}
}
10 changes: 10 additions & 0 deletions tests/src/default-ttl/default-ttl.module.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
import { Module } from '@nestjs/common';
import { CacheModule } from '../../../lib';
import { DefaultTtlController } from './default-ttl.controller';
// import { DefaultTtlBarController } from './default-ttl-bar.controller';

@Module({
imports: [CacheModule.register()],
controllers: [DefaultTtlController],
})
export class DefaultTtlModule {}
40 changes: 40 additions & 0 deletions tests/src/default-ttl/tsconfig.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
{
"compilerOptions": {
"module": "commonjs",
"declaration": false,
"noImplicitAny": false,
"removeComments": true,
"noLib": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es6",
"sourceMap": true,
"allowJs": true,
"outDir": "./dist",
"paths": {
"@nestjs/common": ["../../packages/common"],
"@nestjs/common/*": ["../../packages/common/*"],
"@nestjs/core": ["../../packages/core"],
"@nestjs/core/*": ["../../packages/core/*"],
"@nestjs/microservices": ["../../packages/microservices"],
"@nestjs/microservices/*": ["../../packages/microservices/*"],
"@nestjs/websockets": ["../../packages/websockets"],
"@nestjs/websockets/*": ["../../packages/websockets/*"],
"@nestjs/testing": ["../../packages/testing"],
"@nestjs/testing/*": ["../../packages/testing/*"],
"@nestjs/platform-express": ["../../packages/platform-express"],
"@nestjs/platform-express/*": ["../../packages/platform-express/*"],
"@nestjs/platform-socket.io": ["../../packages/platform-socket.io"],
"@nestjs/platform-socket.io/*": ["../../packages/platform-socket.io/*"],
"@nestjs/platform-ws": ["../../packages/platform-ws"],
"@nestjs/platform-ws/*": ["../../packages/platform-ws/*"]
}
},
"include": [
"src/**/*",
"e2e/**/*"
],
"exclude": [
"node_modules",
]
}

0 comments on commit 876a269

Please sign in to comment.