Refactor: 💡 User acceptance tests - create, delete and read (#2718)
* refactor: 💡 user - create, delete and read tests * fix: 🐛 removed 'this' usage, updated user create test
This commit is contained in:
1 parent
19b6e5154f
commit
d212cf7c40
4 files changed
+61
-57
No files matched your search
@@ -57,9 +57,9 @@ module('Acceptance | users | create', function (hooks) {
|
||||
const usersCount = getUsersCount();
|
||||
await visit(urls.users);
|
||||
|
||||
await click(`[href="${urls.newUser}"]`);
|
||||
await fillIn('[name="name"]', 'User name');
|
||||
await click('[type="submit"]');
|
||||
await click(commonSelectors.HREF(urls.newUser));
|
||||
await fillIn(commonSelectors.FIELD_NAME, commonSelectors.FIELD_NAME_VALUE);
|
||||
await click(commonSelectors.SAVE_BTN);
|
||||
|
||||
assert.strictEqual(getUsersCount(), usersCount + 1);
|
||||
});
|
||||
@@ -67,14 +67,14 @@ module('Acceptance | users | create', function (hooks) {
|
||||
test('users can navigate to new users route with proper authorization', async function (assert) {
|
||||
await visit(urls.orgScope);
|
||||
|
||||
await click(`[href="${urls.users}"]`);
|
||||
await click(commonSelectors.HREF(urls.users));
|
||||
|
||||
assert.true(
|
||||
instances.scopes.org.authorized_collection_actions.users.includes(
|
||||
'create',
|
||||
),
|
||||
);
|
||||
assert.dom(`[href="${urls.newUser}"]`).exists();
|
||||
assert.dom(commonSelectors.HREF(urls.newUser)).exists();
|
||||
});
|
||||
|
||||
test('users cannot navigate to new users route without proper authorization', async function (assert) {
|
||||
@@ -84,7 +84,7 @@ module('Acceptance | users | create', function (hooks) {
|
||||
);
|
||||
await visit(urls.orgScope);
|
||||
|
||||
await click(`[href="${urls.users}"]`);
|
||||
await click(commonSelectors.HREF(urls.users));
|
||||
|
||||
assert.false(
|
||||
instances.scopes.org.authorized_collection_actions.users.includes(
|
||||
@@ -92,16 +92,16 @@ module('Acceptance | users | create', function (hooks) {
|
||||
),
|
||||
);
|
||||
|
||||
assert.dom('.rose-button-primary').doesNotExist();
|
||||
assert.dom(commonSelectors.HREF(urls.newUser)).doesNotExist();
|
||||
});
|
||||
|
||||
test('can cancel creation of a new user', async function (assert) {
|
||||
const usersCount = getUsersCount();
|
||||
await visit(urls.users);
|
||||
|
||||
await click(`[href="${urls.newUser}"]`);
|
||||
await fillIn('[name="name"]', 'User name');
|
||||
await click('.rose-form-actions [type="button"]');
|
||||
await click(commonSelectors.HREF(urls.newUser));
|
||||
await fillIn(commonSelectors.FIELD_NAME, commonSelectors.FIELD_NAME_VALUE);
|
||||
await click(commonSelectors.CANCEL_BTN);
|
||||
|
||||
assert.strictEqual(currentURL(), urls.users);
|
||||
assert.strictEqual(getUsersCount(), usersCount);
|
||||
@@ -109,6 +109,8 @@ module('Acceptance | users | create', function (hooks) {
|
||||
|
||||
test('saving a new user with invalid fields displays error messages', async function (assert) {
|
||||
const usersCount = getUsersCount();
|
||||
const errorMessage =
|
||||
'Invalid request. Request attempted to make second resource with the same field value that must be unique.';
|
||||
await visit(urls.users);
|
||||
this.server.post('/users', () => {
|
||||
return new Response(
|
||||
@@ -117,28 +119,20 @@ module('Acceptance | users | create', function (hooks) {
|
||||
{
|
||||
status: 400,
|
||||
code: 'invalid_argument',
|
||||
message: 'The request was invalid.',
|
||||
details: {
|
||||
request_fields: [
|
||||
{
|
||||
name: 'name',
|
||||
description: 'Name is required.',
|
||||
},
|
||||
],
|
||||
},
|
||||
message: errorMessage,
|
||||
},
|
||||
);
|
||||
});
|
||||
|
||||
await click(`[href="${urls.newUser}"]`);
|
||||
await fillIn('[name="description"]', 'test');
|
||||
await click('[type="submit"]');
|
||||
await click(commonSelectors.HREF(urls.newUser));
|
||||
await fillIn(
|
||||
commonSelectors.FIELD_DESCRIPTION,
|
||||
commonSelectors.FIELD_DESCRIPTION_VALUE,
|
||||
);
|
||||
await click(commonSelectors.SAVE_BTN);
|
||||
|
||||
assert.strictEqual(getUsersCount(), usersCount);
|
||||
assert
|
||||
.dom(commonSelectors.ALERT_TOAST_BODY)
|
||||
.hasText('The request was invalid.');
|
||||
assert.dom('[data-test-error-message-name]').hasText('Name is required.');
|
||||
assert.dom(commonSelectors.ALERT_TOAST_BODY).hasText(errorMessage);
|
||||
});
|
||||
|
||||
test('users cannot directly navigate to new user route without proper authorization', async function (assert) {
|
||||
|
||||
@@ -11,15 +11,15 @@ import { setupIndexedDb } from 'api/test-support/helpers/indexed-db';
|
||||
import { Response } from 'miragejs';
|
||||
import { authenticateSession } from 'ember-simple-auth/test-support';
|
||||
import * as commonSelectors from 'admin/tests/helpers/selectors';
|
||||
import * as selectors from './selectors';
|
||||
|
||||
module('Acceptance | users | delete', function (hooks) {
|
||||
setupApplicationTest(hooks);
|
||||
setupMirage(hooks);
|
||||
setupIndexedDb(hooks);
|
||||
const DELETE_ACTION_SELECTOR =
|
||||
'[data-test-manage-user-dropdown] ul li button';
|
||||
const MANAGE_DROPDOWN_SELECTOR =
|
||||
'[data-test-manage-user-dropdown] button:first-child';
|
||||
|
||||
let getUsersCount, confirmService;
|
||||
|
||||
const instances = {
|
||||
scopes: {
|
||||
global: null,
|
||||
@@ -46,20 +46,22 @@ module('Acceptance | users | delete', function (hooks) {
|
||||
urls.orgScope = `/scopes/${instances.scopes.org.id}`;
|
||||
urls.users = `${urls.orgScope}/users`;
|
||||
urls.user = `${urls.users}/${instances.user.id}`;
|
||||
getUsersCount = () => this.server.schema.users.all().models.length;
|
||||
confirmService = this.owner.lookup('service:confirm');
|
||||
|
||||
await authenticateSession({});
|
||||
});
|
||||
|
||||
test('can delete a user', async function (assert) {
|
||||
const usersCount = this.server.db.users.length;
|
||||
const usersCount = getUsersCount();
|
||||
await visit(urls.users);
|
||||
|
||||
await click(`[href="${urls.user}"]`);
|
||||
await click(commonSelectors.HREF(urls.user));
|
||||
|
||||
await click(MANAGE_DROPDOWN_SELECTOR);
|
||||
await click(DELETE_ACTION_SELECTOR);
|
||||
await click(selectors.MANAGE_DROPDOWN_USER);
|
||||
await click(selectors.MANAGE_DROPDOWN_USER_DELETE);
|
||||
|
||||
assert.strictEqual(this.server.db.users.length, usersCount - 1);
|
||||
assert.strictEqual(getUsersCount(), usersCount - 1);
|
||||
});
|
||||
|
||||
test('cannot delete a user without proper authorization', async function (assert) {
|
||||
@@ -67,42 +69,40 @@ module('Acceptance | users | delete', function (hooks) {
|
||||
instances.user.authorized_actions.filter((item) => item !== 'delete');
|
||||
await visit(urls.users);
|
||||
|
||||
await click(`[href="${urls.user}"]`);
|
||||
await click(commonSelectors.HREF(urls.user));
|
||||
|
||||
await click(MANAGE_DROPDOWN_SELECTOR);
|
||||
assert.dom('[data-test-manage-user-dropdown] ul li button').doesNotExist();
|
||||
await click(selectors.MANAGE_DROPDOWN_USER);
|
||||
assert.dom(selectors.MANAGE_DROPDOWN_USER_DELETE).doesNotExist();
|
||||
});
|
||||
|
||||
test('can accept delete user via dialog', async function (assert) {
|
||||
const confirmService = this.owner.lookup('service:confirm');
|
||||
const usersCount = getUsersCount();
|
||||
confirmService.enabled = true;
|
||||
const usersCount = this.server.db.users.length;
|
||||
await visit(urls.users);
|
||||
|
||||
await click(`[href="${urls.user}"]`);
|
||||
await click(MANAGE_DROPDOWN_SELECTOR);
|
||||
await click(DELETE_ACTION_SELECTOR);
|
||||
await click(commonSelectors.HREF(urls.user));
|
||||
await click(selectors.MANAGE_DROPDOWN_USER);
|
||||
await click(selectors.MANAGE_DROPDOWN_USER_DELETE);
|
||||
await click(commonSelectors.MODAL_WARNING_CONFIRM_BTN);
|
||||
|
||||
assert
|
||||
.dom(commonSelectors.ALERT_TOAST_BODY)
|
||||
.hasText('Deleted successfully.');
|
||||
assert.strictEqual(this.server.db.users.length, usersCount - 1);
|
||||
assert.strictEqual(getUsersCount(), usersCount - 1);
|
||||
assert.strictEqual(currentURL(), urls.users);
|
||||
});
|
||||
|
||||
test('can cancel delete user via dialog', async function (assert) {
|
||||
const confirmService = this.owner.lookup('service:confirm');
|
||||
const usersCount = getUsersCount();
|
||||
confirmService.enabled = true;
|
||||
const usersCount = this.server.db.users.length;
|
||||
await visit(urls.users);
|
||||
|
||||
await click(`[href="${urls.user}"]`);
|
||||
await click(MANAGE_DROPDOWN_SELECTOR);
|
||||
await click(DELETE_ACTION_SELECTOR);
|
||||
await click(commonSelectors.HREF(urls.user));
|
||||
await click(selectors.MANAGE_DROPDOWN_USER);
|
||||
await click(selectors.MANAGE_DROPDOWN_USER_DELETE);
|
||||
await click(commonSelectors.MODAL_WARNING_CANCEL_BTN);
|
||||
|
||||
assert.strictEqual(this.server.db.users.length, usersCount);
|
||||
assert.strictEqual(getUsersCount(), usersCount);
|
||||
assert.strictEqual(currentURL(), urls.user);
|
||||
});
|
||||
|
||||
@@ -120,9 +120,10 @@ module('Acceptance | users | delete', function (hooks) {
|
||||
);
|
||||
});
|
||||
|
||||
await click(`[href="${urls.user}"]`);
|
||||
await click(MANAGE_DROPDOWN_SELECTOR);
|
||||
await click(DELETE_ACTION_SELECTOR);
|
||||
await click(commonSelectors.HREF(urls.user));
|
||||
await click(selectors.MANAGE_DROPDOWN_USER);
|
||||
await click(selectors.MANAGE_DROPDOWN_USER_DELETE);
|
||||
|
||||
assert.dom(commonSelectors.ALERT_TOAST_BODY).hasText('Oops.');
|
||||
});
|
||||
});
|
||||
@@ -50,7 +50,7 @@ module('Acceptance | users | read', function (hooks) {
|
||||
await visit(urls.orgScope);
|
||||
await a11yAudit();
|
||||
|
||||
await click(`[href="${urls.users}"]`);
|
||||
await click(commonSelectors.HREF(urls.users));
|
||||
await a11yAudit();
|
||||
|
||||
assert.strictEqual(currentURL(), urls.users);
|
||||
@@ -59,7 +59,7 @@ module('Acceptance | users | read', function (hooks) {
|
||||
test('visiting user', async function (assert) {
|
||||
await visit(urls.users);
|
||||
|
||||
await click(`[href="${urls.user}"]`);
|
||||
await click(commonSelectors.HREF(urls.user));
|
||||
await a11yAudit();
|
||||
|
||||
assert.strictEqual(currentURL(), urls.user);
|
||||
@@ -70,7 +70,7 @@ module('Acceptance | users | read', function (hooks) {
|
||||
instances.user.authorized_actions.filter((item) => item !== 'read');
|
||||
await visit(urls.orgScope);
|
||||
|
||||
await click(`[href="${urls.users}"]`);
|
||||
await click(commonSelectors.HREF(urls.users));
|
||||
|
||||
assert.dom(commonSelectors.TABLE_RESOURCE_LINK(urls.user)).doesNotExist();
|
||||
});
|
||||
@@ -78,7 +78,7 @@ module('Acceptance | users | read', function (hooks) {
|
||||
test('users can link to docs page for users', async function (assert) {
|
||||
await visit(urls.orgScope);
|
||||
|
||||
await click(`[href="${urls.users}"]`);
|
||||
await click(commonSelectors.HREF(urls.users));
|
||||
|
||||
assert
|
||||
.dom(
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
/**
|
||||
* Copyright (c) HashiCorp, Inc.
|
||||
* SPDX-License-Identifier: BUSL-1.1
|
||||
*/
|
||||
|
||||
export const MANAGE_DROPDOWN_USER_DELETE =
|
||||
'[data-test-manage-user-dropdown] ul li button';
|
||||
export const MANAGE_DROPDOWN_USER =
|
||||
'[data-test-manage-user-dropdown] button:first-child';
|
||||
Reference in new issue
Block a user