Skip to content

Commit

Permalink
Merge pull request #7947 from jrjohnson/add-school-tests
Browse files Browse the repository at this point in the history
Add acceptance tests for schools
  • Loading branch information
stopfstedt committed Jul 10, 2024
2 parents 3a9bf05 + d8b97cb commit 6e678ac
Show file tree
Hide file tree
Showing 10 changed files with 609 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@
<ExpandCollapseButton
@value={{@schoolNewVocabulary}}
@action={{fn @setSchoolNewVocabulary (not @schoolNewVocabulary)}}
data-test-new-vocabulary
/>
{{/if}}
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -75,6 +75,7 @@
@icon="trash"
class="clickable remove enabled"
{{on "click" (perform this.deleteTerm)}}
data-test-delete
/>
{{else}}
<FaIcon @icon="trash" class="disabled" />
Expand Down
184 changes: 184 additions & 0 deletions packages/frontend/tests/acceptance/school/competencies-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,184 @@
import { module, test, todo } from 'qunit';
import { currentURL } from '@ember/test-helpers';
import { setupApplicationTest } from 'frontend/tests/helpers';
import { setupAuthentication } from 'ilios-common';
import page from 'frontend/tests/pages/school';
import percySnapshot from '@percy/ember';

module('Acceptance | school/competencies', function (hooks) {
setupApplicationTest(hooks);

hooks.beforeEach(async function () {
this.school = this.server.create('school');
await setupAuthentication({ administeredSchools: [this.school] });

const domains = this.server.createList('competency', 2, {
school: this.school,
});
this.server.create('aamc-pcrs', {
competencies: [domains[0]],
});
this.server.createList('aamc-pcrs', 3);

this.server.createList('competency', 1, {
school: this.school,
parent: domains[0],
});
});

test('collapsed competencies', async function (assert) {
assert.expect(7);
await page.visit({ schoolId: this.school.id });
assert.strictEqual(currentURL(), '/schools/1');
await percySnapshot(assert);

assert.strictEqual(page.manager.schoolCompetenciesCollapsed.title.text, 'Competencies (2/1)');
const { domains } = page.manager.schoolCompetenciesCollapsed;
assert.strictEqual(domains.length, 2);
assert.strictEqual(domains[0].title, 'competency 0');
assert.strictEqual(domains[0].summary, 'There is 1 subcompetency');
assert.strictEqual(domains[1].title, 'competency 1');
assert.strictEqual(domains[1].summary, 'There are 0 subcompetencies');
});

test('expanded competencies', async function (assert) {
assert.expect(11);
await page.visit({ schoolId: this.school.id, schoolCompetencyDetails: true });
await percySnapshot(assert);

assert.strictEqual(
page.manager.schoolCompetenciesExpanded.collapser.text,
'Competencies (2/1)',
);
const { items } = page.manager.schoolCompetenciesExpanded.competenciesList;
assert.strictEqual(items.length, 3);
assert.strictEqual(items[0].title.text, 'competency 0');
assert.strictEqual(items[1].title.text, 'competency 2');
assert.strictEqual(items[2].title.text, 'competency 1');

assert.strictEqual(items[0].pcrs.items.length, 1);
assert.strictEqual(items[0].pcrs.items[0].text, '1 aamc pcrs 0');

assert.strictEqual(items[1].pcrs.items.length, 1);
assert.strictEqual(items[1].pcrs.items[0].text, 'Click to edit');

assert.strictEqual(items[2].pcrs.items.length, 1);
assert.strictEqual(items[2].pcrs.items[0].text, 'Click to edit');
});

test('manager', async function (assert) {
assert.expect(5);
await page.visit({ schoolId: this.school.id, schoolCompetencyDetails: true });

await page.manager.schoolCompetenciesExpanded.manage();
await percySnapshot(assert);
const { domains } = page.manager.schoolCompetenciesExpanded.competenciesManager;

assert.strictEqual(domains.length, 2);
assert.strictEqual(domains[0].details.editor.text, 'competency 0');
assert.strictEqual(domains[0].competencies.length, 1);
assert.strictEqual(domains[0].competencies[0].editor.text, 'competency 2');
assert.strictEqual(domains[1].details.editor.text, 'competency 1');
});

test('add new domain', async function (assert) {
assert.expect(8);
await page.visit({ schoolId: this.school.id, schoolCompetencyDetails: true });

const { schoolCompetenciesExpanded: e } = page.manager;
await e.manage();
await e.competenciesManager.newDomain.newCompetency.title.set('new domain');
await e.competenciesManager.newDomain.newCompetency.save();

const { domains } = e.competenciesManager;
assert.strictEqual(domains.length, 3);
assert.strictEqual(domains[0].details.editor.text, 'competency 0');
assert.strictEqual(domains[0].competencies.length, 1);
assert.strictEqual(domains[0].competencies[0].editor.text, 'competency 2');
assert.strictEqual(domains[1].details.editor.text, 'competency 1');
assert.strictEqual(domains[1].competencies.length, 0);
assert.strictEqual(domains[2].details.editor.text, 'new domain');
assert.strictEqual(domains[2].competencies.length, 0);
});

test('add new sub competency', async function (assert) {
assert.expect(7);
await page.visit({ schoolId: this.school.id, schoolCompetencyDetails: true });

const { schoolCompetenciesExpanded: e } = page.manager;
await e.manage();
const { domains } = e.competenciesManager;
await domains[0].newCompetency.title.set('new sub competency');
await domains[0].newCompetency.save();

assert.strictEqual(domains.length, 2);
assert.strictEqual(domains[0].details.editor.text, 'competency 0');
assert.strictEqual(domains[0].competencies.length, 2);
assert.strictEqual(domains[0].competencies[0].editor.text, 'competency 2');
assert.strictEqual(domains[0].competencies[1].editor.text, 'new sub competency');
assert.strictEqual(domains[1].details.editor.text, 'competency 1');
assert.strictEqual(domains[1].competencies.length, 0);
});

test('edit domain title', async function (assert) {
assert.expect(3);
await page.visit({ schoolId: this.school.id, schoolCompetencyDetails: true });

const { schoolCompetenciesExpanded: e } = page.manager;
await e.manage();
const { domains } = e.competenciesManager;
await domains[0].details.editor.title.edit();
await domains[0].details.editor.title.set('new title');
await domains[0].details.editor.title.save();
assert.strictEqual(domains.length, 2);
assert.strictEqual(domains[0].details.editor.text, 'competency 1');
assert.strictEqual(domains[1].details.editor.text, 'new title');
});

test('edit competency title', async function (assert) {
assert.expect(5);
await page.visit({ schoolId: this.school.id, schoolCompetencyDetails: true });

await page.manager.schoolCompetenciesExpanded.manage();
await percySnapshot(assert);
const { domains } = page.manager.schoolCompetenciesExpanded.competenciesManager;

await domains[0].competencies[0].editor.title.edit();
await domains[0].competencies[0].editor.title.set('new title');
await domains[0].competencies[0].editor.title.save();

assert.strictEqual(domains.length, 2);
assert.strictEqual(domains[0].details.editor.text, 'competency 0');
assert.strictEqual(domains[0].competencies.length, 1);
assert.strictEqual(domains[0].competencies[0].editor.text, 'new title');
assert.strictEqual(domains[1].details.editor.text, 'competency 1');
});

todo('save changes', async function (assert) {
assert.expect(4);
await page.visit({ schoolId: this.school.id, schoolCompetencyDetails: true });
const { schoolCompetenciesExpanded: e } = page.manager;
await e.manage();
const { domains } = e.competenciesManager;
await domains[0].details.editor.title.edit();
await domains[0].details.editor.title.set('aa domain');
await domains[0].details.editor.title.save();
await domains[0].competencies[0].editor.title.edit();
await domains[0].competencies[0].editor.title.set('aa competency');
await domains[0].competencies[0].editor.title.save();
await domains[0].newCompetency.title.set('new sub competency');
await domains[0].newCompetency.save();
await domains[1].remove();
await domains[0].competencies[0].remove();
await e.competenciesManager.newDomain.newCompetency.title.set('new domain');
await e.competenciesManager.newDomain.newCompetency.save();

await e.save();

const { items } = e.competenciesList;
assert.strictEqual(items.length, 3);
assert.strictEqual(items[0].title.text, 'aa domain');
assert.strictEqual(items[1].title.text, 'new sub competency');
assert.strictEqual(items[2].title.text, 'new domain');
});
});
49 changes: 49 additions & 0 deletions packages/frontend/tests/acceptance/school/emails-test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import { module, test } from 'qunit';
import { currentURL } from '@ember/test-helpers';
import { setupApplicationTest } from 'frontend/tests/helpers';
import { setupAuthentication } from 'ilios-common';
import page from 'frontend/tests/pages/school';
import percySnapshot from '@percy/ember';

