|
|
|
import { setTimeout as wait } from 'timers/promises';
|
|
|
|
import { Test, TestingModule } from '@nestjs/testing';
|
|
|
|
import { INestApplication } from '@nestjs/common';
|
|
|
|
import * as request from 'supertest';
|
|
|
|
import { AppModule } from './../src/app.module';
|
|
|
|
|
|
|
|
describe('AppController (e2e)', () => {
|
|
|
|
let app: INestApplication;
|
|
|
|
|
|
|
|
beforeEach(async () => {
|
|
|
|
const moduleFixture: TestingModule = await Test.createTestingModule({
|
|
|
|
imports: [AppModule],
|
|
|
|
}).compile();
|
|
|
|
|
|
|
|
app = moduleFixture.createNestApplication();
|
|
|
|
await app.init();
|
|
|
|
});
|
|
|
|
|
|
|
|
afterEach(async () => {
|
|
|
|
await app.close();
|
|
|
|
});
|
|
|
|
|
|
|
|
it('stores a job for suricrasia.online and completes it', async () => {
|
|
|
|
const supertest = request(app.getHttpServer());
|
|
|
|
|
|
|
|
const jobCreateResponse = await supertest
|
|
|
|
.post('/screenshots')
|
|
|
|
.send({ pageUrl: 'https://suricrasia.online', imageType: 'png' });
|
|
|
|
|
|
|
|
expect(jobCreateResponse.status).toEqual(201);
|
|
|
|
expect(jobCreateResponse.body.jobId).toBeDefined();
|
|
|
|
const jobId = jobCreateResponse.body.jobId;
|
|
|
|
await wait(5000);
|
|
|
|
|
|
|
|
const jobStatusResponse = await supertest.get(`/screenshots/${jobId}`);
|
|
|
|
expect(jobStatusResponse.status).toEqual(200);
|
|
|
|
expect(jobStatusResponse.body.status).toBeDefined();
|
|
|
|
expect(jobStatusResponse.body.status).toEqual('completed');
|
|
|
|
|
|
|
|
const jobResultResponse = await supertest.get(
|
|
|
|
`/screenshots/${jobId}/result`,
|
|
|
|
);
|
|
|
|
expect(jobResultResponse.status).toEqual(200);
|
|
|
|
expect(jobResultResponse.body).toMatchImageSnapshot();
|
|
|
|
}, 10000);
|
|
|
|
});
|