diff --git a/packages/frontend/tests/acceptance/course/session/overview-test.js b/packages/frontend/tests/acceptance/course/session/overview-test.js index a8f3b951cf..b0626f7d1a 100644 --- a/packages/frontend/tests/acceptance/course/session/overview-test.js +++ b/packages/frontend/tests/acceptance/course/session/overview-test.js @@ -19,6 +19,40 @@ module('Acceptance | Session - Overview', function (hooks) { }); }); + test('check back to sessions list', async function (assert) { + await setupAuthentication( + { + school: this.school, + administeredSchools: [this.school], + }, + true, + ); + this.server.create('session', { + course: this.course, + sessionType: this.sessionTypes[0], + }); + await page.visit({ courseId: 1, sessionId: 1 }); + assert.strictEqual(page.backToSessions.text, 'Back to Session List'); + assert.strictEqual(page.courseAndStatus.course, 'course 0'); + assert.strictEqual(page.courseAndStatus.status, 'Not Published'); + + const coursePublished = this.server.create('course', { + id: 2, + school: this.school, + published: true, + }); + this.server.create('session', { + id: 1, + course: coursePublished, + sessionType: this.sessionTypes[0], + }); + + await page.visit({ courseId: 2, sessionId: 1 }); + assert.strictEqual(page.backToSessions.text, 'Back to Session List'); + assert.strictEqual(page.courseAndStatus.course, 'course 1'); + assert.strictEqual(page.courseAndStatus.status, 'Published'); + }); + test('check fields', async function (assert) { await setupAuthentication( { diff --git a/packages/ilios-common/addon-test-support/ilios-common/page-objects/session.js b/packages/ilios-common/addon-test-support/ilios-common/page-objects/session.js index b34e3d67be..b33c6d55c7 100644 --- a/packages/ilios-common/addon-test-support/ilios-common/page-objects/session.js +++ b/packages/ilios-common/addon-test-support/ilios-common/page-objects/session.js @@ -1,8 +1,13 @@ -import { create, visitable } from 'ember-cli-page-object'; +import { create, text, visitable } from 'ember-cli-page-object'; import details from './components/session-details'; export default create({ visit: visitable('/courses/:courseId/sessions/:sessionId'), + courseAndStatus: { + scope: '[data-test-course-and-status]', + course: text('[data-test-course]'), + status: text('[data-test-status]'), + }, backToSessions: { scope: '[data-test-back-to-sessions]', }, diff --git a/packages/ilios-common/addon/components/session-details.gjs b/packages/ilios-common/addon/components/session-details.gjs index 32553567ef..3890f3905a 100644 --- a/packages/ilios-common/addon/components/session-details.gjs +++ b/packages/ilios-common/addon/components/session-details.gjs @@ -20,6 +20,7 @@ import DetailTaxonomies from 'ilios-common/components/detail-taxonomies'; import CollapsedTaxonomies from 'ilios-common/components/collapsed-taxonomies'; import DetailMesh from 'ilios-common/components/detail-mesh'; import SessionOfferings from 'ilios-common/components/session-offerings'; +import PublicationStatus from 'ilios-common/components/publication-status'; import { pageTitle } from 'ember-page-title'; export default class SessionDetailsComponent extends Component { @@ -28,22 +29,34 @@ export default class SessionDetailsComponent extends Component { return new TrackedAsyncData(this.args.session.course); } + get course() { + return this.courseData.isResolved ? this.courseData.value : null; + } + @cached get cohortsData() { return new TrackedAsyncData(this.course?.cohorts); } - get course() { - return this.courseData.isResolved ? this.courseData.value : null; - } - get cohorts() { return this.cohortsData.isResolved ? this.cohortsData.value : null; } + + get courseTitle() { + return this.course.externalId?.trim() || this.course.title; + }