module('Acceptance | school/emails', function (hooks) {
setupApplicationTest(hooks);

hooks.beforeEach(async function () {
this.school = this.server.create('school', {
iliosAdministratorEmail: '[email protected]',
changeAlertRecipients: '[email protected], [email protected]',
});
await setupAuthentication({ administeredSchools: [this.school] });
});

test('view', async function (assert) {
assert.expect(7);
await page.visit({ schoolId: this.school.id });
assert.strictEqual(currentURL(), '/schools/1');
await percySnapshot(assert);
const { emails: c } = page.manager;

assert.strictEqual(c.title, 'Emails');
assert.ok(c.canManage);
assert.strictEqual(c.changeAlertRecipients.label, 'Change-alert Recipients:');
assert.strictEqual(c.changeAlertRecipients.value, '[email protected], [email protected]');
assert.strictEqual(c.administratorEmail.label, 'Administrator Email:');
assert.strictEqual(c.administratorEmail.value, '[email protected]');
});

test('manage', async function (assert) {
assert.expect(2);
await page.visit({ schoolId: this.school.id, schoolManageEmails: true });
await percySnapshot(assert);
const { emailsEditor: c } = page.manager;

await c.administratorEmail.set('[email protected]');
await c.changeAlertRecipients.set('[email protected]');
await c.save();

const { emails } = page.manager;

assert.strictEqual(emails.administratorEmail.value, '[email protected]');
assert.strictEqual(emails.changeAlertRecipients.value, '[email protected]');
});
});
Loading

0 comments on commit 6e678ac

Please sign in to comment.