I have the below code:
import { expect } from 'chai'
import * as sinon from 'sinon'
import { runStripeOnboarding } from '../../src/vetting/helper/stripe-onboarding-helper'
import { API } from '../../src/apis'
import { Register, UUID } from '@boostercloud/framework-types'
import { Provider } from '../../src/entities/provider'
import { faker } from '@faker-js/faker'
import * as Capabilities from '../../src/capabilities'
import Stripe from 'stripe'
import * as entityHelpers from '../../src/helpers/entity-helpers'
import * as dataModelTransformation from '../../src/common/datamodel-transformations'
import * as stripeApiHelper from '../../src/helpers/stripe-api-helper'
import * as logger from '../../src/logger'
describe('Stripe Onboarding Helper', () => {
let provider: Provider, kycId: UUID, bankVettingWorkflowId: UUID, register: Register
const LOGGER = sinon.replace(
logger,
'getLogger',
sinon.fake.returns({
info: () => sinon.stub(),
warn: () => sinon.stub(),
error: () => sinon.stub(),
})
)
beforeEach(() => {
const tin = faker.random.alphaNumeric(9)
const username = faker.internet.userName()
const baseCurrentUser = {
id: faker.datatype.uuid(),
username,
roles: [Capabilities.KYCSubmitter.name],
claims: {
jti: faker.datatype.uuid(),
validatedTIN: tin,
validatedTINForDelegation: true,
otpGenerationTries: 0,
otpValidated: false,
username,
firstName: faker.name.firstName(),
lastName: faker.name.lastName(),
email: faker.internet.email(),
},
}
provider = {
id: faker.random.alphaNumeric(9),
providerName: 'Test Provider',
tin: '123456789',
stripeAccount: undefined,
status: 'OnboardingAccountCreated',
salesforceStatus: {
updateRequired: false,
},
latestKYCOrThrow: () =>
Promise.resolve({
id: faker.random.uuid(),
tin,
status: 'KYCSubmitted',
statusTransitions: [],
hasRelatedAcceptedOffer: false,
hasKYCApprovalExpired: () => false,
approvalDate: () => faker.datatype.string(25),
}),
latestKYC: () =>
Promise.resolve({
id: faker.random.uuid(),
tin,
status: 'KYCSubmitted',
statusTransitions: [],
hasRelatedAcceptedOffer: false,
hasKYCApprovalExpired: () => false,
approvalDate: () => faker.datatype.string(25),
}),
latestApprovedKYC: () => Promise.resolve(undefined),
latestUnexpiredApprovedKYC: () => Promise.resolve(undefined),
}
kycId = 'kyc-123'
bankVettingWorkflowId = 'workflow-123'
register = new Register(faker.datatype.uuid(), {}, sinon.stub(), baseCurrentUser)
})
afterEach(() => {
sinon.restore()
})
it.only('should create a new Stripe account if not already exists', async () => {
sinon.replace(
API.Stripe.accounts,
'create',
sinon.fake.resolves({ id: 'acct_123', created: Date.now() } as unknown as Stripe.Response<Stripe.Account>)
)
sinon.stub(API.Stripe.accounts, 'update')
sinon.replace(
API.Stripe.accounts,
'listPersons',
sinon.fake.resolves({ data: [], has_more: false } as unknown as Stripe.Response<Stripe.ApiList<Stripe.Person>>)
)
sinon.replace(entityHelpers, 'getKYCOrThrow', sinon.fake.returns({ submittedKYC: {} }))
sinon.replace(dataModelTransformation, 'toUnsafeProviderKYCInfo', sinon.fake.resolves({}))
sinon.replace(
stripeApiHelper,
'getStripeReqParams',
sinon.fake.returns({ paramsToCreateAccount: {}, paramsToAddPersons: [] })
)
await runStripeOnboarding(provider, kycId, bankVettingWorkflowId, register)
expect(LOGGER).to.have.been.calledWith(
`Created Stripe connected account for the provider - ${provider.providerName}`
)
})
})
I want to compare arguments for my LOGGER.info()
which, I create using: const LOGGER: Logger = getLogger('StripeVettingHelper')
in the same file where runStripeOnboarding()
is defined.
When I am running the test, the call count to LOGGER
is 0
.
What am I doing wrong?