import { beforeEach, describe, expect, it, vi } from 'vitest' vi.mock('../../lib/prisma', () => ({ prisma: { company: { findUniqueOrThrow: vi.fn(), update: vi.fn(), findFirst: vi.fn() }, brandSettings: { findUnique: vi.fn(), upsert: vi.fn(), findFirst: vi.fn(), updateMany: vi.fn() }, contractSettings: { findUnique: vi.fn(), upsert: vi.fn() }, insurancePolicy: { findMany: vi.fn(), create: vi.fn(), updateMany: vi.fn(), findUniqueOrThrow: vi.fn(), deleteMany: vi.fn() }, pricingRule: { findMany: vi.fn(), create: vi.fn(), updateMany: vi.fn(), findUniqueOrThrow: vi.fn(), deleteMany: vi.fn() }, accountingSettings: { findUnique: vi.fn(), upsert: vi.fn() }, }, })) import { prisma } from '../../lib/prisma' import * as repo from './company.repo' describe('company.repo edge queries', () => { beforeEach(() => vi.clearAllMocks()) it('loads a company dashboard envelope with brand, subscription and counts', async () => { await repo.findCompany('company_1') expect(prisma.company.findUniqueOrThrow).toHaveBeenCalledWith({ where: { id: 'company_1' }, include: { brand: true, subscription: true, _count: { select: { vehicles: true, customers: true, reservations: true } }, }, }) }) it('upserts brand settings with companyId only in the create branch', async () => { await repo.upsertBrand('company_1', { logoUrl: '/new.png' }, { primaryColor: '#111111' }) expect(prisma.brandSettings.upsert).toHaveBeenCalledWith({ where: { companyId: 'company_1' }, update: { logoUrl: '/new.png' }, create: { companyId: 'company_1', primaryColor: '#111111' }, }) }) it('orders insurance policies by required status, sort order and name', async () => { await repo.findInsurancePolicies('company_1') expect(prisma.insurancePolicy.findMany).toHaveBeenCalledWith({ where: { companyId: 'company_1' }, orderBy: [{ isRequired: 'desc' }, { sortOrder: 'asc' }, { name: 'asc' }], }) }) it('updates and deletes pricing rules inside the tenant boundary', async () => { await repo.updatePricingRule('rule_1', 'company_1', { isActive: false }) await repo.deletePricingRule('rule_1', 'company_1') expect(prisma.pricingRule.updateMany).toHaveBeenCalledWith({ where: { id: 'rule_1', companyId: 'company_1' }, data: { isActive: false }, }) expect(prisma.pricingRule.deleteMany).toHaveBeenCalledWith({ where: { id: 'rule_1', companyId: 'company_1' } }) }) it('detects duplicate public branding outside the current company', async () => { await repo.findBrandBySubdomain('atlas', 'company_1') await repo.findBrandByCustomDomain('cars.example.test', 'company_1') expect(prisma.brandSettings.findFirst).toHaveBeenNthCalledWith(1, { where: { subdomain: 'atlas', companyId: { not: 'company_1' } }, }) expect(prisma.brandSettings.findFirst).toHaveBeenNthCalledWith(2, { where: { customDomain: 'cars.example.test', companyId: { not: 'company_1' } }, }) }) it('clears custom domain verification metadata in one tenant-scoped mutation', async () => { await repo.clearCustomDomain('company_1') expect(prisma.brandSettings.updateMany).toHaveBeenCalledWith({ where: { companyId: 'company_1' }, data: { customDomain: null, customDomainVerified: false, customDomainAddedAt: null }, }) }) })