/**
 * @license
 * Copyright 2017 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import '../../../test/common-test-setup';
import './gr-repo-detail-list';
import {GrRepoDetailList} from './gr-repo-detail-list';
import {page} from '../../../utils/page-wrapper-utils';
import {
  addListenerForTest,
  mockPromise,
  queryAll,
  queryAndAssert,
  stubRestApi,
} from '../../../test/test-utils';
import {
  BranchInfo,
  EmailAddress,
  GitRef,
  GroupId,
  GroupName,
  ProjectAccessGroups,
  ProjectAccessInfoMap,
  RepoName,
  TagInfo,
  Timestamp,
  TimezoneOffset,
} from '../../../types/common';
import {GerritView} from '../../../services/router/router-model';
import {GrButton} from '../../shared/gr-button/gr-button';
import {PageErrorEvent} from '../../../types/events';
import {GrOverlay} from '../../shared/gr-overlay/gr-overlay';
import {GrDialog} from '../../shared/gr-dialog/gr-dialog';
import {GrListView} from '../../shared/gr-list-view/gr-list-view';
import {SHOWN_ITEMS_COUNT} from '../../../constants/constants';
import {fixture, html, assert} from '@open-wc/testing';
import {RepoDetailView} from '../../../models/views/repo';

function branchGenerator(counter: number) {
  return {
    ref: `refs/heads/test${counter}` as GitRef,
    revision: '9c9d08a438e55e52f33b608415e6dddd9b18550d',
    web_links: [
      {
        name: 'diffusion',
        url: `https://git.example.org/branch/test;refs/heads/test${counter}`,
      },
    ],
  };
}

function createBranchesList(n: number) {
  const branches = [];
  for (let i = 0; i < n; ++i) {
    branches.push(branchGenerator(i));
  }
  return branches;
}

function tagGenerator(counter: number) {
  return {
    ref: `refs/tags/test${counter}` as GitRef,
    revision: '9c9d08a438e55e52f33b608415e6dddd9b18550d',
    can_delete: false,
    web_links: [
      {
        name: 'diffusion',
        url: `https://git.example.org/tag/test;refs/tags/test${counter}`,
      },
    ],
    message: 'Annotated tag',
    tagger: {
      name: 'Test User',
      email: 'test.user@gmail.com' as EmailAddress,
      date: '2017-09-19 14:54:00.000000000' as Timestamp,
      tz: 540 as TimezoneOffset,
    },
  };
}

function createTagsList(n: number) {
  const tags = [];
  for (let i = 0; i < n; ++i) {
    tags.push(tagGenerator(i));
  }
  return tags;
}

suite('gr-repo-detail-list', () => {
  suite('Branches', () => {
    let element: GrRepoDetailList;
    let branches: BranchInfo[];

    setup(async () => {
      element = await fixture(
        html`<gr-repo-detail-list></gr-repo-detail-list>`
      );
      element.detailType = RepoDetailView.BRANCHES;
      sinon.stub(page, 'show');
    });

    suite('list of repo branches', () => {
      setup(async () => {
        branches = [
          {
            ref: 'HEAD' as GitRef,
            revision: 'master',
          },
        ].concat(createBranchesList(25));
        stubRestApi('getRepoBranches').returns(Promise.resolve(branches));

        element.params = {
          view: GerritView.REPO,
          repo: 'test' as RepoName,
          detail: RepoDetailView.BRANCHES,
        };
        await element.paramsChanged();
        await element.updateComplete;
      });

      test('render', () => {
        assert.shadowDom.equal(
          element,
          /* HTML */ `
            <gr-list-view>
              <table class="genericList gr-form-styles" id="list">
                <tbody>
                  <tr class="headerRow">
                    <th class="name topHeader">Name</th>
                    <th class="revision topHeader">Revision</th>
                    <th class="hideItem message topHeader">Message</th>
                    <th class="hideItem tagger topHeader">Tagger</th>
                    <th class="repositoryBrowser topHeader">
                      Repository Browser
                    </th>
                    <th class="delete topHeader"></th>
                  </tr>
                  <tr class="loadingMsg" id="loading">
                    <td>Loading...</td>
                  </tr>
                </tbody>
                <tbody>
                  <tr class="table">
                    <td class="branches name">
                      <a> HEAD </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing"> master </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing"> master </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="0"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="0"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser"></td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="0"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test0"
                      >
                        test0
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="1"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="1"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test0"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="1"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test1"
                      >
                        test1
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="2"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="2"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test1"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="2"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test2"
                      >
                        test2
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="3"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="3"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test2"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="3"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test3"
                      >
                        test3
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="4"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="4"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test3"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="4"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test4"
                      >
                        test4
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="5"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="5"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test4"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="5"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test5"
                      >
                        test5
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="6"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="6"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test5"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="6"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test6"
                      >
                        test6
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="7"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="7"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test6"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="7"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test7"
                      >
                        test7
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="8"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="8"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test7"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="8"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test8"
                      >
                        test8
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="9"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="9"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test8"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="9"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test9"
                      >
                        test9
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="10"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="10"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test9"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="10"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test10"
                      >
                        test10
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="11"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="11"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test10"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="11"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test11"
                      >
                        test11
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="12"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="12"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test11"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="12"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test12"
                      >
                        test12
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="13"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="13"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test12"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="13"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test13"
                      >
                        test13
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="14"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="14"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test13"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="14"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test14"
                      >
                        test14
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="15"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="15"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test14"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="15"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test15"
                      >
                        test15
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="16"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="16"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test15"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="16"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test16"
                      >
                        test16
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="17"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="17"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test16"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="17"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test17"
                      >
                        test17
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="18"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="18"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test17"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="18"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test18"
                      >
                        test18
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="19"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="19"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test18"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="19"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test19"
                      >
                        test19
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="20"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="20"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test19"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="20"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test20"
                      >
                        test20
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="21"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="21"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test20"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="21"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test21"
                      >
                        test21
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="22"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="22"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test21"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="22"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test22"
                      >
                        test22
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="23"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="23"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test22"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="23"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                  <tr class="table">
                    <td class="branches name">
                      <a
                        href="https://git.example.org/branch/test;refs/heads/test23"
                      >
                        test23
                      </a>
                    </td>
                    <td class="branches revision">
                      <span class="revisionNoEditing">
                        9c9d08a438e55e52f33b608415e6dddd9b18550d
                      </span>
                      <span class="revisionEdit">
                        <span class="revisionWithEditing">
                          9c9d08a438e55e52f33b608415e6dddd9b18550d
                        </span>
                        <gr-button
                          aria-disabled="false"
                          class="editBtn"
                          data-index="24"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          edit
                        </gr-button>
                        <iron-input class="editItem">
                          <input />
                        </iron-input>
                        <gr-button
                          aria-disabled="false"
                          class="cancelBtn editItem"
                          link=""
                          role="button"
                          tabindex="0"
                        >
                          Cancel
                        </gr-button>
                        <gr-button
                          aria-disabled="true"
                          class="editItem saveBtn"
                          data-index="24"
                          disabled=""
                          link=""
                          role="button"
                          tabindex="-1"
                        >
                          Save
                        </gr-button>
                      </span>
                    </td>
                    <td class="hideItem message"></td>
                    <td class="hideItem tagger"></td>
                    <td class="repositoryBrowser">
                      <a
                        class="webLink"
                        href="https://git.example.org/branch/test;refs/heads/test23"
                        rel="noopener"
                        target="_blank"
                      >
                        (diffusion)
                      </a>
                    </td>
                    <td class="delete">
                      <gr-button
                        aria-disabled="false"
                        class="deleteButton"
                        data-index="24"
                        link=""
                        role="button"
                        tabindex="0"
                      >
                        Delete
                      </gr-button>
                    </td>
                  </tr>
                </tbody>
              </table>
              <gr-overlay
                aria-hidden="true"
                id="overlay"
                style="outline: none; display: none;"
                tabindex="-1"
                with-backdrop=""
              >
                <gr-confirm-delete-item-dialog class="confirmDialog">
                </gr-confirm-delete-item-dialog>
              </gr-overlay>
            </gr-list-view>
            <gr-overlay
              aria-hidden="true"
              id="createOverlay"
              style="outline: none; display: none;"
              tabindex="-1"
              with-backdrop=""
            >
              <gr-dialog
                confirm-label="Create"
                disabled=""
                id="createDialog"
                role="dialog"
              >
                <div class="header" slot="header">Create Branch</div>
                <div class="main" slot="main">
                  <gr-create-pointer-dialog id="createNewModal">
                  </gr-create-pointer-dialog>
                </div>
              </gr-dialog>
            </gr-overlay>
          `
        );
      });

      test('test for branch in the list', () => {
        assert.equal(element.items![3].ref, 'refs/heads/test2');
      });

      test('test for web links in the branches list', () => {
        assert.equal(
          element.items![3].web_links![0].url,
          'https://git.example.org/branch/test;refs/heads/test2'
        );
      });

      test('test for refs/heads/ being striped from ref', () => {
        assert.equal(
          element.stripRefs(element.items![3].ref, element.detailType),
          'test2'
        );
      });

      test('items', () => {
        assert.equal(queryAll<HTMLTableElement>(element, '.table').length, 25);
      });

      test('Edit HEAD button not admin', async () => {
        sinon.stub(element, 'getLoggedIn').returns(Promise.resolve(true));
        stubRestApi('getRepoAccess').returns(
          Promise.resolve({
            test: {
              revision: 'xxxx',
              local: {
                'refs/*': {
                  permissions: {
                    owner: {rules: {xxx: {action: 'ALLOW', force: false}}},
                  },
                },
              },
              owner_of: ['refs/*'] as GitRef[],
              groups: {
                xxxx: {
                  id: 'xxxx' as GroupId,
                  url: 'test',
                  name: 'test' as GroupName,
                },
              } as ProjectAccessGroups,
              config_web_links: [{name: 'gitiles', url: 'test'}],
            },
          } as ProjectAccessInfoMap)
        );
        await element.determineIfOwner('test' as RepoName);
        assert.equal(element.isOwner, false);
        assert.equal(
          getComputedStyle(
            queryAndAssert<HTMLSpanElement>(element, '.revisionNoEditing')
          ).display,
          'inline'
        );
        assert.equal(
          getComputedStyle(
            queryAndAssert<HTMLSpanElement>(element, '.revisionEdit')
          ).display,
          'none'
        );
      });

      test('Edit HEAD button admin', async () => {
        const saveBtn = queryAndAssert<GrButton>(element, '.saveBtn');
        const cancelBtn = queryAndAssert<GrButton>(element, '.cancelBtn');
        const editBtn = queryAndAssert<GrButton>(element, '.editBtn');
        const revisionNoEditing = queryAndAssert<HTMLSpanElement>(
          element,
          '.revisionNoEditing'
        );
        const revisionWithEditing = queryAndAssert<HTMLSpanElement>(
          element,
          '.revisionWithEditing'
        );

        sinon.stub(element, 'getLoggedIn').returns(Promise.resolve(true));
        stubRestApi('getRepoAccess').returns(
          Promise.resolve({
            test: {
              revision: 'xxxx',
              local: {
                'refs/*': {
                  permissions: {
                    owner: {rules: {xxx: {action: 'ALLOW', force: false}}},
                  },
                },
              },
              is_owner: true,
              owner_of: ['refs/*'] as GitRef[],
              groups: {
                xxxx: {
                  id: 'xxxx' as GroupId,
                  url: 'test',
                  name: 'test' as GroupName,
                },
              } as ProjectAccessGroups,
              config_web_links: [{name: 'gitiles', url: 'test'}],
            },
          } as ProjectAccessInfoMap)
        );
        const handleSaveRevisionStub = sinon.stub(
          element,
          'handleSaveRevision'
        );
        await element.determineIfOwner('test' as RepoName);
        assert.equal(element.isOwner, true);
        // The revision container for non-editing enabled row is not visible.
        assert.equal(getComputedStyle(revisionNoEditing).display, 'none');

        // The revision container for editing enabled row is visible.
        assert.notEqual(
          getComputedStyle(
            queryAndAssert<HTMLSpanElement>(element, '.revisionEdit')
          ).display,
          'none'
        );

        // The revision and edit button are visible.
        assert.notEqual(getComputedStyle(revisionWithEditing).display, 'none');
        assert.notEqual(getComputedStyle(editBtn).display, 'none');

        // The input, cancel, and save buttons are not visible.
        const hiddenElements = queryAll<HTMLTableElement>(
          element,
          '.canEdit .editItem'
        );

        for (const item of hiddenElements) {
          assert.equal(getComputedStyle(item).display, 'none');
        }

        editBtn.click();
        await element.updateComplete;
        // The revision and edit button are not visible.
        assert.equal(getComputedStyle(revisionWithEditing).display, 'none');
        assert.equal(getComputedStyle(editBtn).display, 'none');

        // The input, cancel, and save buttons are not visible.
        for (const item of hiddenElements) {
          assert.notEqual(getComputedStyle(item).display, 'none');
        }

        // The revised ref was set correctly
        assert.equal(element.revisedRef, 'master' as GitRef);

        assert.isFalse(saveBtn.disabled);

        // Delete the ref.
        element.revisedRef = '' as GitRef;
        await element.updateComplete;
        assert.isTrue(saveBtn.disabled);

        // Change the ref to something else
        element.revisedRef = 'newRef' as GitRef;
        element.repo = 'test' as RepoName;
        await element.updateComplete;
        assert.isFalse(saveBtn.disabled);

        // Save button calls handleSave. since this is stubbed, the edit
        // section remains open.
        saveBtn.click();
        assert.isTrue(handleSaveRevisionStub.called);

        // When cancel is tapped, the edit section closes.
        cancelBtn.click();
        await element.updateComplete;

        // The revision and edit button are visible.
        assert.notEqual(getComputedStyle(revisionWithEditing).display, 'none');
        assert.notEqual(getComputedStyle(editBtn).display, 'none');

        // The input, cancel, and save buttons are not visible.
        for (const item of hiddenElements) {
          assert.equal(getComputedStyle(item).display, 'none');
        }
      });

      test('handleSaveRevision with invalid rev', async () => {
        element.isEditing = true;
        stubRestApi('setRepoHead').returns(
          Promise.resolve({
            status: 400,
          } as Response)
        );

        await element.setRepoHead('test' as RepoName, 'newRef' as GitRef, 1);
        assert.isTrue(element.isEditing);
      });

      test('handleSaveRevision with valid rev', async () => {
        element.isEditing = true;
        stubRestApi('setRepoHead').returns(
          Promise.resolve({
            status: 200,
          } as Response)
        );

        await element.setRepoHead('test' as RepoName, 'newRef' as GitRef, 1);
        assert.isFalse(element.isEditing);
      });

      test('test computeItemName', () => {
        assert.deepEqual(
          element.computeItemName(RepoDetailView.BRANCHES),
          'Branch'
        );
        assert.deepEqual(element.computeItemName(RepoDetailView.TAGS), 'Tag');
      });
    });

    suite('list with less then 25 branches', () => {
      setup(async () => {
        branches = createBranchesList(25);
        stubRestApi('getRepoBranches').returns(Promise.resolve(branches));

        element.params = {
          view: GerritView.REPO,
          repo: 'test' as RepoName,
          detail: RepoDetailView.BRANCHES,
        };

        await element.paramsChanged();
        await element.updateComplete;
      });

      test('items', () => {
        assert.equal(queryAll<HTMLTableElement>(element, '.table').length, 25);
      });
    });

    suite('filter', () => {
      test('paramsChanged', async () => {
        const stub = stubRestApi('getRepoBranches').returns(
          Promise.resolve(branches)
        );
        element.params = {
          view: GerritView.REPO,
          repo: 'test' as RepoName,
          detail: RepoDetailView.BRANCHES,
          filter: 'test',
          offset: 25,
        };
        await element.paramsChanged();
        assert.equal(stub.lastCall.args[0], 'test');
        assert.equal(stub.lastCall.args[1], 'test');
        assert.equal(stub.lastCall.args[2], 25);
        assert.equal(stub.lastCall.args[3], 25);
      });
    });

    suite('404', () => {
      test('fires page-error', async () => {
        const response = {status: 404} as Response;
        stubRestApi('getRepoBranches').callsFake(
          (_filter, _repo, _reposBranchesPerPage, _opt_offset, errFn) => {
            if (errFn !== undefined) {
              errFn(response);
            }
            return Promise.resolve([]);
          }
        );

        const promise = mockPromise();
        addListenerForTest(document, 'page-error', e => {
          assert.deepEqual((e as PageErrorEvent).detail.response, response);
          promise.resolve();
        });

        element.params = {
          view: GerritView.REPO,
          repo: 'test' as RepoName,
          detail: RepoDetailView.BRANCHES,
          filter: 'test',
          offset: 25,
        };
        element.paramsChanged();
        await promise;
      });
    });
  });

  suite('Tags', () => {
    let element: GrRepoDetailList;
    let tags: TagInfo[];

    setup(async () => {
      element = await fixture(
        html`<gr-repo-detail-list></gr-repo-detail-list>`
      );
      element.detailType = RepoDetailView.TAGS;
      sinon.stub(page, 'show');
    });

    suite('list of repo tags', () => {
      setup(async () => {
        tags = createTagsList(26);
        stubRestApi('getRepoTags').returns(Promise.resolve(tags));

        element.params = {
          view: GerritView.REPO,
          repo: 'test' as RepoName,
          detail: RepoDetailView.TAGS,
        };

        await element.paramsChanged();
        await element.updateComplete;
      });

      test('test for tag in the list', async () => {
        assert.equal(element.items![2].ref, 'refs/tags/test2');
      });

      test('test for tag message in the list', async () => {
        assert.equal((element.items as TagInfo[])![2].message, 'Annotated tag');
      });

      test('test for tagger in the tag list', async () => {
        const tagger = {
          name: 'Test User',
          email: 'test.user@gmail.com' as EmailAddress,
          date: '2017-09-19 14:54:00.000000000' as Timestamp,
          tz: 540 as TimezoneOffset,
        };

        assert.deepEqual((element.items as TagInfo[])![2].tagger, tagger);
      });

      test('test for web links in the tags list', async () => {
        assert.equal(
          element.items![2].web_links![0].url,
          'https://git.example.org/tag/test;refs/tags/test2'
        );
      });

      test('test for refs/tags/ being striped from ref', async () => {
        assert.equal(
          element.stripRefs(element.items![2].ref, element.detailType),
          'test2'
        );
      });

      test('items', () => {
        assert.equal(element.items!.slice(0, SHOWN_ITEMS_COUNT)!.length, 25);
      });
    });

    suite('list with less then 25 tags', () => {
      setup(async () => {
        tags = createTagsList(25);
        stubRestApi('getRepoTags').returns(Promise.resolve(tags));

        element.params = {
          view: GerritView.REPO,
          repo: 'test' as RepoName,
          detail: RepoDetailView.TAGS,
        };

        await element.paramsChanged();
        await element.updateComplete;
      });

      test('items', () => {
        assert.equal(element.items!.slice(0, SHOWN_ITEMS_COUNT)!.length, 25);
      });
    });

    suite('filter', () => {
      test('paramsChanged', async () => {
        const stub = stubRestApi('getRepoTags').returns(Promise.resolve(tags));
        element.params = {
          view: GerritView.REPO,
          repo: 'test' as RepoName,
          detail: RepoDetailView.TAGS,
          filter: 'test',
          offset: 25,
        };
        await element.paramsChanged();
        assert.equal(stub.lastCall.args[0], 'test');
        assert.equal(stub.lastCall.args[1], 'test');
        assert.equal(stub.lastCall.args[2], 25);
        assert.equal(stub.lastCall.args[3], 25);
      });
    });

    suite('create new', () => {
      test('handleCreateClicked called when create-click fired', () => {
        const handleCreateClickedStub = sinon.stub(
          element,
          'handleCreateClicked'
        );
        queryAndAssert<GrListView>(element, 'gr-list-view').dispatchEvent(
          new CustomEvent('create-clicked', {
            composed: true,
            bubbles: true,
          })
        );
        assert.isTrue(handleCreateClickedStub.called);
      });

      test('handleCreateClicked opens modal', () => {
        queryAndAssert<GrOverlay>(element, '#createOverlay');
        const openStub = sinon.stub(
          queryAndAssert<GrOverlay>(element, '#createOverlay'),
          'open'
        );
        element.handleCreateClicked();
        assert.isTrue(openStub.called);
      });

      test('handleCreateItem called when confirm fired', () => {
        const handleCreateItemStub = sinon.stub(element, 'handleCreateItem');
        queryAndAssert<GrDialog>(element, '#createDialog').dispatchEvent(
          new CustomEvent('confirm', {
            composed: true,
            bubbles: true,
          })
        );
        assert.isTrue(handleCreateItemStub.called);
      });

      test('handleCloseCreate called when cancel fired', () => {
        const handleCloseCreateStub = sinon.stub(element, 'handleCloseCreate');
        queryAndAssert<GrDialog>(element, '#createDialog').dispatchEvent(
          new CustomEvent('cancel', {
            composed: true,
            bubbles: true,
          })
        );
        assert.isTrue(handleCloseCreateStub.called);
      });
    });

    suite('404', () => {
      test('fires page-error', async () => {
        const response = {status: 404} as Response;
        stubRestApi('getRepoTags').callsFake(
          (_filter, _repo, _reposTagsPerPage, _opt_offset, errFn) => {
            if (errFn !== undefined) {
              errFn(response);
            }
            return Promise.resolve([]);
          }
        );

        const promise = mockPromise();
        addListenerForTest(document, 'page-error', e => {
          assert.deepEqual((e as PageErrorEvent).detail.response, response);
          promise.resolve();
        });

        element.params = {
          view: GerritView.REPO,
          repo: 'test' as RepoName,
          detail: RepoDetailView.TAGS,
          filter: 'test',
          offset: 25,
        };
        element.paramsChanged();
        await promise;
      });
    });

    test('computeItemName', () => {
      assert.equal(element.computeItemName(RepoDetailView.BRANCHES), 'Branch');
      assert.equal(element.computeItemName(RepoDetailView.TAGS), 'Tag');
    });
  });
});
