Skip to content

test : added unit tests for useCountUp hook#785

Open
tmdeveloper007 wants to merge 5 commits into
Priyanshu-byte-coder:mainfrom
tmdeveloper007:#765
Open

test : added unit tests for useCountUp hook#785
tmdeveloper007 wants to merge 5 commits into
Priyanshu-byte-coder:mainfrom
tmdeveloper007:#765

Conversation

@tmdeveloper007
Copy link
Copy Markdown
Contributor

Closes #765.

Summary of What Has Been Done:
Added test/useCountUp.test.ts covering the useCountUp hook's pure logic and animation behavior.

Changes Made:
New file: test/useCountUp.test.ts

Test coverage (9 tests):

  • Adaptive duration mapping for small (≤10 → 500ms), medium (≤50 → 650ms), large (→ 800ms) targets
  • Quintic ease-out formula: 1-(1-t)^5 never produces count exceeding target
  • Progress capped at 1 when elapsed exceeds duration
  • Negative target guard returns 0
  • Target of zero returns 0 immediately
  • All intermediate animation counts stay within valid range [0, target]

Uses vi.useFakeTimers() for deterministic time testing.

Impact it Made:
All 9 tests pass. The animated counter logic is validated across edge cases without requiring a full React render test setup.

@vercel
Copy link
Copy Markdown

vercel Bot commented May 23, 2026

@TESTPERSONAL is attempting to deploy a commit to the PRIYANSHU DOSHI's projects Team on Vercel.

A member of the Team first needs to authorize it.

@github-actions github-actions Bot added gssoc26 GSSoC 2026 contribution type:testing GSSoC type bonus: tests (+10 pts) labels May 23, 2026
@github-actions
Copy link
Copy Markdown

GSSoC Label Checklist 🏷️

@Priyanshu-byte-coder — please apply the appropriate labels before merging:

Difficulty (pick one):

  • level:beginner — 20 pts
  • level:intermediate — 35 pts
  • level:advanced — 55 pts
  • level:critical — 80 pts

Quality (optional):

  • quality:clean — ×1.2 multiplier
  • quality:exceptional — ×1.5 multiplier

Validation (required to score):

  • gssoc:approved — counts for points
  • gssoc:invalid / gssoc:spam / gssoc:ai-slop — does not score

Type labels (type:*) are auto-detected from files and title. Review and adjust if needed.
Points formula: (difficulty × quality_multiplier) + type_bonus

Copy link
Copy Markdown
Owner

@Priyanshu-byte-coder Priyanshu-byte-coder left a comment

Choose a reason for hiding this comment

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

Tests must import from source — not reimplement the function locally.

The test file re-implements the function being tested inside the test itself. This defeats the purpose of testing — changes to the real implementation won't fail these tests.

Fix: import the actual function from its source file and test that import. Example:

import { safeCompare } from '../src/lib/crypto'
// then test safeCompare directly

Also fix:

  • Add "test": "vitest run" to scripts in package.json
  • Add vitest.config.ts with resolve.alias: { '@': path.resolve(__dirname, 'src') }
  • Add EOF newline to test file

@Priyanshu-byte-coder Priyanshu-byte-coder added gssoc:approved GSSoC: PR approved for scoring level:beginner GSSoC: Beginner difficulty (20 pts) labels May 23, 2026
@tmdeveloper007 tmdeveloper007 force-pushed the #765 branch 4 times, most recently from 2ed957a to 78b0378 Compare May 23, 2026 15:12
@vercel
Copy link
Copy Markdown

vercel Bot commented May 23, 2026

Deployment failed with the following error:

The provided GitHub repository does not contain the requested branch or commit reference. Please ensure the repository is not empty.

Test User added 5 commits May 23, 2026 23:21
Closes Priyanshu-byte-coder#765

Added test/useCountUp.test.ts covering the useCountUp hook's pure logic and animation behavior:

- Adaptive duration: small (<=10) → 500ms, medium (<=50) → 650ms, large → 800ms
- Quintic ease-out formula never exceeds target
- Progress capped at 1 for elapsed > duration
- Negative target guard: returns 0
- Target of zero returns zero immediately
- All intermediate counts are within valid range

Uses vi.useFakeTimers() and vi.useRealTimers() for time-dependent tests.

Impact: useCountUp hook's animation logic is now validated.
@tmdeveloper007
Copy link
Copy Markdown
Contributor Author

This pull request is fully up-to-date with the latest upstream merges, all review items are addressed, local tests are passing cleanly, and it is fully ready to be merged! 🚀

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

Labels

gssoc:approved GSSoC: PR approved for scoring gssoc26 GSSoC 2026 contribution level:beginner GSSoC: Beginner difficulty (20 pts) type:testing GSSoC type bonus: tests (+10 pts)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

test : add unit tests for useCountUp hook

2 participants