// License: LGPL-3.0-or-later const snabbdom = require('snabbdom') const flyd = require('flyd') const render = require('ff-core/render') const wiz = require("../../../../client/js/nonprofits/donate/wizard") const R = require('ramda') const assert = require('assert') window.log = x => y => console.log(x,y) window.app = { nonprofit: { id: 1 , name: 'test npo' , logo: { normal: {url: 'xyz.com'} } , tagline: 'whasup' } } const patch = snabbdom.init([ require('snabbdom/modules/eventlisteners') , require('snabbdom/modules/class') , require('snabbdom/modules/props') , require('snabbdom/modules/style') ]) const init = params$=> { params$ = params$ || flyd.stream({}) let div = document.createElement('div') let state = wiz.init(params$) let streams = render({ container: div , state: state , patch: patch , view: wiz.view }) streams.state = state return streams } suite("donate wizzzzz") test("initializes amount, info, and payment steps", ()=> { let streams = init() let labels = streams.dom$().querySelectorAll('.ff-wizard-index-label') assert.deepEqual(R.map(R.prop('textContent'), labels), ['Amount', 'Info', 'Payment']) }) test("shows the nonprofit name without a campaign", () => { let streams = init() let title = streams.dom$().querySelector('.titleRow-info h2').textContent assert.equal(title, app.nonprofit.name) }) test("shows the campaign name with a campaign", () => { let streams = init() let title = streams.dom$().querySelector('.titleRow-info h2').textContent assert.equal(title, app.nonprofit.name) }) test("shows the campaign tagline with a campaign", () => { app.campaign = {name: 'campaignxyz', id: 1} let streams = init() let title = streams.dom$().querySelector('.titleRow-info h2').textContent assert.equal(title, app.campaign.name) app.campaign = {} }) test('adds .is-modal class if state.params.offsite$()', ()=> { let streams = init(flyd.stream({offsite: true})) assert.equal(streams.dom$().className.indexOf('is-modal'), 0) }) test('shows the tagline if no designation and no single amount', ()=> { let streams = init() assert.equal(streams.dom$().querySelector('.titleRow-info p').textContent, app.nonprofit.tagline) }) test('shows the designation if designation param set and no single amount', ()=> { const designation = '1312312xyz' let streams = init(flyd.stream({designation})) assert.equal(streams.dom$().querySelector('.titleRow-info p').textContent, ` Designation: ${designation}`) }) test('shows the designation description if it is set and designation param set and no single amount', ()=> { const designation = '1312312xyz' const designation_desc = 'desc23923943' let streams = init(flyd.stream({designation, designation_desc})) assert.equal(streams.dom$().querySelector('.titleRow-info p').textContent, ` Designation: ${designation}${designation_desc}`) }) test('shows the tagline if designation param set and single amount set', ()=> { const designation = '1312312xyz' let streams = init(flyd.stream({designation, single_amount: 1000})) assert.equal(streams.dom$().querySelector('.titleRow-info p').textContent, app.nonprofit.tagline) }) test('hides the footer if no user is in the env', () => { let streams = init() const idx = streams.dom$().querySelector('.donateForm-footer').className.indexOf('hide') assert.notEqual(idx, -1) }) test('shows the footer if a user is in the env', () => { app.user = {email: 'user@example.com', id: 1} let streams = init() const idx = streams.dom$().querySelector('.donateForm-footer').className.indexOf('hide') assert.equal(idx, -1) app.user = {} }) test('shows user info text if a user is in the env', () => { app.user = {email: 'user@example.com', id: 1} let streams = init() const text = streams.dom$().querySelector('.donateForm-footer').textContent assert.equal(text, 'Signed in as user@example.com Logout') app.user = {} })