Refactor: Workers test - Create-tags, list and tags (#2742)

* refactor: 💡 workers test - create-tags,list,tags

* fix: 🐛 addressed comment
This commit is contained in:
Priya Patel authored and GitHub committed 2025-03-25 15:03:13 -07:00
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();
+58 -43
View File
@@ -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';
+64 -80
View File
@@ -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);
});
});