From 279d552eca49fe21338d2eca5a44cdb7670aaa08 Mon Sep 17 00:00:00 2001 From: Randall Morey Date: Thu, 23 Jul 2020 14:50:48 -0400 Subject: [PATCH] test: update projects acceptance tests to work with scopes --- ui/core/tests/acceptance/projects-test.js | 88 +++++++++++++---------- ui/core/tests/helpers/.gitkeep | 0 2 files changed, 50 insertions(+), 38 deletions(-) delete mode 100644 ui/core/tests/helpers/.gitkeep diff --git a/ui/core/tests/acceptance/projects-test.js b/ui/core/tests/acceptance/projects-test.js index 0e7877c97..580a4a443 100644 --- a/ui/core/tests/acceptance/projects-test.js +++ b/ui/core/tests/acceptance/projects-test.js @@ -9,41 +9,57 @@ module('Acceptance | projects', function (hooks) { setupApplicationTest(hooks); setupMirage(hooks); - hooks.beforeEach(function () { - this.server.create('org'); - }); + let org; + let orgID; + let projectsURL; + let newProjectURL; + let existingProject; + let existingProjectURL; + let getProjectScopesCount; + let getFirstProjectScope; + let initialProjectScopesCount; + hooks.beforeEach(function () { + org = this.server.create('scope', {type: 'org'}, 'withChildren'); + getProjectScopesCount = () => this.server.schema.scopes.where({type: 'project'}).length; + getFirstProjectScope = () => this.server.schema.scopes.where({type: 'project'}).models[0]; + initialProjectScopesCount = getProjectScopesCount(); + orgID = org.id; + projectsURL = `/scopes/${orgID}/projects`; + newProjectURL = `/scopes/${orgID}/projects/new`; + existingProject = getFirstProjectScope(); + existingProjectURL = `/scopes/${orgID}/projects/${existingProject.id}`; + }); test('visiting projects', async function (assert) { assert.expect(1); this.server.createList('project', 1); - await visit('/orgs/1/projects'); + await visit(projectsURL); await a11yAudit(); - assert.equal(currentURL(), '/orgs/1/projects'); + assert.equal(currentURL(), projectsURL); }); test('can create new projects', async function (assert) { - assert.expect(3); - assert.equal(this.server.db.projects.length, 0); - await visit('/orgs/1/projects/new'); + assert.expect(1); + await visit(newProjectURL); + await a11yAudit(); await fillIn('[name="name"]', 'random string'); await click('[type="submit"]'); - assert.equal(currentURL(), '/orgs/1/projects/1'); - assert.equal(this.server.db.projects.length, 1); + assert.equal(getProjectScopesCount(), initialProjectScopesCount + 1); }); test('can cancel create new projects', async function (assert) { assert.expect(3); - assert.equal(this.server.db.projects.length, 0); - await visit('/orgs/1/projects/new'); + assert.equal(getProjectScopesCount(), initialProjectScopesCount); + await visit(newProjectURL); await fillIn('[name="name"]', 'random string'); await click('.rose-form-actions [type="button"]'); - assert.equal(currentURL(), '/orgs/1/projects'); - assert.equal(this.server.db.projects.length, 0); + assert.equal(currentURL(), projectsURL); + assert.equal(getProjectScopesCount(), initialProjectScopesCount); }); test('saving a new project with invalid fields displays error messages', async function (assert) { assert.expect(2); - this.server.post('/orgs/:org_id/projects', () => { + this.server.post('/scopes', () => { return new Response( 400, {}, @@ -62,8 +78,7 @@ module('Acceptance | projects', function (hooks) { } ); }); - await visit('/orgs/1/projects/new'); - await fillIn('[name="name"]', 'random string'); + await visit(newProjectURL); await click('[type="submit"]'); assert.ok( find('[role="alert"]').textContent.trim(), @@ -78,37 +93,35 @@ module('Acceptance | projects', function (hooks) { }); test('can save changes to existing project', async function (assert) { - assert.expect(2); - this.server.createList('project', 1, {name: 'MyProject'}); - await visit('/orgs/1/projects/1'); + assert.expect(3); + assert.notEqual(existingProject.name, 'random string'); + await visit(existingProjectURL); await fillIn('[name="name"]', 'random string'); await click('.rose-form-actions [type="submit"]'); - assert.equal(currentURL(), '/orgs/1/projects/1'); - assert.equal(this.server.db.projects[0].name, 'random string'); + assert.equal(currentURL(), existingProjectURL); + assert.equal(getFirstProjectScope().name, 'random string'); }); test('can cancel changes to existing project', async function (assert) { - assert.expect(1); - this.server.createList('project', 1, {name: 'MyProject'}); - await visit('/orgs/1/projects/1'); + assert.expect(2); + await visit(existingProjectURL); await fillIn('[name="name"]', 'random string'); await click('.rose-form-actions [type="button"]'); - assert.equal(find('[name="name"]').value, 'MyProject'); + assert.notEqual(existingProject.name, 'random string'); + assert.equal(find('[name="name"]').value, existingProject.name); }); test('can delete project', async function(assert) { - assert.expect(2); - this.server.createList('project', 1); - assert.equal(this.server.db.projects.length, 1); - await visit('/orgs/1/projects/1'); + assert.expect(1); + await visit(existingProjectURL); await click('.rose-button-warning'); - assert.equal(this.server.db.projects.length, 0); + assert.equal(getProjectScopesCount(), initialProjectScopesCount - 1); }); test('saving an existing project with invalid fields displays error messages', async function (assert) { assert.expect(2); this.server.createList('project', 1); - this.server.patch('/orgs/:org_id/projects/:id', () => { + this.server.patch('/scopes/:id', () => { return new Response( 400, {}, @@ -127,7 +140,7 @@ module('Acceptance | projects', function (hooks) { } ); }); - await visit('/orgs/1/projects/1'); + await visit(existingProjectURL); await fillIn('[name="name"]', 'random string'); await click('[type="submit"]'); assert.ok( @@ -144,8 +157,7 @@ module('Acceptance | projects', function (hooks) { test('errors are displayed when save project fails', async function (assert) { assert.expect(1); - this.server.createList('project', 1); - this.server.patch('/orgs/:org_id/projects/:id', () => { + this.server.patch('/scopes/:id', () => { return new Response( 490, {}, @@ -156,7 +168,7 @@ module('Acceptance | projects', function (hooks) { } ); }); - await visit('/orgs/1/projects/1'); + await visit(existingProjectURL); await fillIn('[name="name"]', 'random string'); await click('[type="submit"]'); assert.ok( @@ -169,7 +181,7 @@ module('Acceptance | projects', function (hooks) { test('errors are displayed when delete project fails', async function (assert) { assert.expect(1); this.server.createList('project', 1); - this.server.del('/orgs/:org_id/projects/:id', () => { + this.server.del('/scopes/:id', () => { return new Response( 490, {}, @@ -180,7 +192,7 @@ module('Acceptance | projects', function (hooks) { } ); }); - await visit('/orgs/1/projects/1'); + await visit(existingProjectURL); await click('.rose-button-warning'); assert.ok( find('[role="alert"]').textContent.trim(), diff --git a/ui/core/tests/helpers/.gitkeep b/ui/core/tests/helpers/.gitkeep deleted file mode 100644 index e69de29bb..000000000