Skip to content

test(COMPT-33): consolidate all hook tests into src/hooks/__tests__/#10

Merged
a-elkhiraooui-ciscode merged 1 commit intodevelopfrom
feat/COMPT-33-test-suite
Mar 30, 2026
Merged

test(COMPT-33): consolidate all hook tests into src/hooks/__tests__/#10
a-elkhiraooui-ciscode merged 1 commit intodevelopfrom
feat/COMPT-33-test-suite

Conversation

@a-elkhiraooui-ciscode
Copy link
Copy Markdown
Contributor

  • Move useDebounce, useLocalStorage, useSessionStorage, useMediaQuery, useWindowSize, useClickOutside, useIntersectionObserver tests to tests/
  • Update relative imports from ./ to ../
  • All 12 hooks covered: fake timers for debounce/interval/timeout/windowSize, mock matchMedia, mock IntersectionObserver, storage parse-error guards
  • 55 tests passing, 97.44% line coverage (>= 85% AC)

Summary

  • What does this PR change?

Why

  • Why is this change needed?

Checklist

  • Added/updated tests (if behavior changed)
  • npm run lint passes
  • npm run typecheck passes
  • npm test passes
  • npm run build passes
  • Added a changeset (npx changeset) if this affects consumers

Notes

  • Anything reviewers should pay attention to?

- Move useDebounce, useLocalStorage, useSessionStorage, useMediaQuery,
  useWindowSize, useClickOutside, useIntersectionObserver tests to __tests__/
- Update relative imports from ./ to ../
- All 12 hooks covered: fake timers for debounce/interval/timeout/windowSize,
  mock matchMedia, mock IntersectionObserver, storage parse-error guards
- 55 tests passing, 97.44% line coverage (>= 85% AC)
Copilot AI review requested due to automatic review settings March 30, 2026 13:57
@sonarqubecloud
Copy link
Copy Markdown

@a-elkhiraooui-ciscode a-elkhiraooui-ciscode merged commit 1eeeaaa into develop Mar 30, 2026
4 checks passed
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

This PR consolidates hook test files under src/hooks/__tests__/ and updates test imports accordingly, while documenting the new test layout and adding a changeset entry for COMPT-33.

Changes:

  • Update hook test imports to reference hook modules via ../ after moving tests into src/hooks/__tests__/.
  • Update repo instructions to document the consolidated hook test location and COMPT-33 status.
  • Add a Changesets entry describing the consolidated test suite and coverage expectations.

Reviewed changes

Copilot reviewed 9 out of 9 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/hooks/tests/useWindowSize.test.ts Updates import path for useWindowSize/getWindowSize after test relocation.
src/hooks/tests/useSessionStorage.test.ts Updates import paths for useSessionStorage and storage helper.
src/hooks/tests/useMediaQuery.test.ts Updates import path for useMediaQuery after test relocation.
src/hooks/tests/useLocalStorage.test.ts Updates import paths for useLocalStorage and storage helper.
src/hooks/tests/useIntersectionObserver.test.ts Updates import path for useIntersectionObserver after test relocation.
src/hooks/tests/useDebounce.test.ts Updates import path for useDebounce after test relocation.
src/hooks/tests/useClickOutside.test.ts Updates import path for useClickOutside after test relocation.
.github/instructions/copilot-instructions.md Documents COMPT-33 test consolidation and updates module structure listing.
.changeset/COMPT-33-test-suite.md Adds release note for COMPT-33 test suite consolidation and coverage goals.

Comment on lines 20 to 24
- **State & Storage** (COMPT-30 ✅) — `useDebounce`, `useLocalStorage`, `useSessionStorage`
- **DOM & Events** (COMPT-31 ✅) — `useMediaQuery`, `useWindowSize`, `useClickOutside`, `useIntersectionObserver`
<<<<<<< HEAD
- **Async & Lifecycle** (COMPT-32 ✅) — `usePrevious`, `useToggle`, `useInterval`, `useTimeout`, `useIsFirstRender`
- **Test Suite** (COMPT-33 ✅) — Full coverage for all 12 hooks, all tests in `src/hooks/__tests__/`

Copy link

Copilot AI Mar 30, 2026

Choose a reason for hiding this comment

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

The docs state the package provides/tests “all 12 hooks”, but the public exports include an additional hook (useNoop) via src/hooks/index.ts (and re-exported from src/index.ts). Either update the docs/count to include useNoop (and its test location), or stop exporting it if it’s not meant to be part of the public hook surface.

Copilot uses AI. Check for mistakes.
Comment on lines +7 to +11
- Consolidate all hook tests under src/hooks/__tests__/
- Cover all 12 hooks: useDebounce, useLocalStorage, useSessionStorage,
useMediaQuery, useWindowSize, useClickOutside, useIntersectionObserver,
usePrevious, useToggle, useInterval, useTimeout, useIsFirstRender
- Use vitest fake timers for useDebounce, useInterval, useTimeout, useWindowSize
Copy link

Copilot AI Mar 30, 2026

Choose a reason for hiding this comment

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

This release note says the test suite covers “all 12 hooks”, but the package currently exports another hook (useNoop) publicly. Please either include useNoop in this list/coverage statement, or adjust exports so the “12 hooks” claim is accurate.

Copilot uses AI. Check for mistakes.
Zaiidmo added a commit that referenced this pull request Apr 7, 2026
* initiated dev environment

* ops: updated SOnar name

* ops (ci): standardize publish validation and dependabot across all packages

- Replace git tag --list strategy with package.json-driven tag validation
  in all 16 publish workflows; use git rev-parse to verify the exact tag
  exists rather than guessing the latest repo-wide tag
