refactor(server): domain/infra (#1298)

* refactor: user repository

* refactor: user module

* refactor: move database into infra

* refactor(cli): use user core

* chore: import path

* chore: tests
This commit is contained in:
Jason Rasmussen
2023-01-11 21:34:36 -05:00
committed by GitHub
parent 89a6ed2a5b
commit 131caa20eb
182 changed files with 701 additions and 676 deletions

View File

@@ -3,13 +3,12 @@ import { INestApplication } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import request from 'supertest';
import { clearDb, getAuthUser, authCustom } from './test-utils';
import { databaseConfig } from '@app/database';
import { databaseConfig } from '@app/infra';
import { AlbumModule } from '../src/api-v1/album/album.module';
import { CreateAlbumDto } from '../src/api-v1/album/dto/create-album.dto';
import { ImmichJwtModule } from '../src/modules/immich-jwt/immich-jwt.module';
import { AuthUserDto } from '../src/decorators/auth-user.decorator';
import { UserService } from '../src/api-v1/user/user.service';
import { UserModule } from '../src/api-v1/user/user.module';
import { UserService } from '@app/domain';
import { DataSource } from 'typeorm';
function _createAlbum(app: INestApplication, data: CreateAlbumDto) {
@@ -52,7 +51,7 @@ describe('Album', () => {
beforeAll(async () => {
const builder = Test.createTestingModule({
imports: [AlbumModule, UserModule, TypeOrmModule.forRoot(databaseConfig)],
imports: [AlbumModule, TypeOrmModule.forRoot(databaseConfig)],
});
authUser = getAuthUser(); // set default auth user
const moduleFixture: TestingModule = await authCustom(builder, () => authUser).compile();

View File

@@ -7,15 +7,11 @@
"^.+\\.(t|j)s$": "ts-jest"
},
"moduleNameMapper": {
"^@app/database(|/.*)$": "<rootDir>../../../libs/database/src/$1",
"@app/database/config": "<rootDir>../../../libs/database/src/config",
"@app/database/config/(.*)": "<rootDir>../../../libs/database/src/config/$1",
"@app/database/entities/(.*)": "<rootDir>../../../libs/database/src/entities/$1",
"@app/common": "<rootDir>../../../libs/common/src",
"@app/common/(.*)": "<rootDir>../../../libs/common/src/$1",
"^@app/common": "<rootDir>../../../libs/common/src",
"^@app/job(|/.*)$": "<rootDir>../../../libs/job/src/$1",
"@app/job": "<rootDir>../../../libs/job/src",
"^@app/immich-config(|/.*)$": "<rootDir>../../../libs/immich-config/src/$1",
"^@app/storage(|/.*)$": "<rootDir>../../../libs/storage/src/$1"
"^@app/storage(|/.*)$": "<rootDir>../../../libs/storage/src/$1",
"^@app/infra(|/.*)$": "<rootDir>../../../libs/infra/src/$1",
"^@app/domain(|/.*)$": "<rootDir>../../../libs/domain/src/$1"
}
}

View File

@@ -1,7 +1,6 @@
import { CanActivate, ExecutionContext } from '@nestjs/common';
import { TestingModuleBuilder } from '@nestjs/testing';
import { DataSource } from 'typeorm';
import { IUserRepository } from '../src/api-v1/user/user-repository';
import { AuthUserDto } from '../src/decorators/auth-user.decorator';
import { AuthGuard } from '../src/modules/immich-jwt/guards/auth.guard';
@@ -15,20 +14,6 @@ export async function clearDb(db: DataSource) {
}
}
export function newUserRepositoryMock(): jest.Mocked<IUserRepository> {
return {
get: jest.fn(),
getAdmin: jest.fn(),
getByEmail: jest.fn(),
getByOAuthId: jest.fn(),
getList: jest.fn(),
create: jest.fn(),
update: jest.fn(),
delete: jest.fn(),
restore: jest.fn(),
};
}
export function getAuthUser(): AuthUserDto {
return {
id: '3108ac14-8afb-4b7e-87fd-39ebb6b79750',

View File

@@ -3,12 +3,9 @@ import { INestApplication } from '@nestjs/common';
import { TypeOrmModule } from '@nestjs/typeorm';
import request from 'supertest';
import { clearDb, authCustom } from './test-utils';
import { databaseConfig } from '@app/database/config/database.config';
import { UserModule } from '../src/api-v1/user/user.module';
import { databaseConfig } from '@app/infra';
import { ImmichJwtModule } from '../src/modules/immich-jwt/immich-jwt.module';
import { UserService } from '../src/api-v1/user/user.service';
import { CreateAdminDto, CreateUserDto } from '../src/api-v1/user/dto/create-user.dto';
import { UserResponseDto } from '../src/api-v1/user/response-dto/user-response.dto';
import { CreateAdminDto, CreateUserDto, UserResponseDto, UserService } from '@app/domain';
import { DataSource } from 'typeorm';
function _createUser(userService: UserService, data: CreateUserDto | CreateAdminDto) {
@@ -27,7 +24,7 @@ describe('User', () => {
describe('without auth', () => {
beforeAll(async () => {
const moduleFixture: TestingModule = await Test.createTestingModule({
imports: [UserModule, ImmichJwtModule, TypeOrmModule.forRoot(databaseConfig)],
imports: [ImmichJwtModule, TypeOrmModule.forRoot(databaseConfig)],
}).compile();
app = moduleFixture.createNestApplication();
@@ -51,7 +48,7 @@ describe('User', () => {
beforeAll(async () => {
const builder = Test.createTestingModule({
imports: [UserModule, TypeOrmModule.forRoot(databaseConfig)],
imports: [TypeOrmModule.forRoot(databaseConfig)],
});
const moduleFixture: TestingModule = await authCustom(builder, () => authUser).compile();