Skip to content

Commit aee3cb1

Browse files
committed
refactor: 💡 user - create, delete and read tests
1 parent 5e0fa7c commit aee3cb1

File tree

4 files changed

+58
-47
lines changed

4 files changed

+58
-47
lines changed

‎ui/admin/tests/acceptance/users/create-test.js

+17-14
Original file line numberDiff line numberDiff line change
@@ -57,24 +57,24 @@ module('Acceptance | users | create', function (hooks) {
5757
const usersCount = getUsersCount();
5858
await visit(urls.users);
5959

60-
await click(`[href="${urls.newUser}"]`);
61-
await fillIn('[name="name"]', 'User name');
62-
await click('[type="submit"]');
60+
await click(commonSelectors.HREF(urls.newUser));
61+
await fillIn(commonSelectors.FIELD_NAME, commonSelectors.FIELD_NAME_VALUE);
62+
await click(commonSelectors.SAVE_BTN);
6363

6464
assert.strictEqual(getUsersCount(), usersCount + 1);
6565
});
6666

6767
test('users can navigate to new users route with proper authorization', async function (assert) {
6868
await visit(urls.orgScope);
6969

70-
await click(`[href="${urls.users}"]`);
70+
await click(commonSelectors.HREF(urls.users));
7171

7272
assert.true(
7373
instances.scopes.org.authorized_collection_actions.users.includes(
7474
'create',
7575
),
7676
);
77-
assert.dom(`[href="${urls.newUser}"]`).exists();
77+
assert.dom(commonSelectors.HREF(urls.newUser)).exists();
7878
});
7979

8080
test('users cannot navigate to new users route without proper authorization', async function (assert) {
@@ -84,24 +84,24 @@ module('Acceptance | users | create', function (hooks) {
8484
);
8585
await visit(urls.orgScope);
8686

87-
await click(`[href="${urls.users}"]`);
87+
await click(commonSelectors.HREF(urls.users));
8888

8989
assert.false(
9090
instances.scopes.org.authorized_collection_actions.users.includes(
9191
'create',
9292
),
9393
);
9494

95-
assert.dom('.rose-button-primary').doesNotExist();
95+
assert.dom(commonSelectors.HREF(urls.newUser)).doesNotExist();
9696
});
9797

9898
test('can cancel creation of a new user', async function (assert) {
9999
const usersCount = getUsersCount();
100100
await visit(urls.users);
101101

102-
await click(`[href="${urls.newUser}"]`);
103-
await fillIn('[name="name"]', 'User name');
104-
await click('.rose-form-actions [type="button"]');
102+
await click(commonSelectors.HREF(urls.newUser));
103+
await fillIn(commonSelectors.FIELD_NAME, commonSelectors.FIELD_NAME_VALUE);
104+
await click(commonSelectors.CANCEL_BTN);
105105

106106
assert.strictEqual(currentURL(), urls.users);
107107
assert.strictEqual(getUsersCount(), usersCount);
@@ -130,15 +130,18 @@ module('Acceptance | users | create', function (hooks) {
130130
);
131131
});
132132

133-
await click(`[href="${urls.newUser}"]`);
134-
await fillIn('[name="description"]', 'test');
135-
await click('[type="submit"]');
133+
await click(commonSelectors.HREF(urls.newUser));
134+
await fillIn(
135+
commonSelectors.FIELD_DESCRIPTION,
136+
commonSelectors.FIELD_DESCRIPTION_VALUE,
137+
);
138+
await click(commonSelectors.SAVE_BTN);
136139

137140
assert.strictEqual(getUsersCount(), usersCount);
138141
assert
139142
.dom(commonSelectors.ALERT_TOAST_BODY)
140143
.hasText('The request was invalid.');
141-
assert.dom('[data-test-error-message-name]').hasText('Name is required.');
144+
assert.dom(commonSelectors.FIELD_NAME_ERROR).hasText('Name is required.');
142145
});
143146