- Update error guidance to reflect feat/** → develop → master flow
- Standardize dependabot to npm-only, grouped, monthly cadence across
  all 16 packages; remove github-actions ecosystem updates
- Add missing dependabot.yml to AuthKit-UI, ChartKit-UI, HealthKit,
  HooksKit, paymentkit, StorageKit

* chore(COMPT-138): apply repository-wide prettier baseline (#4)

- Run prettier --write across repository
- No logic/behavior changes
- Unblocks CI PR Validation format gate for feature PRs
- verify passes: lint + typecheck + tests

* Feat/compt 30 state storage hooks (#6)

* feat(COMPT-30): add useDebounce, useLocalStorage, useSessionStorage hooks

- useDebounce<T>(value, delay): returns debounced value, resets timer on value/delay change
- useLocalStorage<T>(key, initial): syncs with localStorage, SSR-safe, JSON serialization
- useSessionStorage<T>(key, initial): same pattern for sessionStorage
- Shared storage.ts helper with readStorageValue/writeStorageValue (SSR guard + parse fallback)
- All three exported from src/hooks/index.ts -> src/index.ts
- Full test coverage: timer reset, JSON sync, parse error fallback, SSR guard
- tsc --noEmit passes, lint passes (0 warnings), 13/13 tests pass

* chore(COMPT-30): add changeset, update copilot-instructions, fix husky pre-commit

- .changeset/COMPT-30-state-storage-hooks.md: minor bump summary for 0.0.1 release
- .github/instructions/copilot-instructions.md: updated to HooksKit package identity,
  real src structure with COMPT-30 hooks marked, COMPT-XX branch naming convention
- .husky/pre-commit: removed deprecated husky v9 shebang lines (breaks in v10)

* Feat/compt 31 dom event hooks (#8)

* feat(COMPT-31): add useMediaQuery, useWindowSize, useClickOutside, useIntersectionObserver

- useMediaQuery(query): tracks matchMedia via useSyncExternalStore, SSR-safe (server snapshot false)
- useWindowSize(): returns {width, height}, debounced 100ms on resize, SSR-safe ({0,0})
- useClickOutside(ref, handler): fires on mousedown/touchstart outside ref; handler via ref pattern
- useIntersectionObserver(ref, options?): IntersectionObserverEntry|null, disconnects on unmount
- All listeners registered in useEffect with cleanup return
- All SSR-safe: typeof window === undefined guards
- Zero runtime dependencies
- tsc --noEmit passes, lint passes (0 warnings), 26/26 tests pass, coverage >= 95%
- All four exported from src/hooks/index.ts -> src/index.ts
- Changeset added, copilot-instructions.md updated for epic COMPT-2

* test(COMPT-31): reduce duplicated test blocks for Sonar quality gate

- remove accidental duplicated useMediaQuery suite block
- extract shared viewport setup in useWindowSize tests
- extract shared mount helper in useClickOutside tests
- keep behavior coverage unchanged

* Feat/compt 32 async lifecycle hooks (#9)

* feat(COMPT-32): add usePrevious, useToggle, useInterval, useTimeout, useIsFirstRender

- usePrevious<T>(value): previous render value via state-derivation; undefined on first render
- useToggle(initial?): boolean toggle with stable useCallback reference
- useInterval(callback, delay|null): fires at cadence, stops on null, latest callback via ref
- useTimeout(callback, delay|null): fires once, cancels on null or unmount, latest callback via ref
- useIsFirstRender(): true only on first render (scoped eslint-disable for intentional ref access)
- All timer cleanup in useEffect return — StrictMode safe
- Zero runtime deps; tsc --noEmit passes, lint passes, 25/25 tests, hooks coverage >= 98%
- All five exported from src/hooks/index.ts -> src/index.ts
- Changeset added, copilot-instructions.md updated with all three COMPT groups complete

* refactor(COMPT-32): move hook tests to src/hooks/__tests__/

- Moved all 5 hook test files from src/hooks/ to src/hooks/__tests__/
- Updated relative imports from ./hook to ../hook
- No logic changes; all 25 tests still pass

* test(COMPT-33): consolidate all hook tests into src/hooks/__tests__/ (#10)

- Move useDebounce, useLocalStorage, useSessionStorage, useMediaQuery,
  useWindowSize, useClickOutside, useIntersectionObserver tests to __tests__/
- Update relative imports from ./ to ../
- All 12 hooks covered: fake timers for debounce/interval/timeout/windowSize,
  mock matchMedia, mock IntersectionObserver, storage parse-error guards
- 55 tests passing, 97.44% line coverage (>= 85% AC)

* security: added CODEOWNER file for branches security

* ops: updated release check workflow

* ops: updated relese check workflow#

* feat(COMPT-34): README, v0.1.0 version bump, publish preparation (#11)

- Full README with installation, SSR note, 12 hook examples with types
- Remove __hooks_placeholder from hooks barrel
- Fix COMPT-30 changeset package name (reactts-developerkit -> hooks-kit)
- Apply changeset version bump: 0.0.0 -> 0.1.0
- Remove duplicate root-level test files (already in __tests__/)
- Update copilot-instructions.md with COMPT-34 status

Co-authored-by: a-elkhiraooui-ciscode <a.elkhiraoui@ciscod.com>

* ci: update release check workflow

* ops: updated release check jobs.

* v0.1.0

* fix(ci): correct sonar test directory and inclusion patterns

---------

Co-authored-by: Zaiidmo <zaiidmoumnii@gmail.com>
Co-authored-by: Zaiid Moumni <141942826+Zaiidmo@users.noreply.github.com>
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.

2 participants