mirror of
https://github.com/immich-app/immich.git
synced 2025-01-07 00:50:23 -05:00
refactor: no experimental vm modules (#6719)
This commit is contained in:
parent
0af839889b
commit
6dca47c629
4 changed files with 43 additions and 26 deletions
|
@ -20,8 +20,3 @@ The API e2e tests spin up a test database and execute http requests against the
|
||||||
#### Jobs (e2e)
|
#### Jobs (e2e)
|
||||||
|
|
||||||
The Jobs e2e tests spin up a docker test environment where thumbnail generation, library scanning, and other _job_ workflows are validated.
|
The Jobs e2e tests spin up a docker test environment where thumbnail generation, library scanning, and other _job_ workflows are validated.
|
||||||
|
|
||||||
:::note
|
|
||||||
Note that there is a bug in nodejs \<20.8 that causes segmentation faults when running these tests. If you run into segfaults, ensure you are using at least version 20.8.
|
|
||||||
:::
|
|
||||||
/follow
|
|
||||||
|
|
|
@ -1,2 +1,2 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
NODE_OPTIONS='--experimental-vm-modules' node /usr/src/app/node_modules/.bin/jest --config e2e/$1/jest-e2e.json --runInBand
|
node /usr/src/app/node_modules/.bin/jest --config e2e/$1/jest-e2e.json --runInBand
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
import { IJobRepository, JobItem, JobItemHandler, QueueName } from '@app/domain';
|
import { IJobRepository, IMediaRepository, JobItem, JobItemHandler, QueueName } from '@app/domain';
|
||||||
import { AppModule } from '@app/immich';
|
import { AppModule } from '@app/immich';
|
||||||
import { InfraModule, InfraTestModule, dataSource } from '@app/infra';
|
import { InfraModule, InfraTestModule, dataSource } from '@app/infra';
|
||||||
|
import { MediaRepository } from '@app/infra/repositories';
|
||||||
import { INestApplication } from '@nestjs/common';
|
import { INestApplication } from '@nestjs/common';
|
||||||
import { Test } from '@nestjs/testing';
|
import { Test } from '@nestjs/testing';
|
||||||
import { DateTime } from 'luxon';
|
import { DateTime } from 'luxon';
|
||||||
|
@ -53,7 +54,42 @@ export const db = {
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
let _handler: JobItemHandler = () => Promise.resolve();
|
class JobMock implements IJobRepository {
|
||||||
|
private _handler: JobItemHandler = () => Promise.resolve();
|
||||||
|
addHandler(_queueName: QueueName, _concurrency: number, handler: JobItemHandler) {
|
||||||
|
this._handler = handler;
|
||||||
|
}
|
||||||
|
addCronJob() {}
|
||||||
|
updateCronJob() {}
|
||||||
|
deleteCronJob() {}
|
||||||
|
validateCronExpression() {}
|
||||||
|
queue(item: JobItem) {
|
||||||
|
return this._handler(item);
|
||||||
|
}
|
||||||
|
queueAll(items: JobItem[]) {
|
||||||
|
return Promise.all(items.map(this._handler)).then(() => Promise.resolve());
|
||||||
|
}
|
||||||
|
async resume() {}
|
||||||
|
async empty() {}
|
||||||
|
async setConcurrency() {}
|
||||||
|
async getQueueStatus() {
|
||||||
|
return null as any;
|
||||||
|
}
|
||||||
|
async getJobCounts() {
|
||||||
|
return null as any;
|
||||||
|
}
|
||||||
|
async pause() {}
|
||||||
|
async clear() {
|
||||||
|
return [];
|
||||||
|
}
|
||||||
|
async waitForQueueCompletion() {}
|
||||||
|
}
|
||||||
|
|
||||||
|
class MediaMockRepository extends MediaRepository {
|
||||||
|
async generateThumbhash() {
|
||||||
|
return Buffer.from('mock-thumbhash');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
let app: INestApplication;
|
let app: INestApplication;
|
||||||
|
|
||||||
|
@ -63,23 +99,9 @@ export const testApp = {
|
||||||
.overrideModule(InfraModule)
|
.overrideModule(InfraModule)
|
||||||
.useModule(InfraTestModule)
|
.useModule(InfraTestModule)
|
||||||
.overrideProvider(IJobRepository)
|
.overrideProvider(IJobRepository)
|
||||||
.useValue({
|
.useClass(JobMock)
|
||||||
addHandler: (_queueName: QueueName, _concurrency: number, handler: JobItemHandler) => (_handler = handler),
|
.overrideProvider(IMediaRepository)
|
||||||
addCronJob: jest.fn(),
|
.useClass(MediaMockRepository)
|
||||||
updateCronJob: jest.fn(),
|
|
||||||
deleteCronJob: jest.fn(),
|
|
||||||
validateCronExpression: jest.fn(),
|
|
||||||
queue: (item: JobItem) => _handler(item),
|
|
||||||
queueAll: (items: JobItem[]) => Promise.all(items.map(_handler)).then(() => Promise.resolve()),
|
|
||||||
resume: jest.fn(),
|
|
||||||
empty: jest.fn(),
|
|
||||||
setConcurrency: jest.fn(),
|
|
||||||
getQueueStatus: jest.fn(),
|
|
||||||
getJobCounts: jest.fn(),
|
|
||||||
pause: jest.fn(),
|
|
||||||
clear: jest.fn(),
|
|
||||||
waitForQueueCompletion: jest.fn(),
|
|
||||||
} as IJobRepository)
|
|
||||||
.compile();
|
.compile();
|
||||||
|
|
||||||
app = await moduleFixture.createNestApplication().init();
|
app = await moduleFixture.createNestApplication().init();
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
"test:watch": "jest --watch",
|
"test:watch": "jest --watch",
|
||||||
"test:cov": "jest --coverage",
|
"test:cov": "jest --coverage",
|
||||||
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
|
"test:debug": "node --inspect-brk -r tsconfig-paths/register -r ts-node/register node_modules/.bin/jest --runInBand",
|
||||||
"e2e:jobs": "NODE_OPTIONS='--experimental-vm-modules' jest --config e2e/jobs/jest-e2e.json --runInBand",
|
"e2e:jobs": "jest --config e2e/jobs/jest-e2e.json --runInBand",
|
||||||
"e2e:api": "jest --config e2e/api/jest-e2e.json --runInBand",
|
"e2e:api": "jest --config e2e/api/jest-e2e.json --runInBand",
|
||||||
"typeorm": "typeorm",
|
"typeorm": "typeorm",
|
||||||
"typeorm:migrations:create": "typeorm migration:create",
|
"typeorm:migrations:create": "typeorm migration:create",
|
||||||
|
|
Loading…
Reference in a new issue