diff --git a/assets/javascripts/discourse/models/plan.js.es6 b/assets/javascripts/discourse/models/plan.js.es6 index df5138d..baff3a7 100644 --- a/assets/javascripts/discourse/models/plan.js.es6 +++ b/assets/javascripts/discourse/models/plan.js.es6 @@ -1,6 +1,13 @@ +import computed from "ember-addons/ember-computed-decorators"; import { ajax } from "discourse/lib/ajax"; -const Plan = Discourse.Model.extend({}); +const Plan = Discourse.Model.extend({ + @computed("amount", "currency", "interval") + subscriptionRate(amount, currency, interval) { + const dollars = parseFloat(amount / 100).toFixed(2); + return `$${dollars} ${currency.toUpperCase()} / ${interval}`; + }, +}); Plan.reopenClass({ findAll() { diff --git a/test/javascripts/models/plan-test.js.es6 b/test/javascripts/models/plan-test.js.es6 new file mode 100644 index 0000000..50774ac --- /dev/null +++ b/test/javascripts/models/plan-test.js.es6 @@ -0,0 +1,17 @@ +import Plan from "discourse/plugins/discourse-patrons/discourse/models/plan"; + +QUnit.module("discourse-patrons:model:plan"); + +QUnit.test("subscriptionRate", assert => { + const plan = Plan.create({ + amount: 2399, + currency: 'aud', + interval: 'month' + }); + + assert.equal( + plan.get("subscriptionRate"), + "$23.99 AUD / month", + "it should return the formatted subscription rate" + ); +});