Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions app/controllers/project/settings/donations.js
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,10 @@ export default Controller.extend({
}
},

reloadAccount() {
get(this, 'stripeConnectAccount').reload();
},

/**
* Action which commits changes to a donation goal.
*
Expand Down
6 changes: 3 additions & 3 deletions app/templates/components/donation-goals.hbs
Original file line number Diff line number Diff line change
Expand Up @@ -43,8 +43,8 @@
{{/if}}
{{/each}}

<p>
{{#if canAdd}}
<button class="clear add" {{action add project}}>Add Goal</button>
<p>
<button class="clear add" {{action add project}}>Add Goal</button>
</p>
{{/if}}
</p>
25 changes: 18 additions & 7 deletions app/templates/project/settings/donations.hbs
Original file line number Diff line number Diff line change
@@ -1,12 +1,23 @@
<div class="settings-main">
{{#if stripeConnectAccount}}
{{donation-goals
add=(action 'addDonationGoal')
cancel=(action 'cancelDonationGoal')
edit=(action 'editDonationGoal')
project=project
save=(action 'saveDonationGoal')
activateDonations=(action 'activateDonations' project)}}
{{#if stripeConnectAccount.chargesEnabled}}
{{donation-goals
add=(action 'addDonationGoal')
cancel=(action 'cancelDonationGoal')
edit=(action 'editDonationGoal')
project=project
save=(action 'saveDonationGoal')
activateDonations=(action 'activateDonations' project)}}
{{else}}
<h3>Awaiting Stripe verification...</h3>
<p>Your organization is now connected to stripe, but stripe still needs to verify your account</p>
<button
{{action 'reloadAccount'}}
class="{{unless stripeConnectAccount.isReloading "default"}} refresh"
disabled={{stripeConnectAccount.isReloading}}>
{{#if stripeConnectAccount.isReloading}}Refreshing...{{else}}Refresh status{{/if}}
</button>
{{/if}}
{{else}}
{{#if stripeAuth}}
<div class="header-section">
Expand Down
50 changes: 39 additions & 11 deletions tests/acceptance/project-donation-goals-test.js
Original file line number Diff line number Diff line change
Expand Up @@ -36,12 +36,40 @@ test('it redirects to project list page if user is not allowed to manage donatio
});
});

test('it allows refreshing account if account does not have charges enabled yet', function(assert) {
assert.expect(3);

let project = createProjectWithSluggedRoute();
let { organization } = project;
let account = organization.createStripeConnectAccount({ chargesEnabled: false });

authenticateAsMemberOfRole(this.application, server, organization, 'owner');

projectSettingsDonationsPage.visit({ organization: organization.slug, project: project.slug });

andThen(() => {
server.get('stripe-connect-accounts/:id', function() {
assert.ok(true, 'Refresh was called');
account.chargesEnabled = true;

return account;
});

assert.equal(projectSettingsDonationsPage.editedDonationGoals().count, 0, 'Form is not visible');
projectSettingsDonationsPage.clickRefreshAccount();
});

andThen(() => {
assert.equal(projectSettingsDonationsPage.editedDonationGoals().count, 1, 'Form is now visible');
});
});

test('it renders existing donation goals', function(assert) {
assert.expect(1);

let project = createProjectWithSluggedRoute();
let { organization } = project;
organization.createStripeConnectAccount();
organization.createStripeConnectAccount({ chargesEnabled: true });
server.createList('donation-goal', 3, { project });
server.createList('donation-goal', 2);

Expand All @@ -59,7 +87,7 @@ test('it sets up a new unsaved donation goal if there are no donation goals, whi

let project = createProjectWithSluggedRoute();
let { organization } = project;
organization.createStripeConnectAccount();
organization.createStripeConnectAccount({ chargesEnabled: true });

authenticateAsMemberOfRole(this.application, server, organization, 'owner');

Expand Down Expand Up @@ -87,7 +115,7 @@ test('it is possible to add a donation goal when donation goals already exists',

let project = createProjectWithSluggedRoute();
let { organization } = project;
organization.createStripeConnectAccount();
organization.createStripeConnectAccount({ chargesEnabled: true });
server.createList('donation-goal', 1, { project });

authenticateAsMemberOfRole(this.application, server, organization, 'owner');
Expand Down Expand Up @@ -116,7 +144,7 @@ test('it allows editing of existing donation goals', function(assert) {

let project = createProjectWithSluggedRoute();
let { organization } = project;
organization.createStripeConnectAccount();
organization.createStripeConnectAccount({ chargesEnabled: true });
server.createList('donation-goal', 1, { project });

authenticateAsMemberOfRole(this.application, server, organization, 'owner');
Expand Down Expand Up @@ -145,7 +173,7 @@ test('cancelling edit of an unsaved new goal removes that goal from the list', f

let project = createProjectWithSluggedRoute();
let { organization } = project;
organization.createStripeConnectAccount();
organization.createStripeConnectAccount({ chargesEnabled: true });
server.createList('donation-goal', 1, { project });

authenticateAsMemberOfRole(this.application, server, organization, 'owner');
Expand All @@ -169,7 +197,7 @@ test('cancelling edit of an unsaved existing goal keeps that goal in the list',

let project = createProjectWithSluggedRoute();
let { organization } = project;
organization.createStripeConnectAccount();
organization.createStripeConnectAccount({ chargesEnabled: true });
server.createList('donation-goal', 1, { project });

authenticateAsMemberOfRole(this.application, server, organization, 'owner');
Expand All @@ -193,7 +221,7 @@ test('it allows activating donations for the project', function(assert) {

let project = createProjectWithSluggedRoute();
let { organization } = project;
organization.createStripeConnectAccount();
organization.createStripeConnectAccount({ chargesEnabled: true });
server.createList('donation-goal', 1, { project });

authenticateAsMemberOfRole(this.application, server, organization, 'owner');
Expand All @@ -220,7 +248,7 @@ test('it shows donation progress if donations are active', function(assert) {
organization
});

organization.createStripeConnectAccount();
organization.createStripeConnectAccount({ chargesEnabled: true });
server.createList('donation-goal', 1, { project });

authenticateAsMemberOfRole(this.application, server, organization, 'owner');
Expand All @@ -240,7 +268,7 @@ test('it does not show donation progress if donations are not active', function(
donationsActive: false,
organization
});
organization.createStripeConnectAccount();
organization.createStripeConnectAccount({ chargesEnabled: true });

authenticateAsMemberOfRole(this.application, server, organization, 'owner');

Expand All @@ -256,7 +284,7 @@ test('it renders validation errors', function(assert) {

let project = createProjectWithSluggedRoute();
let { organization } = project;
organization.createStripeConnectAccount();
organization.createStripeConnectAccount({ chargesEnabled: true });

authenticateAsMemberOfRole(this.application, server, organization, 'owner');

Expand Down Expand Up @@ -300,7 +328,7 @@ test('it renders other errors', function(assert) {

let project = createProjectWithSluggedRoute();
let { organization } = project;
organization.createStripeConnectAccount();
organization.createStripeConnectAccount({ chargesEnabled: true });

authenticateAsMemberOfRole(this.application, server, organization, 'owner');

Expand Down
1 change: 1 addition & 0 deletions tests/pages/project/settings/donations.js
Original file line number Diff line number Diff line change
Expand Up @@ -47,5 +47,6 @@ export default create({

clickActivateDonationGoals: clickable('.activate-donations'),
clickAddNew: clickable('.add'),
clickRefreshAccount: clickable('.refresh'),
clickStripeConnectButton: clickable('.stripe-connect')
});