diff --git a/packages/frontend/app/components/courses/list-item.js b/packages/frontend/app/components/courses/list-item.js
index da40021756..d0fc2c4a8a 100644
--- a/packages/frontend/app/components/courses/list-item.js
+++ b/packages/frontend/app/components/courses/list-item.js
@@ -1,11 +1,33 @@
import Component from '@glimmer/component';
-import PermissionChecker from 'ilios-common/classes/permission-checker';
-import { use } from 'ember-could-get-used-to-this';
+import { service } from '@ember/service';
+import { cached } from '@glimmer/tracking';
+import { TrackedAsyncData } from 'ember-async-data';
export default class CoursesListItemComponent extends Component {
- @use canLock = new PermissionChecker(() => ['canUpdateCourse', this.args.course]);
- @use canUnlock = new PermissionChecker(() => ['canUnlockCourse', this.args.course]);
- @use canDeletePermission = new PermissionChecker(() => ['canDeleteCourse', this.args.course]);
+ @service permissionChecker;
+
+ @cached
+ get canLockData() {
+ return new TrackedAsyncData(this.permissionChecker.canUpdateCourse(this.args.course));
+ }
+
+ @cached
+ get canUnlockData() {
+ return new TrackedAsyncData(this.permissionChecker.canUnlockCourse(this.args.course));
+ }
+
+ @cached
+ get canDeleteData() {
+ return new TrackedAsyncData(this.permissionChecker.canDeleteCourse(this.args.course));
+ }
+
+ get canLock() {
+ return this.canLockData.isResolved ? this.canLockData.value : false;
+ }
+
+ get canUnlock() {
+ return this.canUnlockData.isResolved ? this.canUnlockData.value : false;
+ }
get canDelete() {
if (this.args.course.isPublishedOrScheduled) {
@@ -13,6 +35,6 @@ export default class CoursesListItemComponent extends Component {
} else if (this.args.course.hasMany('descendants').ids().length > 0) {
return false;
}
- return this.canDeletePermission;
+ return this.canDeleteData.isResolved ? this.canDeleteData.value : false;
}
}
diff --git a/packages/frontend/app/components/courses/root.hbs b/packages/frontend/app/components/courses/root.hbs
index 6114c1ed88..9baa9b547d 100644
--- a/packages/frontend/app/components/courses/root.hbs
+++ b/packages/frontend/app/components/courses/root.hbs
@@ -56,7 +56,7 @@
({{this.filteredCourses.length}})
- {{#if this.canCreateCourse}}
+ {{#if this.canCreate}}
['canCreateCourse', this.selectedSchool]);
+ @cached
+ get canCreateData() {
+ return new TrackedAsyncData(
+ this.selectedSchool ? this.permissionChecker.canCreateCourse(this.selectedSchool) : false,
+ );
+ }
+
+ get canCreate() {
+ return this.canCreateData.isResolved ? this.canCreateData.value : false;
+ }
get hasMoreThanOneSchool() {
return this.args.schools.length > 1;
diff --git a/packages/frontend/app/components/curriculum-inventory/report-list-item.js b/packages/frontend/app/components/curriculum-inventory/report-list-item.js
index eaa1c2a89b..5b6c99f5dd 100644
--- a/packages/frontend/app/components/curriculum-inventory/report-list-item.js
+++ b/packages/frontend/app/components/curriculum-inventory/report-list-item.js
@@ -2,8 +2,6 @@ import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { TrackedAsyncData } from 'ember-async-data';
import { cached } from '@glimmer/tracking';
-import PermissionChecker from 'ilios-common/classes/permission-checker';
-import { use } from 'ember-could-get-used-to-this';
import { service } from '@ember/service';
export default class CurriculumInventoryReportListItemComponent extends Component {
@@ -15,10 +13,16 @@ export default class CurriculumInventoryReportListItemComponent extends Componen
this.iliosConfig.itemFromConfig('academicYearCrossesCalendarYearBoundaries'),
);
- @use canDelete = new PermissionChecker(() => [
- 'canDeleteCurriculumInventoryReport',
- this.args.report,
- ]);
+ @cached
+ get canDeleteData() {
+ return new TrackedAsyncData(
+ this.permissionChecker.canDeleteCurriculumInventoryReport(this.args.report),
+ );
+ }
+
+ get canDelete() {
+ return this.canDeleteData.isResolved ? this.canDeleteData.value : false;
+ }
@cached
get academicYearCrossesCalendarYearBoundaries() {
diff --git a/packages/frontend/app/components/instructor-groups/list-item.js b/packages/frontend/app/components/instructor-groups/list-item.js
index 9a934815a2..fa8c521b37 100644
--- a/packages/frontend/app/components/instructor-groups/list-item.js
+++ b/packages/frontend/app/components/instructor-groups/list-item.js
@@ -1,18 +1,19 @@
import Component from '@glimmer/component';
-import { tracked } from '@glimmer/tracking';
-import PermissionChecker from 'ilios-common/classes/permission-checker';
-import { use } from 'ember-could-get-used-to-this';
+import { cached, tracked } from '@glimmer/tracking';
+import { service } from '@ember/service';
import { dropTask } from 'ember-concurrency';
import { TrackedAsyncData } from 'ember-async-data';
-import { cached } from '@glimmer/tracking';
export default class InstructorGroupsListItemComponent extends Component {
+ @service permissionChecker;
@tracked showRemoveConfirmation = false;
- @use canDeletePermission = new PermissionChecker(() => [
- 'canDeleteInstructorGroup',
- this.args.instructorGroup,
- ]);
+ @cached
+ get canDeleteData() {
+ return new TrackedAsyncData(
+ this.permissionChecker.canDeleteInstructorGroup(this.args.instructorGroup),
+ );
+ }
@cached
get coursesData() {
@@ -24,7 +25,9 @@ export default class InstructorGroupsListItemComponent extends Component {
}
get canDelete() {
- return this.canDeletePermission && this.courses && this.courses.length === 0;
+ return this.canDeleteData.isResolved
+ ? this.canDeleteData.value && this.courses && this.courses.length === 0
+ : false;
}
remove = dropTask(async () => {
diff --git a/packages/frontend/app/components/instructor-groups/root.js b/packages/frontend/app/components/instructor-groups/root.js
index 1c7b83cdfe..362d073117 100644
--- a/packages/frontend/app/components/instructor-groups/root.js
+++ b/packages/frontend/app/components/instructor-groups/root.js
@@ -1,17 +1,15 @@
import Component from '@glimmer/component';
import { service } from '@ember/service';
-import { tracked } from '@glimmer/tracking';
-import { use } from 'ember-could-get-used-to-this';
+import { cached, tracked } from '@glimmer/tracking';
import { TrackedAsyncData } from 'ember-async-data';
-import { cached } from '@glimmer/tracking';
import { findById } from 'ilios-common/utils/array-helpers';
-import PermissionChecker from 'ilios-common/classes/permission-checker';
import { dropTask } from 'ember-concurrency';
export default class InstructorGroupsRootComponent extends Component {
@service currentUser;
@service store;
@service dataLoader;
+ @service permissionChecker;
@tracked showNewInstructorGroupForm = false;
@tracked newInstructorGroup;
@tracked instructorGroupPromises = new Map();
@@ -22,16 +20,24 @@ export default class InstructorGroupsRootComponent extends Component {
return this.userModel.isResolved ? this.userModel.value : null;
}
- @use canCreate = new PermissionChecker(() => [
- 'canCreateInstructorGroup',
- this.bestSelectedSchool,
- ]);
+ @cached
+ get canCreateData() {
+ return new TrackedAsyncData(
+ this.bestSelectedSchool
+ ? this.permissionChecker.canCreateInstructorGroup(this.bestSelectedSchool)
+ : false,
+ );
+ }
@cached
get loadedSchoolData() {
return new TrackedAsyncData(this.getSchoolPromise(this.bestSelectedSchool.id));
}
+ get canCreate() {
+ return this.canCreateData.isResolved ? this.canCreateData.value : false;
+ }
+
get loadedSchool() {
return this.loadedSchoolData.isResolved ? this.loadedSchoolData.value : null;
}
diff --git a/packages/frontend/app/components/learner-group/list-item.js b/packages/frontend/app/components/learner-group/list-item.js
index 2b4d0b81e2..cf7bdf8f79 100644
--- a/packages/frontend/app/components/learner-group/list-item.js
+++ b/packages/frontend/app/components/learner-group/list-item.js
@@ -1,17 +1,31 @@
import Component from '@glimmer/component';
import { tracked } from '@glimmer/tracking';
import { action } from '@ember/object';
-import { use } from 'ember-could-get-used-to-this';
import { dropTask } from 'ember-concurrency';
import { all, filter } from 'rsvp';
import { TrackedAsyncData } from 'ember-async-data';
import { cached } from '@glimmer/tracking';
-import PermissionChecker from 'ilios-common/classes/permission-checker';
+import { service } from '@ember/service';
export default class LearnerGroupListItemComponent extends Component {
+ @service permissionChecker;
@tracked showRemoveConfirmation = false;
@tracked showCopyConfirmation = false;
+ @cached
+ get canDeleteData() {
+ return new TrackedAsyncData(
+ this.permissionChecker.canDeleteLearnerGroup(this.args.learnerGroup),
+ );
+ }
+
+ @cached
+ get canCreateData() {
+ return new TrackedAsyncData(
+ this.school ? this.permissionChecker.canCreateLearnerGroup(this.school) : false,
+ );
+ }
+
@cached
get schoolData() {
return new TrackedAsyncData(this.getSchool(this.args.learnerGroup));
@@ -26,13 +40,6 @@ export default class LearnerGroupListItemComponent extends Component {
return this.schoolData.isResolved ? this.schoolData.value : null;
}
- @use canDeletePermission = new PermissionChecker(() => [
- 'canDeleteLearnerGroup',
- this.args.learnerGroup,
- ]);
-
- @use canCreatePermission = new PermissionChecker(() => ['canCreateLearnerGroup', this.school]);
-
@cached
get isLinked() {
return this.isLinkedData.isResolved ? this.isLinkedData.value : null;
@@ -42,11 +49,11 @@ export default class LearnerGroupListItemComponent extends Component {
if (this.isLinked) {
return false;
}
- return this.canDeletePermission && !this.isLinked;
+ return this.canDeleteData.isResolved ? this.canDeleteData.value && !this.isLinked : false;
}
get canCreate() {
- return this.school && this.canCreatePermission;
+ return this.canCreateData.isResolved ? this.canCreateData.value && this.school : false;
}
async getSchool(learnerGroup) {
diff --git a/packages/frontend/app/components/learner-groups/root.js b/packages/frontend/app/components/learner-groups/root.js
index 386c43ed2f..ae3cc4b73f 100644
--- a/packages/frontend/app/components/learner-groups/root.js
+++ b/packages/frontend/app/components/learner-groups/root.js
@@ -1,11 +1,8 @@
import Component from '@glimmer/component';
import { service } from '@ember/service';
-import { tracked } from '@glimmer/tracking';
-import { use } from 'ember-could-get-used-to-this';
+import { cached, tracked } from '@glimmer/tracking';
import { TrackedAsyncData } from 'ember-async-data';
-import { cached } from '@glimmer/tracking';
import { findById, sortBy } from 'ilios-common/utils/array-helpers';
-import PermissionChecker from 'ilios-common/classes/permission-checker';
import cloneLearnerGroup from 'frontend/utils/clone-learner-group';
import { dropTask } from 'ember-concurrency';
import { map } from 'rsvp';
@@ -16,6 +13,7 @@ export default class LearnerGroupsRootComponent extends Component {
@service store;
@service dataLoader;
@service intl;
+ @service permissionChecker;
@tracked showNewLearnerGroupForm = false;
@tracked savedLearnerGroup;
@tracked totalGroupsToSave;
@@ -23,7 +21,15 @@ export default class LearnerGroupsRootComponent extends Component {
learnerGroupPromises = new Map();
userModel = new TrackedAsyncData(this.currentUser.getModel());
- @use canCreate = new PermissionChecker(() => ['canCreateLearnerGroup', this.selectedSchool]);
+
+ @cached
+ get canCreateData() {
+ return new TrackedAsyncData(
+ this.selectedSchool
+ ? this.permissionChecker.canCreateLearnerGroup(this.selectedSchool)
+ : false,
+ );
+ }
@cached
get user() {
@@ -35,6 +41,10 @@ export default class LearnerGroupsRootComponent extends Component {
return new TrackedAsyncData(this.selectedSchool.programs);
}
+ get canCreate() {
+ return this.canCreateData.isResolved ? this.canCreateData.value : false;
+ }
+
get programs() {
return this.programsData.isResolved ? this.programsData.value : null;
}
diff --git a/packages/frontend/app/components/program-year/list-item.js b/packages/frontend/app/components/program-year/list-item.js
index 402e2069ba..902432ebdf 100644
--- a/packages/frontend/app/components/program-year/list-item.js
+++ b/packages/frontend/app/components/program-year/list-item.js
@@ -1,9 +1,6 @@
import Component from '@glimmer/component';
-import { tracked } from '@glimmer/tracking';
+import { cached, tracked } from '@glimmer/tracking';
import { TrackedAsyncData } from 'ember-async-data';
-import { cached } from '@glimmer/tracking';
-import PermissionChecker from 'ilios-common/classes/permission-checker';
-import { use } from 'ember-could-get-used-to-this';
import { service } from '@ember/service';
import { dropTask } from 'ember-concurrency';
@@ -13,6 +10,21 @@ export default class ProgramYearListItemComponent extends Component {
@tracked showRemoveConfirmation = false;
+ @cached
+ get canLockData() {
+ return new TrackedAsyncData(this.permissionChecker.canLockProgramYear(this.args.programYear));
+ }
+
+ @cached
+ get canUnlockData() {
+ return new TrackedAsyncData(this.permissionChecker.canUnlockProgramYear(this.args.programYear));
+ }
+
+ @cached
+ get canDeleteData() {
+ return new TrackedAsyncData(this.permissionChecker.canDeleteProgramYear(this.args.programYear));
+ }
+
@cached
get programData() {
return new TrackedAsyncData(this.args.programYear.program);
@@ -31,12 +43,13 @@ export default class ProgramYearListItemComponent extends Component {
return this.cohortData.isResolved ? this.cohortData.value : null;
}
- @use canDeletePermission = new PermissionChecker(() => [
- 'canDeleteProgramYear',
- this.args.programYear,
- ]);
- @use canLock = new PermissionChecker(() => ['canLockProgramYear', this.args.programYear]);
- @use canUnlock = new PermissionChecker(() => ['canUnlockProgramYear', this.args.programYear]);
+ get canLock() {
+ return this.canLockData.isResolved ? this.canLockData.value : false;
+ }
+
+ get canUnlock() {
+ return this.canUnlockData.isResolved ? this.canUnlockData.value : false;
+ }
get canDelete() {
if (!this.cohort) {
@@ -48,7 +61,7 @@ export default class ProgramYearListItemComponent extends Component {
return false;
}
- return this.canDeletePermission;
+ return this.canDeleteData.isResolved ? this.canDeleteData.value : false;
}
get classOfYear() {
diff --git a/packages/frontend/app/components/programs/list-item.js b/packages/frontend/app/components/programs/list-item.js
index 4e1ed71523..604beee8b8 100644
--- a/packages/frontend/app/components/programs/list-item.js
+++ b/packages/frontend/app/components/programs/list-item.js
@@ -1,19 +1,25 @@
import Component from '@glimmer/component';
-import { tracked } from '@glimmer/tracking';
-import PermissionChecker from 'ilios-common/classes/permission-checker';
-import { use } from 'ember-could-get-used-to-this';
+import { cached, tracked } from '@glimmer/tracking';
+import { service } from '@ember/service';
import { dropTask } from 'ember-concurrency';
+import { TrackedAsyncData } from 'ember-async-data';
export default class ProgramListItemComponent extends Component {
+ @service permissionChecker;
@tracked showRemoveConfirmation = false;
- @use canDeletePermission = new PermissionChecker(() => ['canDeleteProgram', this.args.program]);
+ @cached
+ get canDeleteData() {
+ return new TrackedAsyncData(this.permissionChecker.canDeleteProgram(this.args.program));
+ }
get canDelete() {
const hasCiReports = this.args.program.hasMany('curriculumInventoryReports').ids().length > 0;
const hasProgramYears = this.args.program.hasMany('programYears').ids().length > 0;
- return this.canDeletePermission && !hasCiReports && !hasProgramYears;
+ return this.canDeleteData.isResolved
+ ? this.canDeleteData.value && !hasCiReports && !hasProgramYears
+ : false;
}
remove = dropTask(async () => {
diff --git a/packages/frontend/app/components/programs/root.js b/packages/frontend/app/components/programs/root.js
index 3be849c2a3..e8ed02a3d8 100644
--- a/packages/frontend/app/components/programs/root.js
+++ b/packages/frontend/app/components/programs/root.js
@@ -1,15 +1,13 @@
import Component from '@glimmer/component';
import { service } from '@ember/service';
-import { tracked } from '@glimmer/tracking';
-import { use } from 'ember-could-get-used-to-this';
+import { cached, tracked } from '@glimmer/tracking';
import { TrackedAsyncData } from 'ember-async-data';
-import { cached } from '@glimmer/tracking';
-import PermissionChecker from 'ilios-common/classes/permission-checker';
import { findById } from 'ilios-common/utils/array-helpers';
import { dropTask } from 'ember-concurrency';
export default class ProgramRootComponent extends Component {
@service currentUser;
+ @service permissionChecker;
@tracked selectedSchoolId;
@tracked showNewProgramForm = false;
@tracked newProgram;
@@ -20,13 +18,24 @@ export default class ProgramRootComponent extends Component {
return this.userModel.isResolved ? this.userModel.value : null;
}
- @use canCreate = new PermissionChecker(() => ['canCreateProgram', this.bestSelectedSchool]);
+ @cached
+ get canCreateData() {
+ return new TrackedAsyncData(
+ this.bestSelectedSchool
+ ? this.permissionChecker.canCreateProgram(this.bestSelectedSchool)
+ : false,
+ );
+ }
@cached
get programsData() {
return new TrackedAsyncData(this.bestSelectedSchool.programs);
}
+ get canCreate() {
+ return this.canCreateData.isResolved ? this.canCreateData.value : false;
+ }
+
get programs() {
return this.programsData.isResolved ? this.programsData.value : [];
}
diff --git a/packages/frontend/app/controllers/learner-group.js b/packages/frontend/app/controllers/learner-group.js
index 376a116df0..1c79d13375 100644
--- a/packages/frontend/app/controllers/learner-group.js
+++ b/packages/frontend/app/controllers/learner-group.js
@@ -1,7 +1,5 @@
import Controller from '@ember/controller';
import { tracked } from '@glimmer/tracking';
-import { use } from 'ember-could-get-used-to-this';
-import PermissionChecker from 'ilios-common/classes/permission-checker';
import { TrackedAsyncData } from 'ember-async-data';
import { cached } from '@glimmer/tracking';
import { service } from '@ember/service';
@@ -14,8 +12,23 @@ export default class LearnerGroupController extends Controller {
@tracked isBulkAssigning = false;
@tracked sortUsersBy = 'fullName';
- @use canUpdate = new PermissionChecker(() => ['canUpdateLearnerGroup', this.model]);
- @use canDelete = new PermissionChecker(() => ['canDeleteLearnerGroup', this.model]);
+ @cached
+ get canDeleteData() {
+ return new TrackedAsyncData(this.permissionChecker.canDeleteLearnerGroup(this.model));
+ }
+
+ get canDelete() {
+ return this.canDeleteData.isResolved ? this.canDeleteData.value : false;
+ }
+
+ @cached
+ get canUpdateData() {
+ return new TrackedAsyncData(this.permissionChecker.canUpdateLearnerGroup(this.model));
+ }
+
+ get canUpdate() {
+ return this.canUpdateData.isResolved ? this.canUpdateData.value : false;
+ }
@cached
get canCreateData() {
diff --git a/packages/frontend/app/controllers/user.js b/packages/frontend/app/controllers/user.js
index d83507a798..a7f704dd7d 100644
--- a/packages/frontend/app/controllers/user.js
+++ b/packages/frontend/app/controllers/user.js
@@ -6,7 +6,6 @@ import { use } from 'ember-could-get-used-to-this';
import AsyncProcess from 'ilios-common/classes/async-process';
import { TrackedAsyncData } from 'ember-async-data';
import { cached } from '@glimmer/tracking';
-import PermissionChecker from 'ilios-common/classes/permission-checker';
export default class UserController extends Controller {
@service store;
@@ -30,9 +29,17 @@ export default class UserController extends Controller {
@tracked permissionsSchool = null;
@tracked permissionsYear = null;
- @use canUpdate = new PermissionChecker(() => ['canUpdateUser', this.model]);
@use canCreate = new AsyncProcess(() => [this.canCreateInSomeSchool.bind(this), this.allSchools]);
+ @cached
+ get canUpdateData() {
+ return new TrackedAsyncData(this.permissionChecker.canUpdateUser(this.model));
+ }
+
+ get canUpdate() {
+ return this.canUpdateData.isResolved ? this.canUpdateData.value : false;
+ }
+
@cached
get allSchoolsData() {
return new TrackedAsyncData(this.store.findAll('school'));
diff --git a/packages/ilios-common/addon/classes/permission-checker.js b/packages/ilios-common/addon/classes/permission-checker.js
deleted file mode 100644
index 455906884c..0000000000
--- a/packages/ilios-common/addon/classes/permission-checker.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import { tracked } from '@glimmer/tracking';
-import { service } from '@ember/service';
-import { Resource } from 'ember-could-get-used-to-this';
-
-export default class PermissionCheckerResource extends Resource {
- @service permissionChecker;
- @tracked data;
-
- get value() {
- return this.data;
- }
-
- async setup() {
- const fnName = this.args.positional[0];
- //pass any remaining arguments directly to the processor function
- this.data = await this.permissionChecker[fnName](...this.args.positional.slice(1));
- }
-}
diff --git a/packages/ilios-common/addon/components/sessions-grid-offering-table.js b/packages/ilios-common/addon/components/sessions-grid-offering-table.js
index 707cd22e1b..4560cda45f 100644
--- a/packages/ilios-common/addon/components/sessions-grid-offering-table.js
+++ b/packages/ilios-common/addon/components/sessions-grid-offering-table.js
@@ -1,13 +1,21 @@
import Component from '@glimmer/component';
-import { use } from 'ember-could-get-used-to-this';
-import PermissionChecker from 'ilios-common/classes/permission-checker';
-import { TrackedAsyncData } from 'ember-async-data';
import { cached } from '@glimmer/tracking';
+import { service } from '@ember/service';
+import { TrackedAsyncData } from 'ember-async-data';
import OfferingDateBlock from 'ilios-common/utils/offering-date-block';
import { sortBy } from 'ilios-common/utils/array-helpers';
export default class SessionsGridOfferingTable extends Component {
- @use canUpdate = new PermissionChecker(() => ['canUpdateSession', this.args.session]);
+ @service permissionChecker;
+
+ @cached
+ get canUpdateData() {
+ return new TrackedAsyncData(this.permissionChecker.canUpdateSession(this.args.session));
+ }
+
+ get canUpdate() {
+ return this.canUpdateData.isResolved ? this.canUpdateData.value : false;
+ }
@cached
get offerings() {
diff --git a/packages/ilios-common/addon/components/sessions-grid-row.js b/packages/ilios-common/addon/components/sessions-grid-row.js
index b4f6206deb..b6ec556d8d 100644
--- a/packages/ilios-common/addon/components/sessions-grid-row.js
+++ b/packages/ilios-common/addon/components/sessions-grid-row.js
@@ -1,8 +1,26 @@
import Component from '@glimmer/component';
-import { use } from 'ember-could-get-used-to-this';
-import PermissionChecker from 'ilios-common/classes/permission-checker';
+import { cached } from '@glimmer/tracking';
+import { service } from '@ember/service';
+import { TrackedAsyncData } from 'ember-async-data';
export default class SessionsGridRowComponent extends Component {
- @use canDelete = new PermissionChecker(() => ['canDeleteSession', this.args.session]);
- @use canUpdate = new PermissionChecker(() => ['canUpdateSession', this.args.session]);
+ @service permissionChecker;
+
+ @cached
+ get canDeleteData() {
+ return new TrackedAsyncData(this.permissionChecker.canDeleteSession(this.args.session));
+ }
+
+ get canDelete() {
+ return this.canDeleteData.isResolved ? this.canDeleteData.value : false;
+ }
+
+ @cached
+ get canUpdateData() {
+ return new TrackedAsyncData(this.permissionChecker.canUpdateSession(this.args.session));
+ }
+
+ get canUpdate() {
+ return this.canUpdateData.isResolved ? this.canUpdateData.value : false;
+ }
}
diff --git a/packages/test-app/tests/integration/components/sessions-grid-offering-table-test.js b/packages/test-app/tests/integration/components/sessions-grid-offering-table-test.js
index 8a7ee716df..8a6f90d1af 100644
--- a/packages/test-app/tests/integration/components/sessions-grid-offering-table-test.js
+++ b/packages/test-app/tests/integration/components/sessions-grid-offering-table-test.js
@@ -16,16 +16,12 @@ module('Integration | Component | sessions-grid-offering-table', function (hooks
setupIntl(hooks, 'en-us');
setupMirage(hooks);
test('it renders', async function (assert) {
- class PermissionCheckerStub extends Service {
- canDeleteSession() {
- return true;
- }
- canUpdateSession() {
+ class PermissionCheckerServiceMock extends Service {
+ async canUpdateSession() {
return true;
}
}
-
- this.owner.register('service:permissionChecker', PermissionCheckerStub);
+ this.owner.register('service:permission-checker', PermissionCheckerServiceMock);
const session = this.server.create('session');
this.server.createList('offering', 3, {
session,
diff --git a/packages/test-app/tests/integration/components/sessions-grid-row-test.js b/packages/test-app/tests/integration/components/sessions-grid-row-test.js
index 8b17949aa6..88f5bfa1ff 100644
--- a/packages/test-app/tests/integration/components/sessions-grid-row-test.js
+++ b/packages/test-app/tests/integration/components/sessions-grid-row-test.js
@@ -3,8 +3,8 @@ import { setupRenderingTest } from 'test-app/tests/helpers';
import { setupIntl } from 'ember-intl/test-support';
import { setupMirage } from 'ember-cli-mirage/test-support';
import { DateTime } from 'luxon';
-import Service from '@ember/service';
import { render } from '@ember/test-helpers';
+import Service from '@ember/service';
import { hbs } from 'ember-cli-htmlbars';
import { component } from 'ilios-common/page-objects/components/sessions-grid-row';
@@ -13,18 +13,6 @@ module('Integration | Component | sessions-grid-row', function (hooks) {
setupIntl(hooks, 'en-us');
setupMirage(hooks);
- hooks.beforeEach(function () {
- class PermissionCheckerStub extends Service {
- canDeleteSession() {
- return true;
- }
- canUpdateSession() {
- return true;
- }
- }
- this.owner.register('service:permissionChecker', PermissionCheckerStub);
- });
-
test('it renders', async function (assert) {
const date = DateTime.fromObject({ year: 2019, month: 7, day: 9, hour: 17 });
const session = this.server.create('session');
@@ -90,6 +78,15 @@ module('Integration | Component | sessions-grid-row', function (hooks) {
test('confirmDelete fires', async function (assert) {
assert.expect(1);
+ class PermissionCheckerServiceMock extends Service {
+ async canDeleteSession() {
+ return true;
+ }
+ async canUpdateSession() {
+ return true;
+ }
+ }
+ this.owner.register('service:permission-checker', PermissionCheckerServiceMock);
const session = this.server.create('session');
const model = await this.owner.lookup('service:store').findRecord('session', session.id);
this.set('session', model);