mirror of https://github.com/immich-app/immich.git
refactor(server): no color env (#13166)
parent
0eb77147ef
commit
e2bf6808ca
@ -1,51 +1,76 @@
|
||||
import { ConfigRepository } from 'src/repositories/config.repository';
|
||||
|
||||
const getWorkers = () => new ConfigRepository().getEnv().workers;
|
||||
const getEnv = () => new ConfigRepository().getEnv();
|
||||
|
||||
describe('getWorkers', () => {
|
||||
describe('getEnv', () => {
|
||||
beforeEach(() => {
|
||||
process.env.IMMICH_WORKERS_INCLUDE = '';
|
||||
process.env.IMMICH_WORKERS_EXCLUDE = '';
|
||||
delete process.env.IMMICH_WORKERS_INCLUDE;
|
||||
delete process.env.IMMICH_WORKERS_EXCLUDE;
|
||||
delete process.env.NO_COLOR;
|
||||
});
|
||||
|
||||
it('should return default workers', () => {
|
||||
expect(getWorkers()).toEqual(['api', 'microservices']);
|
||||
const { workers } = getEnv();
|
||||
expect(workers).toEqual(['api', 'microservices']);
|
||||
});
|
||||
|
||||
it('should return included workers', () => {
|
||||
process.env.IMMICH_WORKERS_INCLUDE = 'api';
|
||||
expect(getWorkers()).toEqual(['api']);
|
||||
const { workers } = getEnv();
|
||||
expect(workers).toEqual(['api']);
|
||||
});
|
||||
|
||||
it('should excluded workers from defaults', () => {
|
||||
process.env.IMMICH_WORKERS_EXCLUDE = 'api';
|
||||
expect(getWorkers()).toEqual(['microservices']);
|
||||
const { workers } = getEnv();
|
||||
expect(workers).toEqual(['microservices']);
|
||||
});
|
||||
|
||||
it('should exclude workers from include list', () => {
|
||||
process.env.IMMICH_WORKERS_INCLUDE = 'api,microservices,randomservice';
|
||||
process.env.IMMICH_WORKERS_EXCLUDE = 'randomservice,microservices';
|
||||
expect(getWorkers()).toEqual(['api']);
|
||||
const { workers } = getEnv();
|
||||
expect(workers).toEqual(['api']);
|
||||
});
|
||||
|
||||
it('should remove whitespace from included workers before parsing', () => {
|
||||
process.env.IMMICH_WORKERS_INCLUDE = 'api, microservices';
|
||||
expect(getWorkers()).toEqual(['api', 'microservices']);
|
||||
const { workers } = getEnv();
|
||||
expect(workers).toEqual(['api', 'microservices']);
|
||||
});
|
||||
|
||||
it('should remove whitespace from excluded workers before parsing', () => {
|
||||
process.env.IMMICH_WORKERS_EXCLUDE = 'api, microservices';
|
||||
expect(getWorkers()).toEqual([]);
|
||||
const { workers } = getEnv();
|
||||
expect(workers).toEqual([]);
|
||||
});
|
||||
|
||||
it('should remove whitespace from included and excluded workers before parsing', () => {
|
||||
process.env.IMMICH_WORKERS_INCLUDE = 'api, microservices, randomservice,randomservice2';
|
||||
process.env.IMMICH_WORKERS_EXCLUDE = 'randomservice,microservices, randomservice2';
|
||||
expect(getWorkers()).toEqual(['api']);
|
||||
const { workers } = getEnv();
|
||||
expect(workers).toEqual(['api']);
|
||||
});
|
||||
|
||||
it('should throw error for invalid workers', () => {
|
||||
process.env.IMMICH_WORKERS_INCLUDE = 'api,microservices,randomservice';
|
||||
expect(getWorkers).toThrowError('Invalid worker(s) found: api,microservices,randomservice');
|
||||
expect(getEnv).toThrowError('Invalid worker(s) found: api,microservices,randomservice');
|
||||
});
|
||||
|
||||
it('should default noColor to false', () => {
|
||||
const { noColor } = getEnv();
|
||||
expect(noColor).toBe(false);
|
||||
});
|
||||
|
||||
it('should map NO_COLOR=1 to true', () => {
|
||||
process.env.NO_COLOR = '1';
|
||||
const { noColor } = getEnv();
|
||||
expect(noColor).toBe(true);
|
||||
});
|
||||
|
||||
it('should map NO_COLOR=true to true', () => {
|
||||
process.env.NO_COLOR = 'true';
|
||||
const { noColor } = getEnv();
|
||||
expect(noColor).toBe(true);
|
||||
});
|
||||
});
|
||||
|
||||
@ -0,0 +1,39 @@
|
||||
import { ClsService } from 'nestjs-cls';
|
||||
import { IConfigRepository } from 'src/interfaces/config.interface';
|
||||
import { LoggerRepository } from 'src/repositories/logger.repository';
|
||||
import { mockEnvData, newConfigRepositoryMock } from 'test/repositories/config.repository.mock';
|
||||
import { Mocked } from 'vitest';
|
||||
|
||||
describe(LoggerRepository.name, () => {
|
||||
let sut: LoggerRepository;
|
||||
|
||||
let configMock: Mocked<IConfigRepository>;
|
||||
let clsMock: Mocked<ClsService>;
|
||||
|
||||
beforeEach(() => {
|
||||
configMock = newConfigRepositoryMock();
|
||||
clsMock = {
|
||||
getId: vitest.fn(),
|
||||
} as unknown as Mocked<ClsService>;
|
||||
});
|
||||
|
||||
describe('formatContext', () => {
|
||||
it('should use colors', () => {
|
||||
configMock.getEnv.mockReturnValue(mockEnvData({ noColor: false }));
|
||||
|
||||
sut = new LoggerRepository(clsMock, configMock);
|
||||
sut.setAppName('api');
|
||||
|
||||
expect(sut['formatContext']('context')).toBe('\u001B[33m[api:context]\u001B[39m ');
|
||||
});
|
||||
|
||||
it('should not use colors when noColor is true', () => {
|
||||
configMock.getEnv.mockReturnValue(mockEnvData({ noColor: true }));
|
||||
|
||||
sut = new LoggerRepository(clsMock, configMock);
|
||||
sut.setAppName('api');
|
||||
|
||||
expect(sut['formatContext']('context')).toBe('[api:context] ');
|
||||
});
|
||||
});
|
||||
});
|
||||
Loading…
Reference in New Issue