diff --git a/app/controllers/crate/owners.js b/app/controllers/crate/settings.js similarity index 95% rename from app/controllers/crate/owners.js rename to app/controllers/crate/settings.js index c3686705ade..07e02eb7ec6 100644 --- a/app/controllers/crate/owners.js +++ b/app/controllers/crate/settings.js @@ -3,7 +3,7 @@ import { inject as service } from '@ember/service'; import { task } from 'ember-concurrency'; -export default class CrateOwnersController extends Controller { +export default class CrateSettingsController extends Controller { @service notifications; crate = null; diff --git a/app/router.js b/app/router.js index d1cb61f263b..2388120c9c4 100644 --- a/app/router.js +++ b/app/router.js @@ -20,6 +20,7 @@ Router.map(function () { this.route('reverse-dependencies', { path: 'reverse_dependencies' }); this.route('owners'); + this.route('settings'); // Well-known routes this.route('docs'); diff --git a/app/routes/crate/owners.js b/app/routes/crate/owners.js index a2abad0eed9..22e86c29733 100644 --- a/app/routes/crate/owners.js +++ b/app/routes/crate/owners.js @@ -1,9 +1,9 @@ import Route from '@ember/routing/route'; export default class OwnersRoute extends Route { - setupController(controller) { - super.setupController(...arguments); + redirect() { let crate = this.modelFor('crate'); - controller.set('crate', crate); + + this.transitionTo('crate.settings', crate); } } diff --git a/app/routes/crate/settings.js b/app/routes/crate/settings.js new file mode 100644 index 00000000000..bb3bc9f1fcd --- /dev/null +++ b/app/routes/crate/settings.js @@ -0,0 +1,9 @@ +import Route from '@ember/routing/route'; + +export default class SettingsRoute extends Route { + setupController(controller) { + super.setupController(...arguments); + let crate = this.modelFor('crate'); + controller.set('crate', crate); + } +} diff --git a/app/styles/crate/owners.module.css b/app/styles/crate/settings.module.css similarity index 100% rename from app/styles/crate/owners.module.css rename to app/styles/crate/settings.module.css diff --git a/app/templates/crate/owners.hbs b/app/templates/crate/settings.hbs similarity index 97% rename from app/templates/crate/owners.hbs rename to app/templates/crate/settings.hbs index aa110e666a4..623b238a95e 100644 --- a/app/templates/crate/owners.hbs +++ b/app/templates/crate/settings.hbs @@ -1,4 +1,4 @@ -{{page-title 'Manage Crate Owners'}} +{{page-title 'Manage Crate Settings'}} diff --git a/tests/acceptance/crate-test.js b/tests/acceptance/crate-test.js index 37976c5c6d2..bba3a199949 100644 --- a/tests/acceptance/crate-test.js +++ b/tests/acceptance/crate-test.js @@ -201,7 +201,7 @@ module('Acceptance | crate page', function (hooks) { assert.dom('[data-test-settings-tab]').doesNotExist(); }); - test('navigating to the owners page', async function (assert) { + test('navigating to the settings page', async function (assert) { this.server.loadFixtures(); let user = this.server.schema.users.findBy({ login: 'thehydroimpulse' }); @@ -210,6 +210,6 @@ module('Acceptance | crate page', function (hooks) { await visit('/crates/nanomsg'); await click('[data-test-settings-tab] a'); - assert.equal(currentURL(), '/crates/nanomsg/owners'); + assert.equal(currentURL(), '/crates/nanomsg/settings'); }); }); diff --git a/tests/acceptance/owners-test.js b/tests/acceptance/settings-test.js similarity index 86% rename from tests/acceptance/owners-test.js rename to tests/acceptance/settings-test.js index 7787c7c05a2..39bdca739cc 100644 --- a/tests/acceptance/owners-test.js +++ b/tests/acceptance/settings-test.js @@ -1,4 +1,4 @@ -import { click, fillIn, visit } from '@ember/test-helpers'; +import { click, currentURL, fillIn, visit } from '@ember/test-helpers'; import { module, test } from 'qunit'; import percySnapshot from '@percy/ember'; @@ -8,13 +8,14 @@ import { setupApplicationTest } from 'cargo/tests/helpers'; import axeConfig from '../axe-config'; -module('Acceptance | /crates/:name/owners', function (hooks) { +module('Acceptance | /crates/:name/settings', function (hooks) { setupApplicationTest(hooks); test('listing crate owners', async function (assert) { this.server.loadFixtures(); - await visit('/crates/nanomsg/owners'); + await visit('/crates/nanomsg/settings'); + assert.equal(currentURL(), '/crates/nanomsg/settings'); assert.dom('[data-test-owners] [data-test-owner-team]').exists({ count: 2 }); assert.dom('[data-test-owners] [data-test-owner-user]').exists({ count: 2 }); @@ -27,10 +28,17 @@ module('Acceptance | /crates/:name/owners', function (hooks) { await a11yAudit(axeConfig); }); - test('attempting to add owner without username', async function (assert) { + test('/crates/:name/owners redirects to /crates/:name/settings', async function (assert) { this.server.loadFixtures(); await visit('/crates/nanomsg/owners'); + assert.equal(currentURL(), '/crates/nanomsg/settings'); + }); + + test('attempting to add owner without username', async function (assert) { + this.server.loadFixtures(); + + await visit('/crates/nanomsg/settings'); await fillIn('input[name="username"]', ''); assert.dom('[data-test-save-button]').isDisabled(); }); @@ -38,7 +46,7 @@ module('Acceptance | /crates/:name/owners', function (hooks) { test('attempting to add non-existent owner', async function (assert) { this.server.loadFixtures(); - await visit('/crates/nanomsg/owners'); + await visit('/crates/nanomsg/settings'); await fillIn('input[name="username"]', 'spookyghostboo'); await click('[data-test-save-button]'); @@ -52,7 +60,7 @@ module('Acceptance | /crates/:name/owners', function (hooks) { test('add a new owner', async function (assert) { this.server.loadFixtures(); - await visit('/crates/nanomsg/owners'); + await visit('/crates/nanomsg/settings'); await fillIn('input[name="username"]', 'iain8'); await click('[data-test-save-button]'); @@ -64,7 +72,7 @@ module('Acceptance | /crates/:name/owners', function (hooks) { test('remove a crate owner when owner is a user', async function (assert) { this.server.loadFixtures(); - await visit('/crates/nanomsg/owners'); + await visit('/crates/nanomsg/settings'); await click('[data-test-owner-user="thehydroimpulse"] [data-test-remove-owner-button]'); assert.dom('[data-test-notification-message="success"]').hasText('User thehydroimpulse removed as crate owner'); @@ -86,7 +94,7 @@ module('Acceptance | /crates/:name/owners', function (hooks) { this.authenticateAs(user); - await visit(`/crates/${crate.name}/owners`); + await visit(`/crates/${crate.name}/settings`); await click(`[data-test-owner-user="${user2.login}"] [data-test-remove-owner-button]`); assert @@ -98,7 +106,7 @@ module('Acceptance | /crates/:name/owners', function (hooks) { test('remove a crate owner when owner is a team', async function (assert) { this.server.loadFixtures(); - await visit('/crates/nanomsg/owners'); + await visit('/crates/nanomsg/settings'); await click('[data-test-owner-team="github:org:thehydroimpulse"] [data-test-remove-owner-button]'); assert @@ -122,7 +130,7 @@ module('Acceptance | /crates/:name/owners', function (hooks) { this.authenticateAs(user); - await visit(`/crates/${crate.name}/owners`); + await visit(`/crates/${crate.name}/settings`); await click(`[data-test-owner-team="${team.login}"] [data-test-remove-owner-button]`); assert