UNPKG

1.86 kBPlain TextView Raw
1import {validateLoadParams, findScript} from './shared';
2
3describe('validateLoadParams', () => {
4 const INVALID_INPUTS: any[] = [
5 [undefined],
6 [false],
7 [null],
8 [true],
9 [{}],
10 [8],
11 [{advancedFraud: true}],
12 [{advancedFraudSignals: true, someOtherKey: true}],
13 [{advancedFraudSignals: 'true'}],
14 ];
15
16 test.each(INVALID_INPUTS)('throws on invalid input: %p', (input) => {
17 expect(() => validateLoadParams(input)).toThrow('invalid load parameters');
18 });
19
20 test('validates valid input', () => {
21 expect(validateLoadParams({advancedFraudSignals: true})).toEqual({
22 advancedFraudSignals: true,
23 });
24
25 expect(validateLoadParams({advancedFraudSignals: false})).toEqual({
26 advancedFraudSignals: false,
27 });
28 });
29});
30
31describe('findScript', () => {
32 const CASES: Array<[string, boolean]> = [
33 ['https://js.stripe.com/v3?advancedFraudSignals=true', true],
34 ['https://js.stripe.com/v3', true],
35 ['https://js.stripe.com/v3/', true],
36 ['https://js.stripe.com/v3?advancedFraudSignals=false', true],
37 ['https://js.stripe.com/v3?ab=cd', true],
38 ['https://js.stripe.com/v3/something.js', false],
39 ['https://js.stripe.com/v3/something.js?advancedFraudSignals=false', false],
40 ['https://js.stripe.com/v3/something.js?ab=cd', false],
41 ];
42
43 afterEach(() => {
44 for (const [url] of CASES) {
45 const script = document.querySelector(`script[src="${url}"]`);
46
47 if (script && script.parentElement) {
48 script.parentElement.removeChild(script);
49 }
50 }
51
52 delete window.Stripe;
53 });
54
55 test.each(CASES)(
56 'findScript with <script src="%s"></script>',
57 (url, shouldBeFound) => {
58 const script = document.createElement('script');
59 script.src = url;
60 document.body.appendChild(script);
61
62 expect(!!findScript()).toBe(shouldBeFound);
63 }
64 );
65});