// StripeJS fixture for using Stripe in feature specs. Mimics credit card form and Element objects. // Based on: https://github.com/thoughtbot/fake_stripe/blob/v0.3.0/lib/fake_stripe/assets/v3.js // The original has been adapted to work with OFN (see commit history for details). class Element { mount(el) { if (typeof el === "string") { el = document.querySelector(el); } el.classList.add('StripeElement'); el.innerHTML = ` `; } addEventListener(event) { return true; } } window.Stripe = () => { const fetchLastFour = () => { return document.getElementById("stripe-cardnumber").value.substr(-4, 4); }; return { createPaymentMethod: () => { return new Promise(resolve => { resolve({ paymentMethod: { id: "pm_123", card: { brand: 'visa', last4: fetchLastFour(), exp_month: "10", exp_year: "2050" } } }); }); }, elements: () => { return { create: (type, options) => new Element() }; }, createToken: card => { return new Promise(resolve => { resolve({ token: { id: "tok_123", card: { last4: fetchLastFour() } } }); }); } }; };