pokerogue/test/test-utils/test-utils.ts
Sirz Benjie c0b3b0c55e
[Docs] Fixup typedoc warnings (#6540)
* Replace `@return` with `@returns`

* Remove extends tags

* Remove `@overrides` tag

* Remove `@abstract` tags

* Remove `@overload` tags

* Remove `@description` tags

* Remove `@static` tags

* Remove `@private` tags

* Remove `@warning`

* Remove `@PokemonSpecies`

* Remove {} appearing after `@returns`

* Remove {} appearing after `@param`

* Bump typedoc version

* Remove ...args in `@param` and replace with args

* Cleanup docs in challenge.ts

* Adjust hyphens

* Remove parenthesis in `@see` tags

* Remove old `@see` references
2025-09-10 13:35:55 -05:00

85 lines
2.6 KiB
TypeScript

import { Pokemon } from "#field/pokemon";
import type { GameManager } from "#test/test-utils/game-manager";
import i18next, { type ParseKeys } from "i18next";
import { vi } from "vitest";
/**
* Sets up the i18next mock.
* Includes a i18next.t mocked implementation only returning the raw key (`(key) => key`)
*
* @returns A spy/mock of i18next
*/
export function mockI18next() {
return vi.spyOn(i18next, "t").mockImplementation((key: ParseKeys) => key);
}
/**
* Creates an array of range `start - end`
*
* @param start start number e.g. 1
* @param end end number e.g. 10
* @returns an array of numbers
*/
export function arrayOfRange(start: number, end: number) {
return Array.from({ length: end - start }, (_v, k) => k + start);
}
/**
* Utility to get the API base URL from the environment variable (or the default/fallback).
* @returns the API base URL
*/
export function getApiBaseUrl() {
return import.meta.env.VITE_SERVER_URL ?? "http://localhost:8001";
}
type TypeOfResult = "undefined" | "object" | "boolean" | "number" | "bigint" | "string" | "symbol" | "function";
/**
* Helper to determine the actual type of the received object as human readable string
* @param received - The received object
* @returns A human readable string of the received object (type)
*/
export function receivedStr(received: unknown, expectedType: TypeOfResult = "object"): string {
if (received === null) {
return "null";
}
if (received === undefined) {
return "undefined";
}
if (typeof received !== expectedType) {
return typeof received;
}
if (expectedType === "object") {
return received.constructor.name;
}
return "unknown";
}
/**
* Helper to check if the received object is an {@linkcode object}
* @param received - The object to check
* @returns Whether the object is an {@linkcode object}.
*/
function isObject(received: unknown): received is object {
return received !== null && typeof received === "object";
}
/**
* Helper function to check if a given object is a {@linkcode Pokemon}.
* @param received - The object to check
* @returns Whether `received` is a {@linkcode Pokemon} instance.
*/
export function isPokemonInstance(received: unknown): received is Pokemon {
return isObject(received) && received instanceof Pokemon;
}
/**
* Checks if an object is a {@linkcode GameManager} instance
* @param received - The object to check
* @returns Whether the object is a {@linkcode GameManager} instance.
*/
export function isGameManagerInstance(received: unknown): received is GameManager {
return isObject(received) && (received as GameManager).constructor.name === "GameManager";
}