import { PlanApi } from '../../api/planApi';  // Adjust path accordingly
import * as sinon from 'sinon';

describe('PlanApi Unit Test', () => {
    let planApiStub: sinon.SinonStubbedInstance<PlanApi>;

    beforeEach(() => {
        // Create a stub instance for the PlanApi class
        planApiStub = sinon.createStubInstance(PlanApi);

        planApiStub.getBalanceDocumentCredits = sinon.stub().resolves({
            balanceCredits: 150,
        });

        planApiStub.someOtherMethod = sinon.stub().resolves({ success: true });
    });

    afterEach(() => {
        sinon.restore();
    });

    it('should mock and verify getBalanceDocumentCredits call', async () => {
        const expectedBalance = {
            balanceCredits: 150,
        };

        const result = await planApiStub.getBalanceDocumentCredits();

        expect(result).toBeDefined();
        expect(result.balanceCredits).toBe(150);

        sinon.assert.calledOnce(planApiStub.getBalanceDocumentCredits);
    });
});