From 93a5da990e2604e36a27c9c7199ae39ba20c4876 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rafael=20L=C3=BCder?= Date: Fri, 16 Dec 2016 23:16:34 -0600 Subject: [PATCH] Add template and styles for bank-account component Bind to properties and actions Added error rendering, busy state, action handling at route level Add icon for verified accounts Fix project settings menu --- app/components/payments/bank-account.js | 16 +++- .../project/settings/donations/payments.js | 70 +++++++++++++++- app/styles/_colors.scss | 3 +- app/styles/_icons.scss | 3 +- app/styles/app.scss | 2 + .../components/payments/account-setup.scss | 55 +++++++++++++ .../components/payments/bank-account.scss | 10 +++ .../components/payments/account-setup.hbs | 11 +-- .../components/payments/bank-account.hbs | 40 ++++++--- .../components/project-settings-menu.hbs | 4 +- .../project/settings/donations/payments.hbs | 6 +- public/assets/images/icons/sprite.png | Bin 11796 -> 10505 bytes public/assets/images/icons/sprite@2x.png | Bin 25109 -> 21601 bytes .../components/payments/bank-account-test.js | 77 +++++++++++++++--- .../components/project-settings-menu-test.js | 4 +- .../pages/components/payments/bank-account.js | 24 +++++- 16 files changed, 281 insertions(+), 44 deletions(-) create mode 100644 app/styles/components/payments/account-setup.scss create mode 100644 app/styles/components/payments/bank-account.scss diff --git a/app/components/payments/bank-account.js b/app/components/payments/bank-account.js index 606b5d7c3..3c19424f1 100644 --- a/app/components/payments/bank-account.js +++ b/app/components/payments/bank-account.js @@ -1,9 +1,21 @@ import Ember from 'ember'; const { - Component + Component, + computed, + get } = Ember; export default Component.extend({ - classNames: ['bank-account'] + classNameBindings: ['statusClass'], + classNames: ['bank-account', 'account-setup__section'], + + accountNumber: '000123456789', + routingNumber: '110000000', + + status: computed.alias('account.bankAccountStatus'), + + statusClass: computed('status', function() { + return `account-setup__section--${get(this, 'status')}`; + }) }); diff --git a/app/controllers/project/settings/donations/payments.js b/app/controllers/project/settings/donations/payments.js index 1c2aa71bd..ee8fc1fae 100644 --- a/app/controllers/project/settings/donations/payments.js +++ b/app/controllers/project/settings/donations/payments.js @@ -1,17 +1,26 @@ import Ember from 'ember'; +import FriendlyError from 'code-corps-ember/utils/friendly-error'; + const { computed: { alias }, Controller, get, inject: { service }, - merge + merge, + RSVP, + set } = Ember; +const ACCOUNT_TOKEN_CREATION_ERROR = 'There was a problem in using your bank account information. Please check your input and try again.'; +const ACCOUNT_ADDING_ERROR = 'There was a problem in attaching the provided bank account information to your Stripe account.'; + export default Controller.extend({ currentUser: service(), store: service(), + stripe: service(), user: alias('currentUser.user'), + stripeConnectAccount: alias('project.organization.stripeConnectAccount'), actions: { onRecipientInformationSubmitted(organization, email, recipientInformation) { @@ -20,8 +29,63 @@ export default Controller.extend({ .save(); }, - onBankAccountInformationSubmitted(/* bankAccountInformation */) { - // TODO: Handle receiving bank account information + onBankAccountInformationSubmitted({ accountNumber, routingNumber }) { + set(this, 'isBusy', true); + + let promises = { + tokenData: this._createAccountToken(accountNumber, routingNumber), + stripeConnectAccount: get(this, 'stripeConnectAccount') + }; + + RSVP.hash(promises) + .then(({ tokenData, stripeConnectAccount }) => this._addBankAccount(tokenData, stripeConnectAccount)) + .catch((response) => this._handleError(response)) + .finally(() => set(this, 'isBusy', false)); } + }, + + // adding bank account information + + _createAccountToken(accountNumber, routingNumber) { + let stripe = get(this, 'stripe'); + let params = this._bankAccountTokenParams(accountNumber, routingNumber); + + return stripe.bankAccount.createToken(params) + .then((stripeResponse) => RSVP.resolve(stripeResponse)) + .catch((reason) => this._handleBankAccountTokenError(reason)); + }, + + _handleBankAccountTokenError() { + let friendlyError = new FriendlyError(ACCOUNT_TOKEN_CREATION_ERROR); + return RSVP.reject(friendlyError); + }, + + _addBankAccount(tokenData, stripeConnectAccount) { + set(stripeConnectAccount, 'externalAccount', tokenData.id); + + return stripeConnectAccount.save() + .then((stripeConnectAccount) => RSVP.resolve(stripeConnectAccount)) + .catch((reason) => this._handleAddBankAccountError(reason)); + }, + + _handleAddBankAccountError() { + let friendlyError = new FriendlyError(ACCOUNT_ADDING_ERROR); + return RSVP.reject(friendlyError); + }, + + _bankAccountTokenParams(accountNumber, routingNumber) { + return { + account_number: accountNumber, + routing_number: routingNumber, + object: 'bank_account', + country: 'US', + currency: 'USD' + }; + }, + + // setting error property + + _handleError(error) { + this.set('error', error); } }); diff --git a/app/styles/_colors.scss b/app/styles/_colors.scss index 8afa7167b..5ebae6b24 100644 --- a/app/styles/_colors.scss +++ b/app/styles/_colors.scss @@ -71,10 +71,11 @@ $taskTypeTextOnBackgroundColors: ( $light-red-background: #FFE5E1; $light-blue-background: #EDF9FF; +$light-green-background: #EFFFEE; $idea-background: #FFF9DE; $issue-background: $light-red-background; -$progress-background: #EFFFEE; +$progress-background: $light-green-background; $task-background: $light-blue-background; $taskTypeBackgrounds: ( diff --git a/app/styles/_icons.scss b/app/styles/_icons.scss index 95107757e..4413b2b28 100644 --- a/app/styles/_icons.scss +++ b/app/styles/_icons.scss @@ -15,7 +15,7 @@ $spritePath: '/assets/images/icons/sprite'; $spriteURL: $spritePath + '.png'; $spritex2URL: $spritePath + '@2x.png'; $sprite-bgiSizeW: 230px; -$sprite-bgiSizeH: 304px; +$sprite-bgiSizeH: 324px; $logo: 230px 50px $spriteURL 0px 0px $spritex2URL; $logo-small: 161px 35px $spriteURL 0px -50px $spritex2URL; $location: 16px 16px $spriteURL 0px -85px $spritex2URL; @@ -59,6 +59,7 @@ $calendar: 20px 20px $spriteURL -42px -268px $spritex2URL; $task-small: 16px 16px $spriteURL 0px -288px $spritex2URL; $issue-small: 16px 16px $spriteURL -16px -288px $spritex2URL; $idea-small: 16px 16px $spriteURL -32px -288px $spritex2URL; +$tick-green-large: 20px 20px $spriteURL 0px -304px $spritex2URL; .box-icon { @include sprite($box); diff --git a/app/styles/app.scss b/app/styles/app.scss index c0e790526..1a377fdab 100644 --- a/app/styles/app.scss +++ b/app/styles/app.scss @@ -50,6 +50,8 @@ @import "components/navigation-menu"; @import "components/organization-header"; @import "components/organization-members"; +@import "components/payments/account-setup"; +@import "components/payments/bank-account"; @import "components/pager-control"; @import "components/task-card"; @import "components/task-comment-list"; diff --git a/app/styles/components/payments/account-setup.scss b/app/styles/components/payments/account-setup.scss new file mode 100644 index 000000000..1ce0db356 --- /dev/null +++ b/app/styles/components/payments/account-setup.scss @@ -0,0 +1,55 @@ +// +// ACCOUNT SETUP SECTIONS +// +.account-setup__section { + align-items: center; + background-color: #FCFCFC; + border: 1px solid #DDD; + border-radius: 4px; + display: flex; + min-height: 4em; + padding: 1.5em; + + aside { + @include span-columns(3); + align-self: baseline; + } + + h1 { + font-size: 1.1em; + font-weight: normal; + margin: 0; + } + + label { + display: block; + font-weight: 600; + margin-bottom: .3em; + } + + section { + @include span-columns(9); + } +} + +// +// STATES +// +.account-setup__section--required { + @include outer-container; +} + +.account-setup__section--verified { + background-color: $light-green-background; + border-color: $green; + + aside h1:before { + content: ""; + display: block; + float: left; + height: 20px; + margin: 0 10px 0 0; + width: 24px; + @include sprite($tick-green-large); + } +} diff --git a/app/styles/components/payments/bank-account.scss b/app/styles/components/payments/bank-account.scss new file mode 100644 index 000000000..e19e6c30e --- /dev/null +++ b/app/styles/components/payments/bank-account.scss @@ -0,0 +1,10 @@ +// +// ACCOUNT INFORMATION +// +.bank-account__account { + @extend .input-group; +} + +.bank-account__routing { + @extend .input-group; +} diff --git a/app/templates/components/payments/account-setup.hbs b/app/templates/components/payments/account-setup.hbs index ca83e60e3..438c82af5 100644 --- a/app/templates/components/payments/account-setup.hbs +++ b/app/templates/components/payments/account-setup.hbs @@ -1,18 +1,9 @@

Create a Stripe account for {{organizationName}}

-{{! - TODO: - Account setup should decide if it should render the "form" - for each section, or a "done" component for that particular data. - - Possibly, even, the payments controller should decide and then - pass in flags to the account setup, but that might be overkill. -}} {{payments/contact-info email=email}} {{payments/funds-recipient fundsRecipient=fundsRecipient recipientInformationSubmitted=(action onRecipientInformationSubmitted email)}} -{{payments/bank-account - bankAccountInformationSubmitted=(action onBankAccountInformationSubmitted)}} +{{payments/bank-account account=account isBusy=isBusy submit=(action onBankAccountInformationSubmitted)}} diff --git a/app/templates/components/payments/bank-account.hbs b/app/templates/components/payments/bank-account.hbs index 8a57174ff..9816599e6 100644 --- a/app/templates/components/payments/bank-account.hbs +++ b/app/templates/components/payments/bank-account.hbs @@ -1,12 +1,30 @@ -
- - {{input type="text" name="routing-number" value=routingNumber}} -
-
- - {{input type="text" name="account-number" value=accountNumber}} -
+ - \ No newline at end of file +{{#if (eq status 'required')}} +
+ + + +
+{{/if}} + +{{#if (eq status 'verified')}} +
+ + +
+{{/if}} diff --git a/app/templates/components/project-settings-menu.hbs b/app/templates/components/project-settings-menu.hbs index ea89a999d..d7e2ec01d 100644 --- a/app/templates/components/project-settings-menu.hbs +++ b/app/templates/components/project-settings-menu.hbs @@ -5,10 +5,10 @@ {{link-to "Contributors" "project.settings.contributors" project.slug}}
  • - {{link-to "Donations" "project.settings.donations.goals" project.slug}} + {{link-to "Donation goals" "project.settings.donations.goals" project.slug}}
  • - {{link-to "Payments" "project.settings.donations.payments" project.slug}} + {{link-to "Payment settings" "project.settings.donations.payments" project.slug}}
  • {{link-to "Basic settings" "project.settings.profile" project.slug}} diff --git a/app/templates/project/settings/donations/payments.hbs b/app/templates/project/settings/donations/payments.hbs index 60e73e85b..f5b23fc1f 100644 --- a/app/templates/project/settings/donations/payments.hbs +++ b/app/templates/project/settings/donations/payments.hbs @@ -1,6 +1,10 @@ {{payments/account-setup - email=user.email + account=project.organization.stripeConnectAccount + isBusy=isBusy onBankAccountInformationSubmitted=(action 'onBankAccountInformationSubmitted') onRecipientInformationSubmitted=(action 'onRecipientInformationSubmitted' project.organization) organizationName=project.organization.name }} +{{#if error}} + {{error-formatter error=error}} +{{/if}} \ No newline at end of file diff --git a/public/assets/images/icons/sprite.png b/public/assets/images/icons/sprite.png index 925ab848b0dab60ca537b42e754e65e7ffc977ca..f7f9eb408af2cae033cf22f14fb88d6113845aa9 100644 GIT binary patch literal 10505 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 Hu0mjfY+_0~ literal 25109 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 diff --git a/tests/integration/components/payments/bank-account-test.js b/tests/integration/components/payments/bank-account-test.js index fe870aa16..5e868b30a 100644 --- a/tests/integration/components/payments/bank-account-test.js +++ b/tests/integration/components/payments/bank-account-test.js @@ -9,11 +9,8 @@ const { K } = Ember; let page = PageObject.create(bankAccountComponent); -function setHandler(context, bankAccountInformationSubmittedHandler = K) { - context.set( - 'bankAccountInformationSubmittedHandler', - bankAccountInformationSubmittedHandler - ); +function setHandler(context, submitHandler = K) { + context.set('submitHandler', submitHandler); } moduleForComponent('payments/bank-account', 'Integration | Component | payments/bank account', { @@ -27,11 +24,71 @@ moduleForComponent('payments/bank-account', 'Integration | Component | payments/ } }); -test('it renders', function(assert) { - page.render(hbs`{{payments/bank-account bankAccountInformationSubmitted=bankAccountInformationSubmittedHandler}}`); - assert.equal(this.$('.bank-account').length, 1, 'Component renders'); +test('it renders correctly for "pending" status', function(assert) { + assert.expect(1); + + let account = { bankAccountStatus: 'pending_requirement' }; + this.set('account', account); + + page.render(hbs`{{payments/bank-account account=account submit=submitHandler}}`); + assert.ok(page.rendersPending, 'Component is rendered in pending status.'); +}); + +test('it renders correctly for "required" status', function(assert) { + assert.expect(4); + + let account = { bankAccountStatus: 'required' }; + this.set('account', account); + + page.render(hbs`{{payments/bank-account account=account submit=submitHandler}}`); + assert.ok(page.rendersRequired, 'Component is rendered in required mode.'); + assert.ok(page.rendersAccountNumberField, 'Component renders the account number field.'); + assert.ok(page.rendersRoutingNumberField, 'Component renders the routing number field.'); + assert.ok(page.rendersSubmitButton, 'Component renders the submit button.'); +}); + +test('it renders correctly for "verified" status', function(assert) { + assert.expect(3); + + let account = { bankAccountLast4: 4321, bankAccountRoutingNumber: 123456, bankAccountStatus: 'verified' }; + this.set('account', account); + + page.render(hbs`{{payments/bank-account account=account submit=submitHandler}}`); + assert.ok(page.rendersVerified, 'Component is rendered in verified mode.'); + assert.equal(page.accountLast4Text, 4321, 'Component renders last 4 digits of account number.'); + assert.equal(page.routingNumberText, 123456, 'Component renders routing number.'); }); -// TODO: Write tests, remove 'it renders' test +test('it sends properties with submit action', function(assert) { + assert.expect(1); -// test('it sends out bank account parameters on submit') + let account = { bankAccountStatus: 'required' }; + this.set('account', account); + + let input = { + routingNumber: '123456', + accountNumber: '654321' + }; + + setHandler(this, (output) => { + assert.deepEqual(output, input, 'Correct parameters were sent out with action.'); + }); + + page.render(hbs`{{payments/bank-account account=account submit=submitHandler}}`) + .accountNumber(input.accountNumber) + .routingNumber(input.routingNumber) + .clickSubmit(); +}); + +test('it disables controls when busy', function(assert) { + assert.expect(3); + + let account = { bankAccountStatus: 'required' }; + this.set('account', account); + + page.render(hbs`{{payments/bank-account account=account isBusy=true submit=submitHandler}}`); + + assert.ok(page.accountNumberFieldIsDisabled, 'Account number field is disabled when busy.'); + assert.ok(page.routingNumberFieldIsDisabled, 'Routing number field is disabled when buys.'); + assert.ok(page.submitButtonIsDisabled, 'Submit button is disabled when busy.'); +}); diff --git a/tests/integration/components/project-settings-menu-test.js b/tests/integration/components/project-settings-menu-test.js index 6852f9637..eae38bb9f 100644 --- a/tests/integration/components/project-settings-menu-test.js +++ b/tests/integration/components/project-settings-menu-test.js @@ -26,8 +26,8 @@ test('when authenticated and can manage organization, it renders properly', func assert.equal(this.$('.project-settings-menu').length, 1, 'The component itself renders'); assert.equal(this.$('.project-settings-menu li').length, 4, 'The list items render'); assert.equal(this.$('li a:contains("Contributors")').length, 1, 'The contributors link renders'); - assert.equal(this.$('li a:contains("Donations")').length, 1, 'The donations link renders'); - assert.equal(this.$('li a:contains("Payments")').length, 1, 'The payments link renders'); + assert.equal(this.$('li a:contains("Donation goals")').length, 1, 'The donation goals link renders'); + assert.equal(this.$('li a:contains("Payment settings")').length, 1, 'The payment settings link renders'); assert.equal(this.$('li a:contains("Basic settings")').length, 1, 'The basic settings link renders'); }); diff --git a/tests/pages/components/payments/bank-account.js b/tests/pages/components/payments/bank-account.js index 8794276b2..ecf0a56b4 100644 --- a/tests/pages/components/payments/bank-account.js +++ b/tests/pages/components/payments/bank-account.js @@ -1,3 +1,25 @@ +import { clickable, fillable, is, isVisible, hasClass, text } from 'ember-cli-page-object'; + export default { - scope: '.bank-account' + scope: '.bank-account', + + rendersPending: hasClass('account-setup__section--pending_requirement'), + rendersRequired: hasClass('account-setup__section--required'), + rendersVerified: hasClass('account-setup__section--verified'), + + rendersAccountNumberField: isVisible('[name=account-number]'), + rendersRoutingNumberField: isVisible('[name=routing-number]'), + rendersSubmitButton:isVisible('button'), + + accountLast4Text: text('.bank-account__account p'), + routingNumberText: text('.bank-account__routing p'), + + accountNumber: fillable('[name=account-number]'), + routingNumber: fillable('[name=routing-number]'), + + clickSubmit: clickable('button'), + + accountNumberFieldIsDisabled: is(':disabled', '[name=account-number]'), + routingNumberFieldIsDisabled: is(':disabled', '[name=routing-number]'), + submitButtonIsDisabled: is(':disabled', 'button') };