144147
test('users cannot directly navigate to new user route without proper authorization', async function (assert) {

‎ui/admin/tests/acceptance/users/delete-test.js

+28-29
Original file line numberDiff line numberDiff line change
@@ -11,15 +11,13 @@ import { setupIndexedDb } from 'api/test-support/helpers/indexed-db';
1111
import { Response } from 'miragejs';
1212
import { authenticateSession } from 'ember-simple-auth/test-support';
1313
import * as commonSelectors from 'admin/tests/helpers/selectors';
14+
import * as selectors from './selectors';
1415

1516
module('Acceptance | users | delete', function (hooks) {
1617
setupApplicationTest(hooks);
1718
setupMirage(hooks);
1819
setupIndexedDb(hooks);
19-
const DELETE_ACTION_SELECTOR =
20-
'[data-test-manage-user-dropdown] ul li button';
21-
const MANAGE_DROPDOWN_SELECTOR =
22-
'[data-test-manage-user-dropdown] button:first-child';
20+
2321
const instances = {
2422
scopes: {
2523
global: null,
@@ -46,63 +44,63 @@ module('Acceptance | users | delete', function (hooks) {
4644
urls.orgScope = `/scopes/${instances.scopes.org.id}`;
4745
urls.users = `${urls.orgScope}/users`;
4846
urls.user = `${urls.users}/${instances.user.id}`;
47+
this.getUsersCount = () => this.server.schema.users.all().models.length;
48+
this.confirmService = this.owner.lookup('service:confirm');
4949

5050
await authenticateSession({});
5151
});
5252

5353
test('can delete a user', async function (assert) {
54-
const usersCount = this.server.db.users.length;
54+
const usersCount = this.getUsersCount();
5555
await visit(urls.users);
5656

57-
await click(`[href="${urls.user}"]`);
57+
await click(commonSelectors.HREF(urls.user));
5858

59-
await click(MANAGE_DROPDOWN_SELECTOR);
60-
await click(DELETE_ACTION_SELECTOR);
59+
await click(selectors.MANAGE_DROPDOWN_USER);
60+
await click(selectors.MANAGE_DROPDOWN_USER_DELETE);
6161

62-
assert.strictEqual(this.server.db.users.length, usersCount - 1);
62+
assert.strictEqual(this.getUsersCount(), usersCount - 1);
6363
});
6464

6565
test('cannot delete a user without proper authorization', async function (assert) {
6666
instances.user.authorized_actions =
6767
instances.user.authorized_actions.filter((item) => item !== 'delete');
6868
await visit(urls.users);
6969

70-
await click(`[href="${urls.user}"]`);
70+
await click(commonSelectors.HREF(urls.user));
7171

72-
await click(MANAGE_DROPDOWN_SELECTOR);
73-
assert.dom('[data-test-manage-user-dropdown] ul li button').doesNotExist();
72+
await click(selectors.MANAGE_DROPDOWN_USER);
73+
assert.dom(selectors.MANAGE_DROPDOWN_USER_DELETE).doesNotExist();
7474
});
7575

7676
test('can accept delete user via dialog', async function (assert) {
77-
const confirmService = this.owner.lookup('service:confirm');
78-
confirmService.enabled = true;
79-
const usersCount = this.server.db.users.length;
77+
const usersCount = this.getUsersCount();
78+
this.confirmService.enabled = true;
8079
await visit(urls.users);
8180

82-
await click(`[href="${urls.user}"]`);
83-
await click(MANAGE_DROPDOWN_SELECTOR);
84-
await click(DELETE_ACTION_SELECTOR);
81+
await click(commonSelectors.HREF(urls.user));
82+
await click(selectors.MANAGE_DROPDOWN_USER);
83+
await click(selectors.MANAGE_DROPDOWN_USER_DELETE);
8584
await click(commonSelectors.MODAL_WARNING_CONFIRM_BTN);
8685

8786
assert
8887
.dom(commonSelectors.ALERT_TOAST_BODY)
8988
.hasText('Deleted successfully.');
90-
assert.strictEqual(this.server.db.users.length, usersCount - 1);
89+
assert.strictEqual(this.getUsersCount(), usersCount - 1);
9190
assert.strictEqual(currentURL(), urls.users);
9291
});
9392

9493
test('can cancel delete user via dialog', async function (assert) {
95-
const confirmService = this.owner.lookup('service:confirm');
96-
confirmService.enabled = true;
97-
const usersCount = this.server.db.users.length;
94+
const usersCount = this.getUsersCount();
95+
this.confirmService.enabled = true;
9896
await visit(urls.users);
9997

100-
await click(`[href="${urls.user}"]`);
101-
await click(MANAGE_DROPDOWN_SELECTOR);
102-
await click(DELETE_ACTION_SELECTOR);
98+
await click(commonSelectors.HREF(urls.user));
99+
await click(selectors.MANAGE_DROPDOWN_USER);
100+
await click(selectors.MANAGE_DROPDOWN_USER_DELETE);
103101
await click(commonSelectors.MODAL_WARNING_CANCEL_BTN);
104102

105-
assert.strictEqual(this.server.db.users.length, usersCount);
103+
assert.strictEqual(this.getUsersCount(), usersCount);
106104
assert.strictEqual(currentURL(), urls.user);
107105
});
108106

@@ -120,9 +118,10 @@ module('Acceptance | users | delete', function (hooks) {
120118
);
121119
});
122120

123-
await click(`[href="${urls.user}"]`);
124-
await click(MANAGE_DROPDOWN_SELECTOR);
125-
await click(DELETE_ACTION_SELECTOR);
121+
await click(commonSelectors.HREF(urls.user));
122+
await click(selectors.MANAGE_DROPDOWN_USER);
123+
await click(selectors.MANAGE_DROPDOWN_USER_DELETE);
124+
126125
assert.dom(commonSelectors.ALERT_TOAST_BODY).hasText('Oops.');
127126
});
128127
});

‎ui/admin/tests/acceptance/users/read-test.js

+4-4
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ module('Acceptance | users | read', function (hooks) {
5050
await visit(urls.orgScope);
5151
await a11yAudit();
5252

53-
await click(`[href="${urls.users}"]`);
53+
await click(commonSelectors.HREF(urls.users));
5454
await a11yAudit();
5555

5656
assert.strictEqual(currentURL(), urls.users);
@@ -59,7 +59,7 @@ module('Acceptance | users | read', function (hooks) {
5959
test('visiting user', async function (assert) {
6060
await visit(urls.users);
6161

62-
await click(`[href="${urls.user}"]`);
62+
await click(commonSelectors.HREF(urls.user));
6363
await a11yAudit();
6464

6565
assert.strictEqual(currentURL(), urls.user);
@@ -70,15 +70,15 @@ module('Acceptance | users | read', function (hooks) {
7070
instances.user.authorized_actions.filter((item) => item !== 'read');
7171
await visit(urls.orgScope);
7272

73-
await click(`[href="${urls.users}"]`);
73+
await click(commonSelectors.HREF(urls.users));
7474

7575
assert.dom(commonSelectors.TABLE_RESOURCE_LINK(urls.user)).doesNotExist();
7676
});
7777

7878
test('users can link to docs page for users', async function (assert) {
7979
await visit(urls.orgScope);
8080

81-
await click(`[href="${urls.users}"]`);
81+
await click(commonSelectors.HREF(urls.users));
8282

8383
assert
8484
.dom(
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
/**
2+
* Copyright (c) HashiCorp, Inc.
3+
* SPDX-License-Identifier: BUSL-1.1
4+
*/
5+
6+
export const MANAGE_DROPDOWN_USER_DELETE =
7+
'[data-test-manage-user-dropdown] ul li button';
8+
export const MANAGE_DROPDOWN_USER =
9+
'[data-test-manage-user-dropdown] button:first-child';

0 commit comments

Comments
 (0)