* feat: Cal.diy — community-driven MIT-licensed fork of Cal.com This squashed commit contains all Cal.diy changes applied on top of calcom/cal.com main: - Rebrand Cal.com to Cal.diy across the entire codebase - Remove Enterprise Edition (EE) features, license checks, and AGPL restrictions - Switch license from AGPL-3.0 to MIT - Remove docs/ directory (migrated to Nextra at cal.diy) - Remove dead code: org tests, EE tips, platform nav, premium username, SAML/SSO, etc. - Clean up .env.example for self-hosted Cal.diy - Update Docker image references to calcom/cal.diy - Update README, CONTRIBUTING.md, and issue templates for Cal.diy community fork - Add PR welcome bot for Cal.diy contributors - Fix API v2 breaking changes oasdiff ignore entries - Replace Blacksmith CI runners with default GitHub Actions 3893 files changed, 20789 insertions(+), 411020 deletions(-) Co-Authored-By: benny@cal.com <sldisek783@gmail.com> * refactor: remove org-specific /organizations/:orgId endpoints from API v2 atoms controllers (#1701) Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * fix: revert Cal.diy Inc to Cal.com, Inc. in license files, copyright notices, and package metadata (#1702) Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com> * rip out org related comments in api v2 --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
2.4 KiB
title, impact, impactDescription, tags
| title | impact | impactDescription | tags |
|---|---|---|---|
| Maintain 80%+ Test Coverage for New Code | HIGH | Prevents bugs and enables confident refactoring | testing, coverage, quality, ci |
Maintain 80%+ Test Coverage for New Code
Impact: HIGH
Every PR must have near-80%+ test coverage for the code it introduces or modifies. This is enforced automatically in our CI pipeline. If you add 50 lines of new code, those 50 lines must be covered by tests. If you modify an existing function, your changes must be tested.
Coverage requirements:
- Overall test coverage: 80%+ for new code
- Unit test coverage: Near 100%, especially with AI assistance for generating tests
- Global coverage tracking as a key metric that improves over time
Incorrect (untested code):
// New function with no tests
export function calculateAvailability(user: User, date: Date): TimeSlot[] {
// Complex logic here...
// No corresponding test file
}
Correct (comprehensive tests):
// calculateAvailability.ts
export function calculateAvailability(user: User, date: Date): TimeSlot[] {
// Complex logic here...
}
// calculateAvailability.test.ts
describe("calculateAvailability", () => {
it("returns empty array for user with no schedule", () => {
const user = createMockUser({ schedules: [] });
expect(calculateAvailability(user, new Date())).toEqual([]);
});
it("excludes busy times from available slots", () => {
const user = createMockUser({
schedules: [mockSchedule],
busyTimes: [mockBusyTime],
});
const slots = calculateAvailability(user, new Date());
expect(slots).not.toContainEqual(expect.objectContaining({
start: mockBusyTime.start,
}));
});
it("handles timezone conversions correctly", () => {
// Test timezone edge cases
});
});
Addressing the "coverage isn't the full story" argument: Yes, we know coverage doesn't guarantee perfect tests. We know you can write meaningless tests that hit every line but test nothing meaningful. We know coverage is just one metric among many. But it's surely better to shoot for a high percentage than to have no idea where you are at all.
Leverage AI for test generation: AI can quickly and intelligently build comprehensive test suites. Manual testing is more and more a thing of the past.
Reference: Cal.diy Engineering Blog