// Copyright 2020 The Chromium Authors. All rights reserved.
// 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 {MrIssueStar} from './mr-issue-star.js';
import {issueRefToString} from 'shared/convertersV0.js';
import sinon from 'sinon';


let element;

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

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

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

  it('starring logins user when user is not logged in', async () => {
    element._currentUserName = undefined;
    sinon.stub(element, 'login');

    await element.updateComplete;

    const star = element.shadowRoot.querySelector('button');

    star.click();

    sinon.assert.calledOnce(element.login);
  });

  it('_isStarring true only when issue ref is being starred', async () => {
    element._starringIssues = new Map([['chromium:22', {requesting: true}]]);
    element.issueRef = {projectName: 'chromium', localId: 5};

    assert.isFalse(element._isStarring);

    element.issueRef = {projectName: 'chromium', localId: 22};

    assert.isTrue(element._isStarring);

    element._starringIssues = new Map([['chromium:22', {requesting: false}]]);

    assert.isFalse(element._isStarring);
  });

  it('starring is disabled when _isStarring true', () => {
    element._currentUserName = 'users/1234';
    sinon.stub(element, '_isStarring').get(() => true);

    assert.isFalse(element._starringEnabled);
  });

  it('starring is disabled when _fetchingIsStarred true', () => {
    element._currentUserName = 'users/1234';
    element._fetchingIsStarred = true;

    assert.isFalse(element._starringEnabled);
  });

  it('_starredIssues changes displayed icon', async () => {
    element.issueRef = {projectName: 'proj', localId: 1};

    element._starredIssues = new Set([issueRefToString(element.issueRef)]);

    await element.updateComplete;

    const star = element.shadowRoot.querySelector('button');
    assert.equal(star.textContent.trim(), 'star');

    element._starredIssues = new Set();

    await element.updateComplete;

    assert.equal(star.textContent.trim(), 'star_border');
  });
});
