Refactor: Workers test - Create-tags, list and tags (#2742)
* refactor: 💡 workers test - create-tags,list,tags * fix: 🐛 addressed comment
This commit is contained in:
1 parent
de0f20809d
commit
2f2ceed24e
4 files changed
+208
-159
No files matched your search
@@ -10,20 +10,13 @@ import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
|
||||
import a11yAudit from 'ember-a11y-testing/test-support/audit';
|
||||
import { authenticateSession } from 'ember-simple-auth/test-support';
|
||||
import * as commonSelectors from 'admin/tests/helpers/selectors';
|
||||
import * as selectors from './selectors';
|
||||
|
||||
module('Acceptance | workers | worker | create-tags', function (hooks) {
|
||||
setupApplicationTest(hooks);
|
||||
setupMirage(hooks);
|
||||
|
||||
const SAVE_BUTTON_SELECTOR = '[type="submit"]';
|
||||
const CANCEL_BUTTON_SELECTOR = '.rose-form-actions [type="button"]';
|
||||
const MANAGE_DROPDOWN_TOGGLE =
|
||||
'[data-test-manage-worker-dropdown] button:first-child';
|
||||
const CREATE_TAGS_BUTTON_SELECTOR =
|
||||
'[data-test-manage-worker-dropdown] ul a:first-child';
|
||||
const KEY_INPUT_SELECTOR = '[name="api_tags"] tr td:first-child input';
|
||||
const VALUE_INPUT_SELECTOR = '[name="api_tags"] tr td:nth-child(2) input';
|
||||
const ADD_INPUT_SELECTOR = '[name="api_tags"] tr td:last-child button';
|
||||
let confirmService;
|
||||
|
||||
const instances = {
|
||||
scopes: {
|
||||
@@ -48,6 +41,7 @@ module('Acceptance | workers | worker | create-tags', function (hooks) {
|
||||
urls.worker = `${urls.workers}/${instances.worker.id}`;
|
||||
urls.tags = `${urls.worker}/tags`;
|
||||
urls.createTags = `${urls.worker}/create-tags`;
|
||||
confirmService = this.owner.lookup('service:confirm');
|
||||
|
||||
await authenticateSession({ username: 'admin' });
|
||||
});
|
||||
@@ -55,8 +49,8 @@ module('Acceptance | workers | worker | create-tags', function (hooks) {
|
||||
test('visiting worker create tags', async function (assert) {
|
||||
await visit(urls.worker);
|
||||
|
||||
await click(MANAGE_DROPDOWN_TOGGLE);
|
||||
await click(CREATE_TAGS_BUTTON_SELECTOR);
|
||||
await click(selectors.MANAGE_DROPDOWN_WORKER);
|
||||
await click(selectors.MANAGE_DROPDOWN_WORKER_CREATE_TAGS);
|
||||
await a11yAudit();
|
||||
|
||||
assert.strictEqual(currentURL(), urls.createTags);
|
||||
@@ -69,48 +63,45 @@ module('Acceptance | workers | worker | create-tags', function (hooks) {
|
||||
);
|
||||
await visit(urls.worker);
|
||||
|
||||
await click(MANAGE_DROPDOWN_TOGGLE);
|
||||
await click(selectors.MANAGE_DROPDOWN_WORKER);
|
||||
|
||||
assert.dom(CREATE_TAGS_BUTTON_SELECTOR).doesNotExist();
|
||||
assert.dom(selectors.MANAGE_DROPDOWN_WORKER_CREATE_TAGS).doesNotExist();
|
||||
});
|
||||
|
||||
test('user can save worker tags', async function (assert) {
|
||||
await visit(urls.tags);
|
||||
|
||||
assert.dom('tbody tr').exists({ count: 11 });
|
||||
assert.dom(commonSelectors.TABLE_ROW).exists({ count: 11 });
|
||||
|
||||
await click(MANAGE_DROPDOWN_TOGGLE);
|
||||
await click(CREATE_TAGS_BUTTON_SELECTOR);
|
||||
await fillIn(KEY_INPUT_SELECTOR, 'key');
|
||||
await fillIn(VALUE_INPUT_SELECTOR, 'value');
|
||||
await click(ADD_INPUT_SELECTOR);
|
||||
await click(selectors.MANAGE_DROPDOWN_WORKER);
|
||||
await click(selectors.MANAGE_DROPDOWN_WORKER_CREATE_TAGS);
|
||||
await fillIn(selectors.FIELD_KEY, selectors.FIELD_KEY_VALUE);
|
||||
await fillIn(selectors.FIELD_VALUE, selectors.FIELD_VALUE_VALUE);
|
||||
await click(selectors.ADD_WORKER_TAG_ACTION);
|
||||
await click(commonSelectors.SAVE_BTN);
|
||||
|
||||
await click(SAVE_BUTTON_SELECTOR);
|
||||
|
||||
assert.dom('tbody tr').exists({ count: 12 });
|
||||
assert.dom(commonSelectors.TABLE_ROW).exists({ count: 12 });
|
||||
assert.strictEqual(currentURL(), urls.tags);
|
||||
});
|
||||
|
||||
test('user can cancel tag creation', async function (assert) {
|
||||
await visit(urls.worker);
|
||||
|
||||
await click(MANAGE_DROPDOWN_TOGGLE);
|
||||
await click(CREATE_TAGS_BUTTON_SELECTOR);
|
||||
|
||||
await click(CANCEL_BUTTON_SELECTOR);
|
||||
await click(selectors.MANAGE_DROPDOWN_WORKER);
|
||||
await click(selectors.MANAGE_DROPDOWN_WORKER_CREATE_TAGS);
|
||||
await click(commonSelectors.CANCEL_BTN);
|
||||
|
||||
assert.strictEqual(currentURL(), urls.tags);
|
||||
});
|
||||
|
||||
test('user is prompted to confirm exit when there are unsaved changes', async function (assert) {
|
||||
const confirmService = this.owner.lookup('service:confirm');
|
||||
confirmService.enabled = true;
|
||||
await visit(urls.createTags);
|
||||
await fillIn(KEY_INPUT_SELECTOR, 'key');
|
||||
await fillIn(VALUE_INPUT_SELECTOR, 'value');
|
||||
await click(ADD_INPUT_SELECTOR);
|
||||
|
||||
await click(`[href="${urls.workers}"]`);
|
||||
await fillIn(selectors.FIELD_KEY, selectors.FIELD_KEY_VALUE);
|
||||
await fillIn(selectors.FIELD_VALUE, selectors.FIELD_VALUE_VALUE);
|
||||
await click(selectors.ADD_WORKER_TAG_ACTION);
|
||||
await click(commonSelectors.HREF(urls.workers));
|
||||
|
||||
assert.dom(commonSelectors.MODAL_WARNING).isVisible();
|
||||
|
||||
@@ -120,14 +111,13 @@ module('Acceptance | workers | worker | create-tags', function (hooks) {
|
||||
});
|
||||
|
||||
test('user can cancel transition when there are unsaved changes', async function (assert) {
|
||||
const confirmService = this.owner.lookup('service:confirm');
|
||||
confirmService.enabled = true;
|
||||
await visit(urls.createTags);
|
||||
await fillIn(KEY_INPUT_SELECTOR, 'key');
|
||||
await fillIn(VALUE_INPUT_SELECTOR, 'value');
|
||||
await click(ADD_INPUT_SELECTOR);
|
||||
|
||||
await click(`[href="${urls.workers}"]`);
|
||||
await fillIn(selectors.FIELD_KEY, selectors.FIELD_KEY_VALUE);
|
||||
await fillIn(selectors.FIELD_VALUE, selectors.FIELD_VALUE_VALUE);
|
||||
await click(selectors.ADD_WORKER_TAG_ACTION);
|
||||
await click(commonSelectors.HREF(urls.workers));
|
||||
|
||||
assert.dom(commonSelectors.MODAL_WARNING).isVisible();
|
||||
|
||||
|
||||
@@ -9,18 +9,8 @@ import { setupApplicationTest } from 'admin/tests/helpers';
|
||||
import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
|
||||
import { setupIndexedDb } from 'api/test-support/helpers/indexed-db';
|
||||
import { authenticateSession } from 'ember-simple-auth/test-support';
|
||||
|
||||
const WORKERS_FLYOUT = '[data-test-worker-tags-flyout]';
|
||||
const WORKERS_FLYOUT_DISMISS = '[data-test-worker-tags-flyout] div button';
|
||||
const WORKERS_FLYOUT_TABLE_BODY = '[data-test-worker-tags-flyout] tbody';
|
||||
const WORKERS_FLYOUT_TABLE_ROWS = '[data-test-worker-tags-flyout] tbody tr';
|
||||
const WORKERS_FLYOUT_VIEW_MORE_TAGS =
|
||||
'[data-test-worker-tags-flyout] .view-more-tags a';
|
||||
const WORKER_TAGS_BUTTON = (workerId) =>
|
||||
`[data-test-worker-tags-flyout-button="${workerId}"]`;
|
||||
const TAGS_FILTER_TOGGLE = '.workers details summary';
|
||||
const TAGS_FILTER_FIRST_ITEM_SELECTOR =
|
||||
'.workers details div input:first-child';
|
||||
import * as commonSelectors from 'admin/tests/helpers/selectors';
|
||||
import * as selectors from './selectors';
|
||||
|
||||
module('Acceptance | workers | list', function (hooks) {
|
||||
setupApplicationTest(hooks);
|
||||
@@ -63,20 +53,21 @@ module('Acceptance | workers | list', function (hooks) {
|
||||
test('Users can navigate to workers with proper authorization', async function (assert) {
|
||||
featuresService.enable('byow');
|
||||
await visit(urls.globalScope);
|
||||
|
||||
assert.ok(
|
||||
instances.scopes.global.authorized_collection_actions.workers.includes(
|
||||
'list',
|
||||
),
|
||||
);
|
||||
assert.dom(`[href="${urls.workers}"]`).isVisible();
|
||||
assert.dom(commonSelectors.HREF(urls.workers)).isVisible();
|
||||
});
|
||||
|
||||
test('Users cannot navigate to workers without list or create permissions', async function (assert) {
|
||||
featuresService.enable('byow');
|
||||
instances.scopes.global.authorized_collection_actions.workers = [];
|
||||
|
||||
await visit(urls.globalScope);
|
||||
assert.dom(`[href="${urls.workers}"]`).isNotVisible();
|
||||
|
||||
assert.dom(commonSelectors.HREF(urls.workers)).isNotVisible();
|
||||
});
|
||||
|
||||
test('Users can navigate to workers with only create permission', async function (assert) {
|
||||
@@ -84,49 +75,59 @@ module('Acceptance | workers | list', function (hooks) {
|
||||
instances.scopes.global.authorized_collection_actions.workers = [
|
||||
'create:worker-led',
|
||||
];
|
||||
|
||||
await visit(urls.globalScope);
|
||||
assert.dom(`[href="${urls.workers}"]`).isVisible();
|
||||
|
||||
assert.dom(commonSelectors.HREF(urls.workers)).isVisible();
|
||||
});
|
||||
|
||||
test('Users can navigate to workers with only list permission', async function (assert) {
|
||||
featuresService.enable('byow');
|
||||
instances.scopes.global.authorized_collection_actions.workers = ['list'];
|
||||
|
||||
await visit(urls.globalScope);
|
||||
assert.dom(`[href="${urls.workers}"]`).isVisible();
|
||||
|
||||
assert.dom(commonSelectors.HREF(urls.workers)).isVisible();
|
||||
});
|
||||
|
||||
test('Users can filter by tags', async function (assert) {
|
||||
featuresService.enable('byow');
|
||||
await visit(urls.workers);
|
||||
|
||||
assert.dom('tbody tr').exists({ count: 2 });
|
||||
assert.dom(commonSelectors.TABLE_ROW).exists({ count: 2 });
|
||||
|
||||
await click(TAGS_FILTER_TOGGLE);
|
||||
await click(TAGS_FILTER_FIRST_ITEM_SELECTOR);
|
||||
await click(selectors.WORKER_TAGS_FILTER_DROPDOWN);
|
||||
await click(selectors.WORKER_TAGS_FILTER_DROPDOWN_FIRST_ITEM);
|
||||
|
||||
assert.dom('tbody tr').exists({ count: 1 });
|
||||
assert.dom(commonSelectors.TABLE_ROW).exists({ count: 1 });
|
||||
});
|
||||
|
||||
test('Users can open and close tags flyout for a specific worker', async function (assert) {
|
||||
featuresService.enable('byow');
|
||||
await visit(urls.workers);
|
||||
assert.dom(WORKERS_FLYOUT).isNotVisible();
|
||||
|
||||
await click(WORKER_TAGS_BUTTON(instances.worker.id));
|
||||
assert.dom(WORKERS_FLYOUT).isVisible();
|
||||
assert.dom(selectors.WORKER_TAGS_FLYOUT).isNotVisible();
|
||||
|
||||
await click(WORKERS_FLYOUT_DISMISS);
|
||||
assert.dom(WORKERS_FLYOUT).isNotVisible();
|
||||
await click(
|
||||
selectors.TABLE_ROW_WORKER_TAGS_FLYOUT_BUTTON(instances.worker.id),
|
||||
);
|
||||
|
||||
assert.dom(selectors.WORKER_TAGS_FLYOUT).isVisible();
|
||||
|
||||
await click(selectors.WORKER_TAGS_FLYOUT_DISMISS_BUTTON);
|
||||
|
||||
assert.dom(selectors.WORKER_TAGS_FLYOUT).isNotVisible();
|
||||
});
|
||||
|
||||
test('Users can see worker tags in the tags flyout', async function (assert) {
|
||||
featuresService.enable('byow');
|
||||
await visit(urls.workers);
|
||||
await click(WORKER_TAGS_BUTTON(instances.worker.id));
|
||||
|
||||
assert.dom(WORKERS_FLYOUT_TABLE_BODY).includesText('os = z-os');
|
||||
await click(
|
||||
selectors.TABLE_ROW_WORKER_TAGS_FLYOUT_BUTTON(instances.worker.id),
|
||||
);
|
||||
|
||||
assert
|
||||
.dom(selectors.WORKER_TAGS_FLYOUT_TABLE_BODY)
|
||||
.includesText('os = z-os');
|
||||
});
|
||||
|
||||
test('Users can only see first 10 tags in the tags flyout', async function (assert) {
|
||||
@@ -148,9 +149,12 @@ module('Acceptance | workers | list', function (hooks) {
|
||||
});
|
||||
|
||||
await visit(urls.workers);
|
||||
await click(WORKER_TAGS_BUTTON(instances.worker.id));
|
||||
|
||||
assert.dom(WORKERS_FLYOUT_TABLE_ROWS).exists({ count: 10 });
|
||||
await click(
|
||||
selectors.TABLE_ROW_WORKER_TAGS_FLYOUT_BUTTON(instances.worker.id),
|
||||
);
|
||||
|
||||
assert.dom(selectors.WORKER_TAGS_FLYOUT_TABLE_ROWS).exists({ count: 10 });
|
||||
});
|
||||
|
||||
test('Users can click on "view more tags" if there are more than 10 tags', async function (assert) {
|
||||
@@ -172,10 +176,13 @@ module('Acceptance | workers | list', function (hooks) {
|
||||
});
|
||||
|
||||
await visit(urls.workers);
|
||||
await click(WORKER_TAGS_BUTTON(instances.worker.id));
|
||||
|
||||
assert.dom(WORKERS_FLYOUT_TABLE_ROWS).exists({ count: 10 });
|
||||
assert.dom(WORKERS_FLYOUT_VIEW_MORE_TAGS).isVisible();
|
||||
await click(
|
||||
selectors.TABLE_ROW_WORKER_TAGS_FLYOUT_BUTTON(instances.worker.id),
|
||||
);
|
||||
|
||||
assert.dom(selectors.WORKER_TAGS_FLYOUT_TABLE_ROWS).exists({ count: 10 });
|
||||
assert.dom(selectors.WORKER_TAGS_FLYOUT_VIEW_MORE_TAGS_BUTTON).isVisible();
|
||||
});
|
||||
|
||||
test('Users do not see "view more tags" if there are 10 or less tags', async function (assert) {
|
||||
@@ -191,26 +198,34 @@ module('Acceptance | workers | list', function (hooks) {
|
||||
});
|
||||
|
||||
await visit(urls.workers);
|
||||
await click(WORKER_TAGS_BUTTON(instances.worker.id));
|
||||
|
||||
assert.dom(WORKERS_FLYOUT_TABLE_ROWS).exists({ count: 5 });
|
||||
assert.dom(WORKERS_FLYOUT_VIEW_MORE_TAGS).isNotVisible();
|
||||
await click(
|
||||
selectors.TABLE_ROW_WORKER_TAGS_FLYOUT_BUTTON(instances.worker.id),
|
||||
);
|
||||
|
||||
assert.dom(selectors.WORKER_TAGS_FLYOUT_TABLE_ROWS).exists({ count: 5 });
|
||||
assert
|
||||
.dom(selectors.WORKER_TAGS_FLYOUT_VIEW_MORE_TAGS_BUTTON)
|
||||
.doesNotExist();
|
||||
});
|
||||
|
||||
test('Users do not see worker tags flyout when returning to workers list', async function (assert) {
|
||||
featuresService.enable('byow');
|
||||
await visit(urls.workers);
|
||||
await click(WORKER_TAGS_BUTTON(instances.worker.id));
|
||||
|
||||
assert.dom(WORKERS_FLYOUT).isVisible();
|
||||
await click(
|
||||
selectors.TABLE_ROW_WORKER_TAGS_FLYOUT_BUTTON(instances.worker.id),
|
||||
);
|
||||
|
||||
await click(WORKERS_FLYOUT_VIEW_MORE_TAGS);
|
||||
assert.dom(selectors.WORKER_TAGS_FLYOUT).isVisible();
|
||||
|
||||
await click(selectors.WORKER_TAGS_FLYOUT_VIEW_MORE_TAGS_BUTTON);
|
||||
|
||||
assert.strictEqual(currentURL(), urls.workerTags);
|
||||
|
||||
await click(`[href="${urls.workers}"]`);
|
||||
await click(commonSelectors.HREF(urls.workers));
|
||||
|
||||
assert.strictEqual(currentURL(), urls.workers);
|
||||
assert.dom(WORKERS_FLYOUT).isNotVisible();
|
||||
assert.dom(selectors.WORKER_TAGS_FLYOUT).isNotVisible();
|
||||
});
|
||||
});
|
||||
@@ -10,8 +10,68 @@ export const FIELD_WORKER_AUTH_REGISTRATION_VALUE = 'token';
|
||||
export const WORKER_CREATE_SECTION_FORM_LABEL =
|
||||
'.worker-create-section label.hds-form-label';
|
||||
export const WORKER_CREATE_SECTION = '.worker-create-section';
|
||||
export const ADD_WORKER_TAG_ACTION =
|
||||
'[name="api_tags"] tr td:last-child button';
|
||||
|
||||
export const MANAGE_DROPDOWN_WORKER =
|
||||
'[data-test-manage-worker-dropdown] button:first-child';
|
||||
export const MANAGE_DROPDOWN_WORKER_REMOVE =
|
||||
'[data-test-manage-worker-dropdown] div:nth-child(2) button';
|
||||
export const MANAGE_DROPDOWN_WORKER_CREATE_TAGS =
|
||||
'[data-test-manage-worker-dropdown] ul a:first-child';
|
||||
|
||||
export const FIELD_KEY = '[name="api_tags"] tr td:first-child input';
|
||||
export const FIELD_KEY_VALUE = 'key';
|
||||
|
||||
export const FIELD_VALUE = '[name="api_tags"] tr td:nth-child(2) input';
|
||||
export const FIELD_VALUE_VALUE = 'value';
|
||||
|
||||
export const WORKER_TAGS_FLYOUT = '[data-test-worker-tags-flyout]';
|
||||
export const WORKER_TAGS_FLYOUT_DISMISS_BUTTON =
|
||||
'[data-test-worker-tags-flyout] div button';
|
||||
export const WORKER_TAGS_FLYOUT_TABLE_BODY =
|
||||
'[data-test-worker-tags-flyout] tbody';
|
||||
export const WORKER_TAGS_FLYOUT_TABLE_ROWS =
|
||||
'[data-test-worker-tags-flyout] tbody tr';
|
||||
export const WORKER_TAGS_FLYOUT_VIEW_MORE_TAGS_BUTTON =
|
||||
'[data-test-worker-tags-flyout] .view-more-tags a';
|
||||
|
||||
export const WORKER_TAGS_FILTER_DROPDOWN = '.workers details summary';
|
||||
export const WORKER_TAGS_FILTER_DROPDOWN_FIRST_ITEM =
|
||||
'.workers details div input:first-child';
|
||||
|
||||
export const TABLE_ROW_WORKER_TAGS_FLYOUT_BUTTON = (workerId) =>
|
||||
`[data-test-worker-tags-flyout-button="${workerId}"]`;
|
||||
export const TABLE_ROW_CONFIG_TAG_TOOLTIP_BUTTON =
|
||||
'tbody tr:first-child td:nth-child(3) button';
|
||||
export const TABLE_ROW_CONFIG_TAG_TOOLTIP_TEXT =
|
||||
'tbody tr:first-child td:nth-child(3) > div';
|
||||
export const TABLE_ROW_API_TAG_KEY = (row) =>
|
||||
`tbody tr:nth-child(${row}) td:first-child pre`;
|
||||
export const TABLE_ROW_API_TAG_VALUE = (row) =>
|
||||
`tbody tr:nth-child(${row}) td:nth-child(2) pre`;
|
||||
export const TABLE_ROW_API_TAG_ACTION_DROPDOWN =
|
||||
'tbody tr:nth-child(4) td:nth-child(4) button';
|
||||
export const TABLE_ROW_API_TAG_ACTION_DROPDOWN_FIRST_BUTTON =
|
||||
'tbody tr:nth-child(4) td:nth-child(4) ul li:first-child button';
|
||||
export const TABLE_ROW_API_TAG_ACTION_DROPDOWN_LAST_BUTTON =
|
||||
'tbody tr:nth-child(4) td:nth-child(4) ul li:nth-child(2) button';
|
||||
|
||||
export const MODAL_EDIT_TAG_FIELD_KEY =
|
||||
'[data-test-edit-modal] [name="edit-tag-key"]';
|
||||
export const MODAL_EDIT_TAG_FIELD_VALUE =
|
||||
'[data-test-edit-modal] [name="edit-tag-value"]';
|
||||
export const MODAL_EDIT_TAG_SAVE_BUTTON =
|
||||
'[data-test-edit-modal] button:first-child';
|
||||
export const MODAL_EDIT_TAG_CANCEL_BUTTON =
|
||||
'[data-test-edit-modal] button:last-child';
|
||||
|
||||
export const MODAL_CONFIRMATION_FIELD_REMOVE =
|
||||
'[data-test-confirmation-modal] input';
|
||||
export const MODAL_CONFIRMATION_SAVE_BUTTON =
|
||||
'[data-test-confirmation-modal] button:first-child';
|
||||
export const MODAL_CONFIRMATION_CANCEL_BUTTON =
|
||||
'[data-test-confirmation-modal] button:last-child';
|
||||
|
||||
export const NO_TAGS_STATE_TITLE = '[data-test-no-tags] div:first-child';
|
||||
export const NO_TAGS_STATE_ACTION = '[data-test-no-tags] div:nth-child(3) a';
|
||||
@@ -17,40 +17,13 @@ import setupMirage from 'ember-cli-mirage/test-support/setup-mirage';
|
||||
import a11yAudit from 'ember-a11y-testing/test-support/audit';
|
||||
import { authenticateSession } from 'ember-simple-auth/test-support';
|
||||
import { HCP_MANAGED_KEY } from 'api/models/worker';
|
||||
import * as commonSelectors from 'admin/tests/helpers/selectors';
|
||||
import * as selectors from './selectors';
|
||||
|
||||
module('Acceptance | workers | worker | tags', function (hooks) {
|
||||
setupApplicationTest(hooks);
|
||||
setupMirage(hooks);
|
||||
|
||||
const CONFIG_TAG_TOOLTIP_SELECTOR =
|
||||
'tbody tr:first-child td:nth-child(3) button';
|
||||
const CONFIG_TAG_TOOLTIP_TEXT_SELECTOR =
|
||||
'tbody tr:first-child td:nth-child(3) > div';
|
||||
const API_TAG_KEY_SELECTOR = (row) =>
|
||||
`tbody tr:nth-child(${row}) td:first-child pre`;
|
||||
const API_TAG_VALUE_SELECTOR = (row) =>
|
||||
`tbody tr:nth-child(${row}) td:nth-child(2) pre`;
|
||||
const API_TAG_ACTION_SELECTOR =
|
||||
'tbody tr:nth-child(4) td:nth-child(4) button';
|
||||
const API_TAG_FIRST_BUTTON_SELECTOR =
|
||||
'tbody tr:nth-child(4) td:nth-child(4) ul li:first-child button';
|
||||
const API_TAG_LAST_BUTTON_SELECTOR =
|
||||
'tbody tr:nth-child(4) td:nth-child(4) ul li:nth-child(2) button';
|
||||
const EDIT_TAG_KEY_INPUT_SELECTOR =
|
||||
'[data-test-edit-modal] [name="edit-tag-key"]';
|
||||
const EDIT_TAG_VALUE_INPUT_SELECTOR =
|
||||
'[data-test-edit-modal] [name="edit-tag-value"]';
|
||||
const EDIT_TAG_CONFIRM_BUTTON = '[data-test-edit-modal] button:first-child';
|
||||
const EDIT_TAG_CANCEL_BUTTON = '[data-test-edit-modal] button:last-child';
|
||||
const CONFIRMATION_MODAL_INPUT_SELECTOR =
|
||||
'[data-test-confirmation-modal] input';
|
||||
const CONFIRMATION_MODAL_REMOVE_BUTTON_SELECTOR =
|
||||
'[data-test-confirmation-modal] button:first-child';
|
||||
const CONFIRMATION_MODAL_CANCEL_BUTTON_SELECTOR =
|
||||
'[data-test-confirmation-modal] button:last-child';
|
||||
const NO_TAGS_STATE_TITLE = '[data-test-no-tags] div:first-child';
|
||||
const NO_TAGS_STATE_ACTION = '[data-test-no-tags] div:nth-child(3) a';
|
||||
|
||||
const instances = {
|
||||
scopes: {
|
||||
global: null,
|
||||
@@ -78,21 +51,22 @@ module('Acceptance | workers | worker | tags', function (hooks) {
|
||||
|
||||
test('visiting worker tags', async function (assert) {
|
||||
await visit(urls.worker);
|
||||
await click(`[href="${urls.tags}"]`);
|
||||
|
||||
await click(commonSelectors.HREF(urls.tags));
|
||||
await a11yAudit();
|
||||
|
||||
assert.strictEqual(currentURL(), urls.tags);
|
||||
assert.dom('tbody tr').exists({ count: 11 });
|
||||
assert.dom(commonSelectors.TABLE_ROW).exists({ count: 11 });
|
||||
});
|
||||
|
||||
test('config tags display a tooltip for HCP managed tag', async function (assert) {
|
||||
instances.worker.config_tags = { [HCP_MANAGED_KEY]: ['true'] };
|
||||
await visit(urls.tags);
|
||||
|
||||
await focus(CONFIG_TAG_TOOLTIP_SELECTOR);
|
||||
await focus(selectors.TABLE_ROW_CONFIG_TAG_TOOLTIP_BUTTON);
|
||||
|
||||
assert
|
||||
.dom(CONFIG_TAG_TOOLTIP_TEXT_SELECTOR)
|
||||
.dom(selectors.TABLE_ROW_CONFIG_TAG_TOOLTIP_TEXT)
|
||||
.hasText(
|
||||
'This is a HCP managed worker, you cannot edit or delete this worker’s tags.',
|
||||
);
|
||||
@@ -101,43 +75,43 @@ module('Acceptance | workers | worker | tags', function (hooks) {
|
||||
test('config tags display a tooltip self managed tag', async function (assert) {
|
||||
await visit(urls.tags);
|
||||
|
||||
await focus(CONFIG_TAG_TOOLTIP_SELECTOR);
|
||||
await focus(selectors.TABLE_ROW_CONFIG_TAG_TOOLTIP_BUTTON);
|
||||
|
||||
assert
|
||||
.dom(CONFIG_TAG_TOOLTIP_TEXT_SELECTOR)
|
||||
.dom(selectors.TABLE_ROW_CONFIG_TAG_TOOLTIP_TEXT)
|
||||
.hasText('To edit config tags, edit them in your worker config file.');
|
||||
});
|
||||
|
||||
test('users can remove a specific tag', async function (assert) {
|
||||
await visit(urls.tags);
|
||||
|
||||
assert.dom('tbody tr').exists({ count: 11 });
|
||||
assert.dom(commonSelectors.TABLE_ROW).exists({ count: 11 });
|
||||
|
||||
await click(API_TAG_ACTION_SELECTOR);
|
||||
await click(API_TAG_LAST_BUTTON_SELECTOR);
|
||||
await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN);
|
||||
await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN_LAST_BUTTON);
|
||||
|
||||
assert.dom(CONFIRMATION_MODAL_REMOVE_BUTTON_SELECTOR).isDisabled();
|
||||
assert.dom(selectors.MODAL_CONFIRMATION_SAVE_BUTTON).isDisabled();
|
||||
|
||||
await fillIn(CONFIRMATION_MODAL_INPUT_SELECTOR, 'REMOVE');
|
||||
await fillIn(selectors.MODAL_CONFIRMATION_FIELD_REMOVE, 'REMOVE');
|
||||
|
||||
assert.dom(CONFIRMATION_MODAL_REMOVE_BUTTON_SELECTOR).isEnabled();
|
||||
assert.dom(selectors.MODAL_CONFIRMATION_CANCEL_BUTTON).isEnabled();
|
||||
|
||||
await click(CONFIRMATION_MODAL_REMOVE_BUTTON_SELECTOR);
|
||||
await click(selectors.MODAL_CONFIRMATION_SAVE_BUTTON);
|
||||
|
||||
assert.dom('tbody tr').exists({ count: 10 });
|
||||
assert.dom(commonSelectors.TABLE_ROW).exists({ count: 10 });
|
||||
});
|
||||
|
||||
test('user can cancel tag removal', async function (assert) {
|
||||
await visit(urls.tags);
|
||||
|
||||
assert.dom('tbody tr').exists({ count: 11 });
|
||||
assert.dom(commonSelectors.TABLE_ROW).exists({ count: 11 });
|
||||
|
||||
await click(API_TAG_ACTION_SELECTOR);
|
||||
await click(API_TAG_LAST_BUTTON_SELECTOR);
|
||||
await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN);
|
||||
await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN_LAST_BUTTON);
|
||||
|
||||
await click(CONFIRMATION_MODAL_CANCEL_BUTTON_SELECTOR);
|
||||
await click(selectors.MODAL_CONFIRMATION_CANCEL_BUTTON);
|
||||
|
||||
assert.dom('tbody tr').exists({ count: 11 });
|
||||
assert.dom(commonSelectors.TABLE_ROW).exists({ count: 11 });
|
||||
});
|
||||
|
||||
test('user cannot remove a tag without proper permission', async function (assert) {
|
||||
@@ -147,53 +121,57 @@ module('Acceptance | workers | worker | tags', function (hooks) {
|
||||
);
|
||||
await visit(urls.tags);
|
||||
|
||||
assert.dom('tbody tr').exists({ count: 11 });
|
||||
assert.dom(commonSelectors.TABLE_ROW).exists({ count: 11 });
|
||||
|
||||
await click(API_TAG_ACTION_SELECTOR);
|
||||
await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN);
|
||||
|
||||
// Asserts first button is for editing and there is no second button
|
||||
assert.dom(API_TAG_FIRST_BUTTON_SELECTOR).hasText('Edit Tag');
|
||||
assert.dom(API_TAG_LAST_BUTTON_SELECTOR).doesNotExist();
|
||||
assert
|
||||
.dom(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN_FIRST_BUTTON)
|
||||
.hasText('Edit Tag');
|
||||
assert
|
||||
.dom(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN_LAST_BUTTON)
|
||||
.doesNotExist();
|
||||
});
|
||||
|
||||
test('users can edit a specific tag', async function (assert) {
|
||||
await visit(urls.tags);
|
||||
const key = find(API_TAG_KEY_SELECTOR(4)).textContent.trim();
|
||||
const value = find(API_TAG_VALUE_SELECTOR(4)).textContent.trim();
|
||||
const key = find(selectors.TABLE_ROW_API_TAG_KEY(4)).textContent.trim();
|
||||
const value = find(selectors.TABLE_ROW_API_TAG_VALUE(4)).textContent.trim();
|
||||
|
||||
assert.dom(API_TAG_KEY_SELECTOR(4)).hasText(key);
|
||||
assert.dom(API_TAG_VALUE_SELECTOR(4)).hasText(value);
|
||||
assert.dom(selectors.TABLE_ROW_API_TAG_KEY(4)).hasText(key);
|
||||
assert.dom(selectors.TABLE_ROW_API_TAG_VALUE(4)).hasText(value);
|
||||
|
||||
await click(API_TAG_ACTION_SELECTOR);
|
||||
await click(API_TAG_FIRST_BUTTON_SELECTOR);
|
||||
await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN);
|
||||
await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN_FIRST_BUTTON);
|
||||
|
||||
await fillIn(EDIT_TAG_KEY_INPUT_SELECTOR, 'red');
|
||||
await fillIn(EDIT_TAG_VALUE_INPUT_SELECTOR, 'blue');
|
||||
await fillIn(selectors.MODAL_EDIT_TAG_FIELD_KEY, 'red');
|
||||
await fillIn(selectors.MODAL_EDIT_TAG_FIELD_VALUE, 'blue');
|
||||
|
||||
await click(EDIT_TAG_CONFIRM_BUTTON);
|
||||
await click(selectors.MODAL_EDIT_TAG_SAVE_BUTTON);
|
||||
|
||||
assert.dom(API_TAG_KEY_SELECTOR(11)).hasText('red');
|
||||
assert.dom(API_TAG_VALUE_SELECTOR(11)).hasText('blue');
|
||||
assert.dom(selectors.TABLE_ROW_API_TAG_KEY(11)).hasText('red');
|
||||
assert.dom(selectors.TABLE_ROW_API_TAG_VALUE(11)).hasText('blue');
|
||||
});
|
||||
|
||||
test('users can cancel editing a tag', async function (assert) {
|
||||
await visit(urls.tags);
|
||||
const key = find(API_TAG_KEY_SELECTOR(4)).textContent.trim();
|
||||
const value = find(API_TAG_VALUE_SELECTOR(4)).textContent.trim();
|
||||
const key = find(selectors.TABLE_ROW_API_TAG_KEY(4)).textContent.trim();
|
||||
const value = find(selectors.TABLE_ROW_API_TAG_VALUE(4)).textContent.trim();
|
||||
|
||||
assert.dom(API_TAG_KEY_SELECTOR(4)).hasText(key);
|
||||
assert.dom(API_TAG_VALUE_SELECTOR(4)).hasText(value);
|
||||
assert.dom(selectors.TABLE_ROW_API_TAG_KEY(4)).hasText(key);
|
||||
assert.dom(selectors.TABLE_ROW_API_TAG_VALUE(4)).hasText(value);
|
||||
|
||||
await click(API_TAG_ACTION_SELECTOR);
|
||||
await click(API_TAG_FIRST_BUTTON_SELECTOR);
|
||||
await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN);
|
||||
await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN_FIRST_BUTTON);
|
||||
|
||||
await fillIn(EDIT_TAG_KEY_INPUT_SELECTOR, 'red');
|
||||
await fillIn(EDIT_TAG_VALUE_INPUT_SELECTOR, 'blue');
|
||||
await fillIn(selectors.MODAL_EDIT_TAG_FIELD_KEY, 'red');
|
||||
await fillIn(selectors.MODAL_EDIT_TAG_FIELD_VALUE, 'blue');
|
||||
|
||||
await click(EDIT_TAG_CANCEL_BUTTON);
|
||||
await click(selectors.MODAL_EDIT_TAG_CANCEL_BUTTON);
|
||||
|
||||
assert.dom(API_TAG_KEY_SELECTOR(4)).hasText(key);
|
||||
assert.dom(API_TAG_VALUE_SELECTOR(4)).hasText(value);
|
||||
assert.dom(selectors.TABLE_ROW_API_TAG_KEY(4)).hasText(key);
|
||||
assert.dom(selectors.TABLE_ROW_API_TAG_VALUE(4)).hasText(value);
|
||||
});
|
||||
|
||||
test('user cannot edit a tag without proper permission', async function (assert) {
|
||||
@@ -203,11 +181,15 @@ module('Acceptance | workers | worker | tags', function (hooks) {
|
||||
);
|
||||
await visit(urls.tags);
|
||||
|
||||
await click(API_TAG_ACTION_SELECTOR);
|
||||
await click(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN);
|
||||
|
||||
// Asserts first button is for removing and there is no second button
|
||||
assert.dom(API_TAG_FIRST_BUTTON_SELECTOR).hasText('Remove Tag');
|
||||
assert.dom(API_TAG_LAST_BUTTON_SELECTOR).doesNotExist();
|
||||
assert
|
||||
.dom(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN_FIRST_BUTTON)
|
||||
.hasText('Remove Tag');
|
||||
assert
|
||||
.dom(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN_LAST_BUTTON)
|
||||
.doesNotExist();
|
||||
});
|
||||
|
||||
test('user does not see tag action dropdown if they cannot edit or remove tags', async function (assert) {
|
||||
@@ -218,7 +200,7 @@ module('Acceptance | workers | worker | tags', function (hooks) {
|
||||
|
||||
await visit(urls.tags);
|
||||
|
||||
assert.dom(API_TAG_ACTION_SELECTOR).doesNotExist();
|
||||
assert.dom(selectors.TABLE_ROW_API_TAG_ACTION_DROPDOWN).doesNotExist();
|
||||
});
|
||||
|
||||
test('shows "No tags added" message when there are no worker tags', async function (assert) {
|
||||
@@ -228,7 +210,9 @@ module('Acceptance | workers | worker | tags', function (hooks) {
|
||||
|
||||
await visit(urls.tags);
|
||||
|
||||
assert.dom(NO_TAGS_STATE_TITLE).hasText('No tags added');
|
||||
assert.dom(NO_TAGS_STATE_ACTION).hasAttribute('href', urls.createTags);
|
||||
assert.dom(selectors.NO_TAGS_STATE_TITLE).hasText('No tags added');
|
||||
assert
|
||||
.dom(selectors.NO_TAGS_STATE_ACTION)
|
||||
.hasAttribute('href', urls.createTags);
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user