diff --git a/app/components/user-profile-calendar.hbs b/app/components/user-profile-calendar.hbs index 401c678d2d..b0993bc966 100644 --- a/app/components/user-profile-calendar.hbs +++ b/app/components/user-profile-calendar.hbs @@ -1,7 +1,8 @@

{{t "general.calendar"}} diff --git a/app/components/user-profile.hbs b/app/components/user-profile.hbs index aa33dc73a1..8e47f39899 100644 --- a/app/components/user-profile.hbs +++ b/app/components/user-profile.hbs @@ -16,7 +16,18 @@ {{/if}}

+
+ +
+ {{#if this.showCalendar}} + + {{/if}} - +
diff --git a/app/components/user-profile.js b/app/components/user-profile.js index b0bc2313cf..118516edc9 100644 --- a/app/components/user-profile.js +++ b/app/components/user-profile.js @@ -1,6 +1,8 @@ import Component from '@glimmer/component'; +import { tracked } from '@glimmer/tracking'; import { inject as service } from '@ember/service'; export default class UserProfileComponent extends Component { @service currentUser; + @tracked showCalendar = false; } diff --git a/app/styles/components/user-profile.scss b/app/styles/components/user-profile.scss index 3ef69e2f50..5b099a2d04 100644 --- a/app/styles/components/user-profile.scss +++ b/app/styles/components/user-profile.scss @@ -10,6 +10,12 @@ text-align: center; } + .user-profile-actions { + display: flex; + justify-content: flex-end; + padding: 1rem 0 1rem 1rem; + } + .blocks { @include m.admin-blocks; } diff --git a/tests/integration/components/user-profile-test.js b/tests/integration/components/user-profile-test.js new file mode 100644 index 0000000000..03931b0144 --- /dev/null +++ b/tests/integration/components/user-profile-test.js @@ -0,0 +1,69 @@ +import { module, test } from 'qunit'; +import { setupRenderingTest } from 'ember-qunit'; +import { setupIntl } from 'ember-intl/test-support'; +import { render } from '@ember/test-helpers'; +import Service from '@ember/service'; +import { hbs } from 'ember-cli-htmlbars'; +import setupMirage from 'ember-cli-mirage/test-support/setup-mirage'; +import { component } from 'ilios/tests/pages/components/user-profile'; + +module('Integration | Component | user-profile', function (hooks) { + setupRenderingTest(hooks); + setupIntl(hooks, 'en-us'); + setupMirage(hooks); + + hooks.beforeEach(async function () { + const school = this.server.create('school'); + const program = this.server.create('program', { school }); + this.programYear = this.server.create('programYear', { program }); + this.cohort = this.server.create('cohort', { programYear: this.programYear }); + + const user = this.server.create('user', { school }); + const userModel = await this.owner.lookup('service:store').findRecord('user', user.id); + class CurrentUserMock extends Service { + async getModel() { + return userModel; + } + getRolesInSchool() { + return []; + } + } + this.owner.register('service:currentUser', CurrentUserMock); + }); + + test('user profile calendar', async function (assert) { + const user = this.server.create('user'); + const userModel = await this.owner.lookup('service:store').findRecord('user', user.id); + this.set('user', userModel); + + await render(hbs``); + + assert.notOk(component.calendar.isVisible); + assert.strictEqual(component.actions.calendarToggle.firstLabel.text, 'Hide Calendar'); + assert.ok(component.actions.calendarToggle.firstButton.isChecked); + assert.strictEqual(component.actions.calendarToggle.secondLabel.text, 'Show Calendar'); + assert.notOk(component.actions.calendarToggle.secondButton.isChecked); + await component.actions.calendarToggle.secondButton.click(); + assert.ok(component.calendar.isVisible); + await component.actions.calendarToggle.firstButton.click(); + assert.notOk(component.calendar.isVisible); + }); +}); diff --git a/tests/integration/components/visualizer-program-year-objectives-test.js b/tests/integration/components/visualizer-program-year-objectives-test.js index 2331adcefc..0815e7bdc5 100644 --- a/tests/integration/components/visualizer-program-year-objectives-test.js +++ b/tests/integration/components/visualizer-program-year-objectives-test.js @@ -1,7 +1,7 @@ import { module, test } from 'qunit'; import { setupRenderingTest } from 'ember-qunit'; import { setupIntl } from 'ember-intl/test-support'; -import { render } from '@ember/test-helpers'; +import { render, waitFor } from '@ember/test-helpers'; import { hbs } from 'ember-cli-htmlbars'; import setupMirage from 'ember-cli-mirage/test-support/setup-mirage'; @@ -78,6 +78,9 @@ module('Integration | Component | visualizer-program-year-objectives', function this.set('programYear', programYearModel); await render(hbs``); + await waitFor('.loaded'); + await waitFor('svg .links'); + await waitFor('svg .nodes'); assert.dom('svg').exists({ count: 1 }); assert.dom('svg g.links').exists({ count: 1 }); assert.dom('svg g.nodes').exists({ count: 1 }); diff --git a/tests/pages/components/user-profile-calendar.js b/tests/pages/components/user-profile-calendar.js new file mode 100644 index 0000000000..3bbbc3df01 --- /dev/null +++ b/tests/pages/components/user-profile-calendar.js @@ -0,0 +1,9 @@ +import { create } from 'ember-cli-page-object'; + +// @todo flesh this out. [ST 2023/09/08] +const definition = { + scope: '[data-test-user-profile-calendar]', +}; + +export default definition; +export const component = create(definition); diff --git a/tests/pages/components/user-profile.js b/tests/pages/components/user-profile.js new file mode 100644 index 0000000000..b59d64ff22 --- /dev/null +++ b/tests/pages/components/user-profile.js @@ -0,0 +1,29 @@ +import { create } from 'ember-cli-page-object'; + +import bio from 'ilios/tests/pages/components/user-profile-bio'; +import calendar from 'ilios/tests/pages/components/user-profile-calendar'; +import cohorts from 'ilios/tests/pages/components/user-profile-cohorts'; +import ics from 'ilios/tests/pages/components/user-profile-ics'; +import learnerGroups from 'ilios/tests/pages/components/user-profile/learner-groups'; +import permissions from 'ilios/tests/pages/components/user-profile-permissions'; +import roles from 'ilios/tests/pages/components/user-profile-roles'; +import toggleButtons from 'ilios-common/page-objects/components/toggle-buttons'; + +// @todo flesh this out. [ST 2023/09/08] +const definition = { + scope: '[data-test-user-profile]', + actions: { + scope: '[data-test-user-profile-actions]', + calendarToggle: toggleButtons, + }, + bio, + calendar, + cohorts, + learnerGroups, + ics, + permissions, + roles, +}; + +export default definition; +export const component = create(definition);