|
|
|
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);
|
|
|
|
});
|