diff --git a/app/components/topbar-account-panel/component.js b/app/components/topbar-account-panel/component.js new file mode 100644 index 0000000..2a5c942 --- /dev/null +++ b/app/components/topbar-account-panel/component.js @@ -0,0 +1,10 @@ +import Component from '@ember/component'; +import { inject as service } from '@ember/service'; + +export default Component.extend({ + + tagName: '', + + kredits: service(), + +}); diff --git a/app/components/topbar-account-panel/template.hbs b/app/components/topbar-account-panel/template.hbs new file mode 100644 index 0000000..b65983a --- /dev/null +++ b/app/components/topbar-account-panel/template.hbs @@ -0,0 +1,12 @@ +
+ {{#if kredits.hasAccounts }} + {{#if kredits.currentUser}} + {{kredits.currentUser.name}} + {{#if kredits.currentUserIsCore}} + (core) + {{/if}} + {{/if}} + {{else}} + Anonymous + {{/if}} +
\ No newline at end of file diff --git a/app/templates/application.hbs b/app/templates/application.hbs index d82b972..11b8e12 100644 --- a/app/templates/application.hbs +++ b/app/templates/application.hbs @@ -1,16 +1,6 @@

{{link-to "Kosmos Kredits" "dashboard"}}

- -
- {{#if kredits.hasAccounts }} - {{#if kredits.currentUser}} - {{kredits.currentUser.name}} - {{#if kredits.currentUserIsCore}}(core){{/if}} - {{/if}} - {{else}} - Anonymous - {{/if}} -
+ {{topbar-account-panel}}
{{outlet}} diff --git a/tests/integration/components/topbar-account-panel/component-test.js b/tests/integration/components/topbar-account-panel/component-test.js new file mode 100644 index 0000000..b6054ab --- /dev/null +++ b/tests/integration/components/topbar-account-panel/component-test.js @@ -0,0 +1,39 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { render } from '@ember/test-helpers'; +import hbs from 'htmlbars-inline-precompile'; + +module('Integration | Component | topbar-account-panel', function(hooks) { + setupRenderingTest(hooks); + + test('unknown user without wallet (or no permission to get wallet/account info)', async function(assert) { + await render(hbs``); + + assert.equal(this.element.textContent.trim(), 'Anonymous'); + }); + + test('unknown user with Ethereum wallet', async function(assert) { + let service = this.owner.lookup('service:kredits'); + service.set('currentUserAccounts', [{ foo: 'bar' }]); + await render(hbs``); + + assert.equal(this.element.textContent.trim(), 'Anonymous'); + }); + + test('known contributor', async function(assert) { + let service = this.owner.lookup('service:kredits'); + service.set('currentUserAccounts', [{ foo: 'bar' }]); + service.set('currentUser', { + name: 'Dorian Nakamoto', + isCore: false + }); + await render(hbs``); + + assert.equal(this.element.textContent.trim(), 'Dorian Nakamoto'); + + service.set('currentUser.isCore', true); + await render(hbs``); + + assert.equal(this.element.querySelectorAll('span.core-flag').length, 1); + }); +});