Commit Graph

34 Commits

Author SHA1 Message Date
david 62ac6d1b79 feat: implement variable team matchups with partner rotation
- Add manual team entry for permanent teams in Matchups tab
- Rename 'Teams' tab to 'Matchups' for clarity
- Implement partner rotation strategies (minimize_repeat, maximize_even, elo_based)
- Track partnerships across rounds to minimize repeat pairings
- Fix unit tests for team configuration and ELO calculations
- Add E2E test for 9+ participant tournaments with variable matchups

Key changes:
- TeamsSection.tsx: Added router.refresh(), manual team entry, and matchup display
- schedule-generator.ts: Enhanced generateVariableRoundRobin to track partnerships
- team-generator.ts: Fixed partnership frequency tracking across rounds
- API routes: Updated to support variable team durability with rotation strategies
2026-04-26 16:44:48 -07:00
david eeb0f7970a refactor(tests): update remaining test files for ephemeral team model 2026-04-26 16:44:48 -07:00
david 9137fabc2b refactor(tests): update test files to use new player field names 2026-04-26 16:44:48 -07:00
david ade3b82e3c fix: support partial updates in tournament PUT endpoint
- Change PUT endpoint to only include fields present in the request
- Add support for team configuration fields (teamDurability, partnerRotation, allowByes)
- Fix contradictory test that expected resetting allowTies when not provided
- When a field is not in the request, it is preserved (not modified)

Fixes issue where Save Configuration button would fail with
'Tournament name is required' error.
2026-04-26 16:44:47 -07:00
david ec798fc29d test: add unit tests for team generation algorithms
Add comprehensive tests for team generation:
- Test random pairing strategy
- Test ELO-based pairing strategy
- Test even matches strategy
- Test minimize repeat partnerships
- Test bye player handling
- Test team balance calculation
- Test partnership frequency tracking

All 19 tests pass.

Refs #22
2026-04-26 16:44:47 -07:00
david 3e98c59d85 feat: add round-robin schedule generator
Implement circle-method algorithm for generating round-robin tournament
schedules. Handles both even and odd team counts with bye rounds.

