open-nomad/ui/tests/pages/components/allocations.js

55 lines
1.7 KiB
JavaScript

import {
attribute,
collection,
clickable,
isPresent,
text,
} from 'ember-cli-page-object';
import { singularize } from 'ember-inflector';
export default function (
selector = '[data-test-allocation]',
propKey = 'allocations'
) {
const lookupKey = `${singularize(propKey)}For`;
// Remove the bracket notation
const attr = selector.substring(1, selector.length - 1);
return {
[propKey]: collection(selector, {
id: attribute(attr),
shortId: text('[data-test-short-id]'),
createTime: text('[data-test-create-time]'),
createTooltip: attribute(
'aria-label',
'[data-test-create-time] .tooltip'
),
modifyTime: text('[data-test-modify-time]'),
health: text('[data-test-health]'),
status: text('[data-test-client-status]'),
job: text('[data-test-job]'),
taskGroup: text('[data-test-task-group]'),
client: text('[data-test-client]'),
clientTooltip: attribute('aria-label', '[data-test-client] .tooltip'),
jobVersion: text('[data-test-job-version]'),
volume: text('[data-test-volume]'),
cpu: text('[data-test-cpu]'),
cpuTooltip: attribute('aria-label', '[data-test-cpu] .tooltip'),
mem: text('[data-test-mem]'),
memTooltip: attribute('aria-label', '[data-test-mem] .tooltip'),
rescheduled: isPresent(
'[data-test-indicators] [data-test-icon="reschedule"]'
),
visit: clickable('[data-test-short-id] a'),
visitRow: clickable(),
visitJob: clickable('[data-test-job]'),
visitClient: clickable('[data-test-client] a'),
}),
[lookupKey]: function (id) {
return this[propKey].toArray().find((allocation) => allocation.id === id);
},
};
}