From f25c74c7e91c4d32417aac2b514e09538589c9cd Mon Sep 17 00:00:00 2001 From: Sebastian Kippe Date: Sun, 28 Apr 2019 14:14:27 +0100 Subject: [PATCH] Add helper functions for confirmation status --- app/helpers/contribution-status.js | 20 ++++++++++++++++++ app/helpers/is-confirmed-contribution.js | 15 +++++++++++++ tests/unit/helpers/contribution-status.js | 21 +++++++++++++++++++ .../unit/helpers/is-confirmed-contribution.js | 21 +++++++++++++++++++ 4 files changed, 77 insertions(+) create mode 100644 app/helpers/contribution-status.js create mode 100644 app/helpers/is-confirmed-contribution.js create mode 100644 tests/unit/helpers/contribution-status.js create mode 100644 tests/unit/helpers/is-confirmed-contribution.js diff --git a/app/helpers/contribution-status.js b/app/helpers/contribution-status.js new file mode 100644 index 0000000..79e4bbb --- /dev/null +++ b/app/helpers/contribution-status.js @@ -0,0 +1,20 @@ +import Helper from '@ember/component/helper'; +import { inject as service } from '@ember/service'; +import { alias } from '@ember/object/computed'; + +export default Helper.extend({ + + kredits: service(), + currentBlock: alias('kredits.currentBlock'), + + compute([contribution]) { + if (contribution.vetoed) { + return 'vetoed'; + } else if (contribution.confirmedAt > this.currentBlock) { + return 'unconfirmed'; + } else { + return 'confirmed' + } + } + +}); diff --git a/app/helpers/is-confirmed-contribution.js b/app/helpers/is-confirmed-contribution.js new file mode 100644 index 0000000..0f63b76 --- /dev/null +++ b/app/helpers/is-confirmed-contribution.js @@ -0,0 +1,15 @@ +import Helper from '@ember/component/helper'; +import { inject as service } from '@ember/service'; +import { alias } from '@ember/object/computed'; + +export default Helper.extend({ + + kredits: service(), + currentBlock: alias('kredits.currentBlock'), + + compute([contribution]) { + return !contribution.vetoed && + (contribution.confirmedAt <= this.currentBlock); + } + +}); diff --git a/tests/unit/helpers/contribution-status.js b/tests/unit/helpers/contribution-status.js new file mode 100644 index 0000000..785b56c --- /dev/null +++ b/tests/unit/helpers/contribution-status.js @@ -0,0 +1,21 @@ +import { module, test } from 'qunit'; +import { setupTest } from 'ember-qunit'; + +module('Unit | Helper | contribution-status', function (hooks) { + setupTest(hooks); + + test('returns the appropriate status', function (assert) { + const contributionStatus = this.owner.factoryFor('helper:contribution-status').create(); + const kredits = this.owner.lookup('service:kredits'); + + kredits.set('currentBlock', 23000); + + const contributionUnconfirmed = { confirmedAt: 23001, vetoed: false }; + const contributionConfirmed = { confirmedAt: 21000, vetoed: false }; + const contributionVetoed = { confirmedAt: 23001, vetoed: true }; + + assert.eq(contributionStatus.compute([contributionUnconfirmed]), 'unconfirmed'); + assert.eq(contributionStatus.compute([contributionConfirmed]), 'confirmed'); + assert.eq(contributionStatus.compute([contributionVetoed]), 'vetoed'); + }); +}); diff --git a/tests/unit/helpers/is-confirmed-contribution.js b/tests/unit/helpers/is-confirmed-contribution.js new file mode 100644 index 0000000..3db7534 --- /dev/null +++ b/tests/unit/helpers/is-confirmed-contribution.js @@ -0,0 +1,21 @@ +import { module, test } from 'qunit'; +import { setupTest } from 'ember-qunit'; + +module('Unit | Helper | contribution-status', function (hooks) { + setupTest(hooks); + + test('returns the appropriate status', function (assert) { + const contributionStatus = this.owner.factoryFor('helper:contribution-status').create(); + const kredits = this.owner.lookup('service:kredits'); + + kredits.set('currentBlock', 23000); + + const contributionUnconfirmed = { confirmedAt: 23001, vetoed: false }; + const contributionConfirmed = { confirmedAt: 21000, vetoed: false }; + const contributionVetoed = { confirmedAt: 23001, vetoed: true }; + + assert.notOk(contributionStatus.compute([contributionUnconfirmed]), 'unconfirmed'); + assert.notOk(contributionStatus.compute([contributionVetoed]), 'vetoed'); + assert.ok(contributionStatus.compute([contributionConfirmed]), 'confirmed'); + }); +});