Skip to content

chore(widget): tests de la retención tras reordenar (#241) - #242

Open
DonatoSilva wants to merge 3 commits into
egdev6:mainfrom
DonatoSilva:chore/241-reorder-hold-tests
Open

DonatoSilva wants to merge 3 commits into
egdev6:mainfrom
DonatoSilva:chore/241-reorder-hold-tests

Conversation

@DonatoSilva

Copy link
Copy Markdown
Contributor

Related issue / Issue relacionada

Issue: Closes #241
ODD: odd/tasks/241-reorder-hold-tests.md — alcance aprobado por el mantenedor en la propia issue (status:approved, type:chore).

Scope / Alcance

Los tests de la retención tras reordenar (#240) no fijaban comportamiento: holdAfterReorderDrop, releaseOnStripLeave y canPointerOpen envolvían un booleano, y sus tests comprobaban la aridad o que el estado del panel no cambiara. La comprobación con bordes reales —si el puntero cayó dentro de la ventana al soltar un reordenado— estaba en línea en Widget.tsx y no tenía test.

Dos commits: el refactor con sus tests y el ODD, y el inventario i18n regenerado (solo cambia la línea de hashes del árbol de src/).

Coordination / Coordinación

  • Para ODD: asignaciones y solapamientos revisados; toma verificada o acuerdo explícito del mantenedor enlazado.

Contributor / Contribuidor: @DonatoSilva
Claim or agreement evidence / Evidencia de asignación o acuerdo: asignación del mantenedor en la issue (#241), con status:approved y type:chore.

Acceptance and validation / Aceptación y validación

  • Criteria satisfied / Criterios cumplidos: la retención sigue activa solo si el puntero quedó dentro de la ventana al soltar un reordenado; se libera con el mouseleave de la tira; la guarda aplica solo a la vía del puntero; la función pura cubre los bordes en ambos ejes; sin cambio de comportamiento respecto de fix(widget): el detalle no se reabre solo al soltar un orbe reordenado (#222) #240.
  • Checks actually run and results / Comprobaciones ejecutadas y resultados:
    • Tests nuevos observados en rojo antes de implementar (el módulo todavía no existía) y en verde después.
    • npm test: vitest 69 archivos / 910 tests; node --test 298; 0 fallos.
    • npm run typecheck y npm run build: sin errores.
    • node scripts/i18n-inventory.mjs --check: correcto.
  • Checks not run and why / Comprobaciones no ejecutadas y motivo: cargo test no aplica: el cambio es solo de TypeScript en src/ y no toca src-tauri/. No hubo prueba manual en GUI porque el comportamiento no cambia: las funciones borradas eran identidades y el predicado extraído reproduce la misma comparación.
  • Remaining blockers / Bloqueos pendientes: ninguno.

An open PR does not mean integration. Release, secrets and signing operations require separate authorization.
Una PR abierta no implica integración. Release, secretos y firma requieren autorización separada.

Las tres funciones de la retención (`holdAfterReorderDrop`,
`releaseOnStripLeave` y `canPointerOpen`) envolvían un booleano, así que sus
tests no podían fallar: comprobaban la aridad y que el estado del panel no
cambiara. La lógica con bordes reales —si el puntero cayó dentro de la ventana
al soltar un reordenado— estaba en línea y no tenía test.

- `pointerInsideViewport(x, y, width, height)` pasa a `src/lib/pointer-viewport.ts`
  como función pura, con los bordes cubiertos en ambos ejes (`0`, `-1`,
  `width - 1` y `width`).
- La retención queda como `useRef<boolean>` en `Widget.tsx`, sin envoltorio.
- Se borran las tres funciones y el bloque de tests que no fijaba comportamiento.

Sin cambio de comportamiento: mismas condiciones de retención y liberación que
egdev6#240. La guarda sigue solo en la vía del puntero; el foco y el clic no la consultan.

Refs egdev6#241
Solo cambia la línea de hashes del árbol de src/: el cambio no añade ni modifica textos de interfaz.
Anota en la tarea los commits de cada fase, la PR y las comprobaciones ejecutadas.

@egdev6 egdev6 left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Muy buen trabajo, el cambio cumple todo lo que pide #241: las tres envoltorio y sus tests fuera, la retención como useRef<boolean> con sus cuatro usos equivalentes, y pointerInsideViewport con los bordes de ambos ejes cubiertos. Antes de aprobar, te pido dos ajustes pequeños:

  1. Conservar el motivo del borde. El JSDoc que se borra de holdAfterReorderDrop explicaba por qué no se retiene al soltar fuera de la ventana: el mouseleave ya ocurrió y nada liberaría la retención después. Es justo la razón por la que < frente a <= importa, y hoy ya no aparece en ningún sitio. Basta con una línea en el JSDoc de src/lib/pointer-viewport.ts o junto al pointerup en src/Widget.tsx.
  2. Actualizar el documento ODD. En odd/tasks/241-reorder-hold-tests.md, la estrategia de entrega dice «Dos commits», pero el PR tiene tres (el tercero registra la entrega).

Con eso lo apruebo. La etiqueta y la asignación las pongo yo.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

chore(widget): tests de la retención tras reordenar (#240)

2 participants