Refactor auth-methods list acceptance test selectors (#2654)
Refactor auth-methods list acceptance test selectors
This commit is contained in:
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`;
|
||||
@@ -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`;
|
||||
Reference in new issue
Block a user