Skip to content

Falta api/src/jsons/npcs.json en el repositorio y el test de market no puede correr #83

Description

@leocagli

El CI que entró con el #31 y el #81 destapó esto. src/tests/market.integration.test.ts falla así:

Error: ENOENT: no such file or directory, open
'/home/runner/work/OpenAO/OpenAO/api/src/jsons/npcs.json'

El problema

api/src/jsons/ contiene cuatro archivos:

  • balance.json
  • craftingRecipes.json
  • smeltingRecipes.json
  • spells.json

npcs.json no está. Y no está ignorado: no hay ninguna regla de .gitignore que lo excluya, ni en la raíz ni en api/. Simplemente nunca se commiteó.

Por qué importa

Esto no es un problema del CI. Cualquiera que clone el repo y corra pnpm test en api tiene el mismo fallo. El test que se rompe es market limpieza masiva cancela items vendidos por NPCs y reintegra comisión, o sea la limpieza de la casa de subastas, que necesita saber qué NPCs existen.

Hay un segundo efecto: el script build de api hace cp src/jsons/*.json dist/jsons/. Eso no falla porque el glob simplemente copia lo que hay, así que el build sale verde y el dist queda incompleto sin avisar.

Qué hay que hacer

Primero averiguar cuál de estas dos es la situación, porque el arreglo cambia:

  1. El archivo existe en el entorno de alguien y nunca se subió. Entonces hay que commitearlo, revisando antes que no traiga datos que no deban estar en un repo público.
  2. El archivo se genera. Entonces hay que documentar cómo, agregar el paso al build y al CI, y committear un fixture mínimo para que los tests corran sin ese paso.

Criterios de aceptación

  • pnpm test en api pasa desde un clone limpio, sin ningún archivo agregado a mano.
  • src/tests/market.integration.test.ts pasa sus 6 tests.
  • Si el archivo se genera, el README de api documenta el comando y el CI lo ejecuta antes de los tests.
  • El script build falla ruidosamente si falta alguno de los JSON que espera, en vez de copiar lo que encuentre y seguir.
  • Ningún otro test depende de un archivo ausente: correr la suite completa y verificar que no hay otro ENOENT.

Evidencia que suma

  • Salida de pnpm test desde un clone limpio, pegada como bloque de código, con los 67 tests.
  • Captura del job API del CI en verde.

Fuera de alcance

  • Arreglar las otras fallas de la suite. Están en issues aparte.
  • Rediseñar cómo se cargan los datos del juego.

Por dónde empezar

api/src/jsons/ y el build de api/package.json. Mirá primero cómo market.integration.test.ts consume el archivo, para saber qué forma mínima necesita el fixture si hay que crearlo.

Estimación

Entre 2 y 5 horas, según cuál de los dos casos sea. Nivel inicial.

Metadata

Metadata

Assignees

No one assigned

    Labels

    GrantFox OSSIssue tracked in GrantFox OSSMaybe RewardedIssue may be eligible for a GrantFox rewardThird CampaignCampaign: Third CampaignbugSomething isn't working

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions