// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import {assert} from 'chai';
import {MrCrbugLink} from './mr-crbug-link.js';


let element;

describe('mr-crbug-link', () => {
  beforeEach(() => {
    element = document.createElement('mr-crbug-link');
    document.body.appendChild(element);
  });

  afterEach(() => {
    document.body.removeChild(element);
  });

  it('initializes', () => {
    assert.instanceOf(element, MrCrbugLink);
  });

  it('In prod, link to crbug.com with project name specified', async () => {
    element._getHost = () => 'bugs.chromium.org';
    element.issue = {
      projectName: 'test',
      localId: 11,
    };

    await element.updateComplete;

    const link = element.shadowRoot.querySelector('#bugLink');
    assert.equal(link.href, 'https://crbug.com/test/11');
  });

  it('In prod, link to crbug.com with implicit project name', async () => {
    element._getHost = () => 'bugs.chromium.org';
    element.issue = {
      projectName: 'chromium',
      localId: 11,
    };

    await element.updateComplete;

    const link = element.shadowRoot.querySelector('#bugLink');
    assert.equal(link.href, 'https://crbug.com/11');
  });

  it('does not redirects to approval page for regular issues', async () => {
    element.issue = {
      projectName: 'test',
      localId: 11,
    };

    await element.updateComplete;

    const link = element.shadowRoot.querySelector('#bugLink');
    assert.include(link.href.trim(), '/p/test/issues/detail?id=11');
  });
});
