* Init billing tables * Create `IBillingRepository` types * Create billing repositories * Create billingRepositoryFactory * Eslint fix - remove unused organizationOnboarding * internal-team-billing create saveTeamBilling method using repositories * On new teams write to team billing table * On new org write to org billing table * Change fields to organizationId * Add todo comment * Revert "Change fields to organizationId" This reverts commit bbb2e5dfa6b4c20a8a395f5730848a492cd70d68. * test: add comprehensive tests for team billing tables - Fix credit-service.test.ts Prisma mock to export prisma object - Replace any types with proper TypeScript types in credit-service.test.ts - Add unit tests for PrismaTeamBillingRepository covering record creation, enum casting, and error handling - Add unit tests for PrismaOrganizationBillingRepository with same coverage - Add unit tests for BillingRepositoryFactory to verify correct repository selection - Add unit tests for InternalTeamBilling.saveTeamBilling() method testing delegation to correct repositories - All 53 tests pass with TZ=UTC yarn test - Type checking passes with yarn type-check:ci --force Co-Authored-By: joe@cal.com <j.auyeung419@gmail.com> * refactor: update saveTeamBilling tests to mock repository interface - Replace prismaMock usage with BillingRepositoryFactory mock - Mock IBillingRepository interface instead of Prisma directly - Follow repository mocking pattern from handleResponse.test.ts - All tests passing (53 total) Co-Authored-By: joe@cal.com <j.auyeung419@gmail.com> * Remove log statement * Remove repository tests * Address feedback --------- Co-authored-by: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
40 lines
1.8 KiB
TypeScript
40 lines
1.8 KiB
TypeScript
import { describe, it, expect } from "vitest";
|
|
|
|
import { PrismaOrganizationBillingRepository } from "./PrismaOrganizationBillingRepository";
|
|
import { PrismaTeamBillingRepository } from "./PrismaTeamBillingRepository";
|
|
import { BillingRepositoryFactory } from "./billingRepositoryFactory";
|
|
|
|
describe("BillingRepositoryFactory", () => {
|
|
describe("getRepository", () => {
|
|
it("should return PrismaOrganizationBillingRepository when isOrganization is true", () => {
|
|
const repository = BillingRepositoryFactory.getRepository(true);
|
|
|
|
expect(repository).toBeInstanceOf(PrismaOrganizationBillingRepository);
|
|
});
|
|
|
|
it("should return PrismaTeamBillingRepository when isOrganization is false", () => {
|
|
const repository = BillingRepositoryFactory.getRepository(false);
|
|
|
|
expect(repository).toBeInstanceOf(PrismaTeamBillingRepository);
|
|
});
|
|
|
|
it("should return same repository type for multiple calls with same parameter", () => {
|
|
const repository1 = BillingRepositoryFactory.getRepository(true);
|
|
const repository2 = BillingRepositoryFactory.getRepository(true);
|
|
|
|
expect(repository1).toBeInstanceOf(PrismaOrganizationBillingRepository);
|
|
expect(repository2).toBeInstanceOf(PrismaOrganizationBillingRepository);
|
|
});
|
|
|
|
it("should return different repository types for different parameters", () => {
|
|
const orgRepository = BillingRepositoryFactory.getRepository(true);
|
|
const teamRepository = BillingRepositoryFactory.getRepository(false);
|
|
|
|
expect(orgRepository).toBeInstanceOf(PrismaOrganizationBillingRepository);
|
|
expect(teamRepository).toBeInstanceOf(PrismaTeamBillingRepository);
|
|
expect(orgRepository).not.toBeInstanceOf(PrismaTeamBillingRepository);
|
|
expect(teamRepository).not.toBeInstanceOf(PrismaOrganizationBillingRepository);
|
|
});
|
|
});
|
|
});
|