import { PERK_FALL_SPEED, PERK_HEIGHT, PERK_WIDTH } from '../../config';
import { Perk } from '../../entities/perk/perk';
import { spawnRandomPerk } from './spawnRandomPerk';

describe('spawnRandomPerk', () => {
  it('Возвращает корректное значение при неверных типах аргументов', () => {
    expect(spawnRandomPerk(null, 0)).toBeNull();
    expect(spawnRandomPerk(0, null)).toBeNull();
    expect(spawnRandomPerk('10', 0)).toBeNull();
    expect(spawnRandomPerk(0, undefined)).toBeNull();
  });

  it('Создает бонус в заданной точке с размерами и скоростью из конфига', () => {
    const perk = spawnRandomPerk(10, 20);

    expect(perk).toBeInstanceOf(Perk);
    expect(perk.x).toBe(10);
    expect(perk.y).toBe(20);
    expect(perk.width).toBe(PERK_WIDTH);
    expect(perk.height).toBe(PERK_HEIGHT);
    expect(perk.fallSpeed).toBe(PERK_FALL_SPEED);
    expect(perk.alive).toBe(true);
  });
});