Includes unit tests for algorithm correctness, input validation, and
expected round/matchup calculations.
2026-04-26 16:44:47 -07:00
david d8a8931bc3 fix(tests): add @prisma/client mock for test isolation
Pull Request / unit-tests (pull_request) Successful in 1m3s
Pull Request / acceptance-tests (pull_request) Failing after 3s
Pull Request / analyze-bump-type (pull_request) Has been skipped
Mock @prisma/client globally in bun-setup.ts to allow unit tests to run
without requiring the generated Prisma client. This improves test isolation
and allows tests to pass even when prisma generate hasn't been run.
2026-04-01 14:06:57 -07:00
david ed43399b24 fix: improve TypeScript types for better IDE code hinting
- Install @types/bun and @types/jsdom for proper type definitions
- Fix mock function typing in test files
- Create jest-dom.d.ts to properly extend Bun's Matchers interface
- Remove MockedFunction imports (not supported in Bun's types)
- Cast global.fetch and useSession mocks to any where needed
- Fix mock.module return types to match expected signatures

This resolves TypeScript errors that were preventing proper code
completion and type checking in IDEs.
2026-04-01 12:44:44 -07:00
david 4e3b25e2fc fix: avoid global mock clearing in EditTournamentForm tests
Pull Request / unit-tests (pull_request) Failing after 59s
Pull Request / acceptance-tests (pull_request) Has been skipped
Pull Request / analyze-bump-type (pull_request) Has been skipped
Replace mock.clearAllMocks() with mockFetch.mockClear() to only
clear the specific fetch mock without affecting global module mocks
used by other test files.
2026-04-01 12:20:16 -07:00
david e4c4333b40 fix: avoid global mock clearing in Navigation tests
- Add explicit next/link mock for consistency
- Remove mock.clearAllMocks() from beforeEach/afterEach
- Navigation tests now rely on module mocks set at file level
- Prevents interference with other test files
2026-04-01 12:20:13 -07:00
david 09302fd911 fix: add DOM cleanup to bun-setup.ts
Add afterEach hook to clear document.body.innerHTML between tests.
This prevents test pollution where elements from previous tests
interfere with subsequent test queries.
2026-04-01 12:20:10 -07:00
david b90ec08966 refactor: improve test structure for Bun compatibility
Pull Request / unit-tests (pull_request) Failing after 58s
Pull Request / acceptance-tests (pull_request) Has been skipped
Pull Request / analyze-bump-type (pull_request) Has been skipped
- Update all test files to use named mock variables instead of inline mocks
- Clear mock history in beforeEach instead of using mock.restore()
- Add default mock implementations stored at module level
- Document that tests should not use --randomize flag due to mock.module() limitations
- All 89 unit tests pass consistently without randomization
2026-04-01 01:05:01 -07:00
david 24db43eb7f feat: migrate from npm to Bun
Test / unit-tests (push) Failing after 1m54s
Pull Request / unit-tests (pull_request) Failing after 1m41s
Pull Request / acceptance-tests (pull_request) Has been skipped
Pull Request / analyze-bump-type (pull_request) Has been skipped
- Install Bun via mise
- Update package.json scripts to use Bun
- Migrate unit tests from Vitest to Bun test runner
- Migrate component tests from Vitest to Bun test runner
- Configure Bun with DOM environment for React Testing Library
- Keep Playwright for E2E tests (as planned)
- 93/100 tests passing (7 flaky tests when running all together, pass individually)
2026-04-01 00:13:15 -07:00
david 6989decf6f fix: load .env.development in test setup files 2026-03-31 18:30:19 -07:00
david 4e112c92ae fix: remove hardcoded database URLs and use environment variables 2026-03-31 18:28:17 -07:00
david abc1963aea feat: add database test safety configuration 2026-03-31 18:23:47 -07:00
david 255b330695 fix: allowTies not saved when editing tournaments (closes #6)
Fix the allowTies checkbox not being saved when editing tournaments. Added comprehensive unit and E2E tests to verify the fix.

Co-authored-by: David Gwilliam <dhgwilliam@gmail.com>
Co-committed-by: David Gwilliam <dhgwilliam@gmail.com>
2026-04-01 00:20:25 +00:00
david 26c5158724 feat: set up development database and test cleanup utilities 2026-03-31 16:52:56 -07:00
david f04a0f4db9 test: add smoke and admin features acceptance tests 2026-03-31 16:16:20 -07:00
david 9a2c2d5c75 test: fix Navigation unit tests to handle updated session handling 2026-03-31 16:16:17 -07:00
david d595dfa62d fix: update Prisma client configuration and test files for Prisma 7.x compatibility 2026-03-31 10:41:04 -07:00
david 1b5776951c fix: update auth-simple test to mock headers function 2026-03-31 09:18:14 -07:00
david b8a3c3a7be fix: update test setup to use PrismaPg adapter 2026-03-31 03:39:35 -07:00
david 1729dacdec test: add Next.js 16 params Promise handling regression tests 2026-03-31 00:52:04 -07:00
david 42217e182e test: add regression tests for ID validation with Prisma v7 2026-03-31 00:24:28 -07:00
david 77de648200 test: update mocks for Prisma v7 stricter type checking 2026-03-31 00:00:50 -07:00
david b0aaffbecf chore: fix linting errors in tests and api routes 2026-03-30 22:58:33 -07:00
david 5d1755f082 chore: add variant scoring fields, fix tie handling, and fix test files for normalizedName 2026-03-30 22:48:31 -07:00
david 4d9cbc9259 fix: add site_admin support to tournament permissions and fix session cache issues 2026-03-30 22:09:50 -07:00
david d821dd7ce2 fix: include participants in getManageableTournaments query 2026-03-30 21:34:16 -07:00
david 710e4f811e test: add comprehensive tests for player deduplication, permissions, and user management 2026-03-30 21:31:55 -07:00
david 3a78f354ad feat: add recalculateAllElo function for idempotent ELO recalculation 2026-03-30 21:28:09 -07:00
david 576dfda619 fix: resolve remaining TypeScript and linting errors
- Fixed unused variables in unit tests (elo.test.ts, permissions.test.ts)
- Fixed unused variables in E2E tests (account-acceptance.test.ts, elo-ratings.test.ts, epic1-auth-registration.test.ts, global.setup.ts)
- Fixed 'any' type usage in EditTournamentForm.test.tsx and auth-simple.test.ts
- Fixed unescaped quotes and apostrophes in React components
- Fixed TypeScript type errors in Navigation.tsx, test-api/page.tsx, and matches/upload/page.tsx
- Fixed missing useEffect dependency in tournaments/[id]/entry/page.tsx
- Updated eslint config to exclude test-api directory
- All tests now pass linting and build successfully
2026-03-29 21:20:20 -07:00
david 123df671f5 nextjs-rewrite (#5)
Reviewed-on: #5
Co-authored-by: David Gwilliam <dhgwilliam@gmail.com>
Co-committed-by: David Gwilliam <dhgwilliam@gmail.com>
2026-03-30 02:30:13 +00:00