Ricerca nel sito web

node.js - Connessione TypeORM non trovata durante il test


Sto studiando l'architettura pulita con TDD creando una semplice applicazione, e sto cercando di implementare il UserRepository nel mio layer di infrastruttura, ma sto ricevendo questo errore ConnectionNotFoundError: Connection "default" non trovata. anche dopo aver stabilito una connessione prima di eseguire il test stesso.

Questa è la mia classe UserEntity.

import { PrimaryColumn, Column, CreateDateColumn, UpdateDateColumn, Entity } from 'typeorm'

@Entity('users')
export class UserEntity {
  @PrimaryColumn('uuid')
  id: string

  @Column()
  name: string

  @Column({ unique: true })
  email: string

  @Column()
  password: string

  @CreateDateColumn()
  created_at: Date

  @UpdateDateColumn()
  updated_at: Date
}

In questo UserRepository, sto implementando un CreateUserRepository che ha i metodi create sottostanti. Per leggere il repository TypeORM sto usando il metodo getRepository di TypeORM

import { getRepository, Repository } from 'typeorm'

import { CreateUserRepositoryDTO, CreateUserRepository } from '../../../../data/protocols/db/user/CreateUserRepository'
import { UserModel } from '../../../../domain/models/UserModel'
import { UserEntity } from '../entities/UserEntity'

export class UserRepository implements CreateUserRepository {
  private ormRepository: Repository<UserEntity>

  constructor () {
    this.ormRepository = getRepository(UserEntity)
  }

  async create (userData: CreateUserRepositoryDTO): Promise<UserModel> {
    const user = await this.ormRepository.create(userData)
    const result = await this.ormRepository.save(user)
    return result
  }
}

import { mockCreateUserRepositoryDTO } from '../../test/mockCreateUserRepositoryDTO'
import { createTestConnection } from '../helpers/TypeORMHelper'
import { UserRepository } from './UserRepository'

describe('UserRepository', () => {
  it('Should return User on create Success', async () => {
    await createTestConnection()
    const userData = mockCreateUserRepositoryDTO()
    const sut = new UserRepository()
    const user = await sut.create(userData)
    console.log(user)
  })
})

import { createConnection, Connection, ConnectionOptions } from 'typeorm'

import { postgresCreds, schemaConfig } from '../../../../../ormconfig'

async function createDbConnection (options: ConnectionOptions): Promise<Connection> {
  try {
    const connection: Connection = await createConnection(options)
    console.log(`TypeORM Connected to ${options.database}`)
    return connection
  } catch (err) {
    console.log('Problem with TypeORM connection')
    throw err.message
  }
}

export async function createTestConnection () {
  return createDbConnection({
    name: 'testConnection',
    type: 'postgres',
    database: 'market-list-test',
    synchronize: false,
    ...postgresCreds,
    ...schemaConfig,
    logging: ['error']
  })
}