Giter Club home page Giter Club logo

Comments (1)

ssljivic avatar ssljivic commented on June 1, 2024

I just stumbled upon this very same issue.

Here is the test for it:

import { BigIntType, Entity, OneToOne, PrimaryKey, Property, Reference } from '@mikro-orm/core'
import { MikroORM, PostgreSqlDriver } from '@mikro-orm/postgresql'

import { mockLogger } from '../helpers'

@Entity()
export class Game {
  @PrimaryKey({ type: new BigIntType('number') })
  id!: number

  @Property({ length: 255 })
  name!: string

  @OneToOne({ entity: 'Gameplay', mappedBy: 'game' })
  gameplay!: Reference<Gameplay>
}

@Entity()
export class Gameplay {
  @OneToOne({ entity: () => Game, primary: true, inversedBy: 'gameplay', joinColumn: 'id' })
  game!: Game

  @Property({ nullable: false, default: false })
  inChallenge: boolean = false
}

describe('MikroORM', () => {
  let orm: MikroORM

  beforeAll(async () => {
    orm = await MikroORM.init({
      host: 'localhost',
      port: 5432,
      user: 'mikro-orm-test',
      password: 'mikro-orm-test',
      dbName: 'mikro-orm-test',

      driver: PostgreSqlDriver,

      debug: true,
      entities: [Game, Gameplay],
    })
    await orm.schema.refreshDatabase({ wrap: true })
  })

  afterAll(async () => {
    await orm.close(true)
  })

  it('should not fire extra query if all data is already available', async () => {
    let em = orm.em.fork()

    const gameplay = new Gameplay()

    const game = new Game()
    game.id = 1
    game.name = 'The Game'
    game.gameplay = Reference.create(gameplay)

    em.persist(game)
    await em.flush()

    em = orm.em.fork()

    const mock = mockLogger(orm)

    await em.findOneOrFail(
      Gameplay,
      { game: { id: 1 } },
      {
        populate: ['game'],
      },
    )

    console.log(mock.mock.calls)

    expect(mock.mock.calls).toHaveLength(1)
  })
})

from mikro-orm.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.