import { createPlanDoc, findPlans, findPlansByQuery, countPlans, updatePlanDoc, getPlansCollection, } from "../plans.getters"; import { Plan } from "../plans.types"; describe("db.plans", () => { const createTestPlan = ( overrides?: Partial, ): Omit => ({ productKey: "basic-500", name: "Basic 500", monthlyCallQuota: 500, currency: "ILS", priceMonthlyMinor: 10000, isActive: true, ...overrides, }); it("should create and find a plan", async () => { const planData = createTestPlan({ name: "CreateTest" }); const created = await createPlanDoc(planData); expect(created._id).toBeDefined(); expect(created.name).toBe("CreateTest"); const found = await findPlans({ _id: created._id }); expect(found.length).toBe(1); expect(found[0].name).toBe("CreateTest"); }); it("should find plans by query with limit", async () => { await getPlansCollection().deleteMany({}); await createPlanDoc(createTestPlan({ productKey: "p1", isActive: true })); await createPlanDoc(createTestPlan({ productKey: "p2", isActive: true })); await createPlanDoc(createTestPlan({ productKey: "p3", isActive: false })); const activePlans = await findPlansByQuery( { isActive: true }, { limit: 1 }, ); expect(activePlans.length).toBe(1); expect(activePlans[0].isActive).toBe(true); }); it("should count plans matching query", async () => { await getPlansCollection().deleteMany({}); await createPlanDoc(createTestPlan({ currency: "USD" })); await createPlanDoc(createTestPlan({ currency: "USD" })); await createPlanDoc(createTestPlan({ currency: "ILS" })); const count = await countPlans({ currency: "USD" }); expect(count).toBe(2); }); it("should update a plan", async () => { const plan = await createPlanDoc(createTestPlan({ isActive: true })); const updated = await updatePlanDoc(plan._id, { isActive: false }); expect(updated).not.toBeNull(); expect(updated?.isActive).toBe(false); const found = await findPlans({ _id: plan._id }); expect(found[0].isActive).toBe(false); }); });