/* eslint-disable @typescript-eslint/no-var-requires */ describe('pure module', () => { const ONRAMP_SCRIPT_SELECTOR = 'script[src^="https://crypto-js.stripe.com/crypto-onramp-outer.js"]'; const SCRIPT_SELECTOR = 'script[src^="https://js.stripe.com/v3"]'; beforeEach(() => { jest.spyOn(console, 'warn').mockReturnValue(); }); afterEach(() => { const scripts = Array.from( document.querySelectorAll(`${SCRIPT_SELECTOR}, ${ONRAMP_SCRIPT_SELECTOR}`) ); for (const script of scripts) { if (script.parentElement) { script.parentElement.removeChild(script); } } delete window.Stripe; delete window.StripeOnramp; jest.resetModules(); jest.restoreAllMocks(); }); test('does not inject the script if loadStripe is not called', async () => { require('./pure'); expect(document.querySelector(SCRIPT_SELECTOR)).toBe(null); expect(document.querySelector(ONRAMP_SCRIPT_SELECTOR)).toBe(null); }); test('it injects the script if loadStripe is called', async () => { const {loadStripeOnramp} = require('./pure'); loadStripeOnramp('pk_test_foo'); expect(document.querySelector(SCRIPT_SELECTOR)).not.toBe(null); expect(document.querySelector(ONRAMP_SCRIPT_SELECTOR)).not.toBe(null); }); test('it can load the script with advanced fraud signals disabled', async () => { const {loadStripe} = require('@stripe/stripe-js/pure'); loadStripe.setLoadParameters({advancedFraudSignals: false}); const {loadStripeOnramp} = require('./pure'); loadStripeOnramp('pk_test_foo'); expect( document.querySelector( 'script[src^="https://js.stripe.com/v3?advancedFraudSignals=false"]' ) ).not.toBe(null); expect(document.querySelector(ONRAMP_SCRIPT_SELECTOR)).not.toBe(null); }); });