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]'), 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); }, }; }