Refactor auth-methods list acceptance test selectors (#2654)

Refactor auth-methods list acceptance test selectors
This commit is contained in:
Carlos Alcaide Corvo authored and GitHub committed 2025-01-22 14:32:16 -08:00
1 parent 904864b14e
commit c4539b8e30
4 files changed
+66 -55

No files matched your search

@@ -149,7 +149,6 @@
/>
{{#unless B.data.isPrimary}}
<dd.Interactive
data-test-make-primary-action
{{on 'click' (fn this.makePrimary B.data)}}
>
{{t 'resources.auth-method.actions.make-primary'}}
@@ -174,7 +173,7 @@
@currentPageSize={{this.pageSize}}
/>
{{else}}
<Hds::ApplicationState data-test-no-auth-method-results as |A|>
<Hds::ApplicationState as |A|>
<A.Header @title={{t 'titles.no-results-found'}} />
<A.Body
@text={{t
@@ -13,22 +13,14 @@ import {
TYPE_AUTH_METHOD_PASSWORD,
TYPE_AUTH_METHOD_OIDC,
} from 'api/models/auth-method';
import * as commonSelectors from 'admin/tests/helpers/selectors';
import * as selectors from './selectors';
module('Acceptance | auth-methods | list', function (hooks) {
setupApplicationTest(hooks);
setupMirage(hooks);
setupIndexedDb(hooks);
const SEARCH_INPUT_SELECTOR = '.search-filtering [type="search"]';
const NO_RESULTS_MSG_SELECTOR = '[data-test-no-auth-method-results]';
const FILTER_DROPDOWN_SELECTOR = (name) =>
`.search-filtering [name="${name}"] button`;
const FILTER_APPLY_BUTTON_SELECTOR =
'.search-filtering [data-test-dropdown-apply-button]';
const AUTH_ACTIONS_SELECTOR = (id) =>
`tbody [data-test-auth-methods-table-row="${id}"] .hds-table__td:last-child .hds-dropdown button`;
const MAKE_PRIMARY_ACTION_SELECTOR = '[data-test-make-primary-action]';
const instances = {
scopes: {
global: null,
@@ -76,28 +68,28 @@ module('Acceptance | auth-methods | list', function (hooks) {
test('users can navigate to auth methods with proper authorization', async function (assert) {
await visit(urls.globalScope);
await click(`[href="${urls.orgScope}"]`);
await click(commonSelectors.HREF(urls.orgScope));
assert.true(
instances.scopes.org.authorized_collection_actions[
'auth-methods'
].includes('list'),
);
assert.dom(`[href="${urls.authMethods}"]`).exists();
assert.dom(commonSelectors.HREF(urls.authMethods)).isVisible();
});
test('users cannot navigate to index without either list or create actions', async function (assert) {
instances.scopes.org.authorized_collection_actions['auth-methods'] = [];
await visit(urls.globalScope);
await click(`[href="${urls.orgScope}"]`);
await click(commonSelectors.HREF(urls.orgScope));
assert.false(
instances.scopes.org.authorized_collection_actions[
'auth-methods'
].includes('list'),
);
assert.dom(`[href="${urls.authMethods}"]`).doesNotExist();
assert.dom(commonSelectors.HREF(urls.authMethods)).isNotVisible();
});
test('users can navigate to index with only create action', async function (assert) {
@@ -106,73 +98,79 @@ module('Acceptance | auth-methods | list', function (hooks) {
];
await visit(urls.globalScope);
await click(`[href="${urls.orgScope}"]`);
assert.dom(`[href="${urls.authMethods}"]`).exists();
await click(commonSelectors.HREF(urls.orgScope));
assert.dom(commonSelectors.HREF(urls.authMethods)).isVisible();
});
test('user can search for a specifc auth-method by id', async function (assert) {
await visit(urls.orgScope);
await click(`[href="${urls.authMethods}"]`);
await click(commonSelectors.HREF(urls.authMethods));
assert.dom(commonSelectors.HREF(urls.passwordAuthMethod)).isVisible();
assert.dom(commonSelectors.HREF(urls.oidcAuthMethod)).isVisible();
assert.dom(`[href="${urls.passwordAuthMethod}"]`).exists();
assert.dom(`[href="${urls.oidcAuthMethod}"]`).exists();
await fillIn(selectors.SEARCH_BAR_INPUT, instances.passwordAuthMethod.id);
await waitFor(commonSelectors.HREF(urls.oidcAuthMethod), { count: 0 });
await fillIn(SEARCH_INPUT_SELECTOR, instances.passwordAuthMethod.id);
await waitFor(`[href="${urls.oidcAuthMethod}"]`, { count: 0 });
assert.dom(`[href="${urls.passwordAuthMethod}"]`).exists();
assert.dom(`[href="${urls.oidcAuthMethod}"]`).doesNotExist();
assert.dom(commonSelectors.HREF(urls.passwordAuthMethod)).isVisible();
assert.dom(commonSelectors.HREF(urls.oidcAuthMethod)).isNotVisible();
});
test('user can search for auth-methods and get no results', async function (assert) {
await visit(urls.orgScope);
await click(`[href="${urls.authMethods}"]`);
await click(commonSelectors.HREF(urls.authMethods));
assert.dom(commonSelectors.HREF(urls.passwordAuthMethod)).isVisible();
assert.dom(commonSelectors.HREF(urls.oidcAuthMethod)).isVisible();
assert.dom(`[href="${urls.passwordAuthMethod}"]`).exists();
assert.dom(`[href="${urls.oidcAuthMethod}"]`).exists();
await fillIn(selectors.SEARCH_BAR_INPUT, 'fake target that does not exist');
await waitFor(commonSelectors.PAGE_MESSAGE_HEADER, { count: 1 });
await fillIn(SEARCH_INPUT_SELECTOR, 'fake target that does not exist');
await waitFor(NO_RESULTS_MSG_SELECTOR, { count: 1 });
assert.dom(`[href="${urls.passwordAuthMethod}"]`).doesNotExist();
assert.dom(`[href="${urls.oidcAuthMethod}"]`).doesNotExist();
assert.dom(NO_RESULTS_MSG_SELECTOR).includesText('No results found');
assert.dom(commonSelectors.HREF(urls.passwordAuthMethod)).isNotVisible();
assert.dom(commonSelectors.HREF(urls.oidcAuthMethod)).isNotVisible();
assert
.dom(commonSelectors.PAGE_MESSAGE_HEADER)
.includesText('No results found');
});
test('user can filter for auth-methods by type', async function (assert) {
await visit(urls.orgScope);
await click(`[href="${urls.authMethods}"]`);
await click(commonSelectors.HREF(urls.authMethods));
assert.dom(commonSelectors.HREF(urls.passwordAuthMethod)).isVisible();
assert.dom(commonSelectors.HREF(urls.oidcAuthMethod)).isVisible();
assert.dom(`[href="${urls.passwordAuthMethod}"]`).exists();
assert.dom(`[href="${urls.oidcAuthMethod}"]`).exists();
await click(commonSelectors.FILTER_DROPDOWN('type'));
await click(
commonSelectors.FILTER_DROPDOWN_ITEM(TYPE_AUTH_METHOD_PASSWORD),
);
await click(commonSelectors.FILTER_DROPDOWN_ITEM_APPLY_BTN('type'));
await click(FILTER_DROPDOWN_SELECTOR('type'));
await click(`input[value="${TYPE_AUTH_METHOD_PASSWORD}"]`);
await click(FILTER_APPLY_BUTTON_SELECTOR);
assert.dom(`[href="${urls.oidcAuthMethod}"]`).doesNotExist();
assert.dom(`[href="${urls.passwordAuthMethod}"]`).exists();
assert.dom(commonSelectors.HREF(urls.oidcAuthMethod)).isNotVisible();
assert.dom(commonSelectors.HREF(urls.passwordAuthMethod)).isVisible();
});
test('user can filter for auth-methods by primary', async function (assert) {
await visit(urls.orgScope);
await click(`[href="${urls.authMethods}"]`);
await click(commonSelectors.HREF(urls.authMethods));
assert.dom(commonSelectors.HREF(urls.passwordAuthMethod)).isVisible();
assert.dom(commonSelectors.HREF(urls.oidcAuthMethod)).isVisible();
assert.dom(`[href="${urls.passwordAuthMethod}"]`).exists();
assert.dom(`[href="${urls.oidcAuthMethod}"]`).exists();
await click(
selectors.TABLE_ACTION_DROPDOWN(instances.passwordAuthMethod.id),
);
await click(
selectors.TABLE_ACTION_DROPDOWN_MAKE_PRIMARY(
instances.passwordAuthMethod.id,
),
);
await click(AUTH_ACTIONS_SELECTOR(instances.passwordAuthMethod.id));
await click(MAKE_PRIMARY_ACTION_SELECTOR);
await click(FILTER_DROPDOWN_SELECTOR('primary'));
await click(`input[value="true"]`);
await click(FILTER_APPLY_BUTTON_SELECTOR);
await click(commonSelectors.FILTER_DROPDOWN('primary'));
await click(commonSelectors.FILTER_DROPDOWN_ITEM('true'));
await click(commonSelectors.FILTER_DROPDOWN_ITEM_APPLY_BTN('primary'));
assert.dom(`[href="${urls.oidcAuthMethod}"]`).doesNotExist();
assert.dom(`[href="${urls.passwordAuthMethod}"]`).exists();
assert.dom(commonSelectors.HREF(urls.oidcAuthMethod)).isNotVisible();
assert.dom(commonSelectors.HREF(urls.passwordAuthMethod)).isVisible();
});
});
@@ -90,3 +90,10 @@ export const TABLE_FIRST_ROW_ACTION_DROPDOWN =
'tbody tr:first-child td:last-child button';
export const TABLE_FIRST_ROW_ACTION_FIRST_ITEM =
'tbody tr:first-child td:last-child ul li:first-child button';
export const SEARCH_BAR_INPUT = '[type=search]';
export const TABLE_ACTION_DROPDOWN = (authMethodId) =>
`tbody [data-test-auth-methods-table-row="${authMethodId}"] .hds-table__td:last-child .hds-dropdown button`;
export const TABLE_ACTION_DROPDOWN_MAKE_PRIMARY = (authMethodId) =>
`tbody tr[data-test-auth-methods-table-row="${authMethodId}"] td:last-child ul li:first-child button`;
+7
View File
@@ -20,6 +20,7 @@ export const RESOURCE_NOT_FOUND_SUBTITLE =
'[data-test-error-application-state] .hds-application-state__error-code';
export const RESOURCE_NOT_FOUND_VALUE = 'ERROR 404';
export const PAGE_MESSAGE_HEADER = '.hds-application-state__header';
export const PAGE_MESSAGE_DESCRIPTION = '.hds-application-state__body-text';
export const PAGE_MESSAGE_LINK =
'.hds-application-state__footer .hds-link-standalone';
@@ -41,3 +42,9 @@ export const MODAL_WARNING_CANCEL_BTN =
'dialog .hds-modal__footer button:last-child';
export const MODAL_WARNING_TITLE = '.hds-modal__header';
export const MODAL_WARNING_MESSAGE = '.hds-modal__body';
export const FILTER_DROPDOWN = (filterName) =>
`.search-filtering [name="${filterName}"] button`;
export const FILTER_DROPDOWN_ITEM = (itemList) => `input[value="${itemList}"]`;
export const FILTER_DROPDOWN_ITEM_APPLY_BTN = (filterName) =>
`.search-filtering [name="${filterName}"] .hds-dropdown__footer button`;