/**
 * Copyright (c) HashiCorp, Inc.
 * SPDX-License-Identifier: MPL-2.0
 */

export default function (
  visitable,
  clickable,
  text,
  attribute,
  present,
  collection,
  popoverSelect
) {
  const service = {
    name: text('[data-test-service-name]'),
    service: clickable('a'),
    externalSource: attribute('data-test-external-source', '[data-test-external-source]'),
    kind: attribute('data-test-kind', '[data-test-kind]'),
    peer: text('[data-test-bucket-item="peer"]'),
    mesh: present('[data-test-mesh]'),
    associatedServiceCount: present('[data-test-associated-service-count]'),
  };
  return {
    visit: visitable('/:dc/services'),
    services: collection('.consul-service-list > ul > li:not(:first-child)', service),
    home: clickable('[data-test-home]'),
    sort: popoverSelect('[data-test-sort-control]'),
  };
}
