// 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 MrFlipper from './mr-flipper.js';
import sinon from 'sinon';

const xssiPrefix = ')]}\'';

let element;

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

    sinon.stub(window, 'fetch');

    const response = new window.Response(`${xssiPrefix}{"message": "Ok"}`, {
      status: 201,
      headers: {
        'Content-type': 'application/json',
      },
    });
    window.fetch.returns(Promise.resolve(response));
  });

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

    window.fetch.restore();
  });

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

  it('renders links', async () => {
    // Test DOM after properties are updated.
    element._populateResponseData({
      cur_index: 4,
      total_count: 13,
      prev_url: 'http://prevurl/',
      next_url: 'http://nexturl/',
      list_url: 'http://listurl/',
    });

    await element.updateComplete;

    const prevUrlEl = element.shadowRoot.querySelector('a.prev-url');
    const nextUrlEl = element.shadowRoot.querySelector('a.next-url');
    const listUrlEl = element.shadowRoot.querySelector('a.list-url');
    const countsEl = element.shadowRoot.querySelector('div.counts');

    assert.equal(prevUrlEl.href, 'http://prevurl/');
    assert.equal(nextUrlEl.href, 'http://nexturl/');
    assert.equal(listUrlEl.href, 'http://listurl/');
    assert.include(countsEl.innerText, '5 of 13');
  });

  it('fetches flipper data when queryParams change', async () => {
    await element.updateComplete;

    sinon.stub(element, 'fetchFlipperData');

    element.queryParams = {id: 21, q: 'owner:me'};

    sinon.assert.notCalled(element.fetchFlipperData);

    await element.updateComplete;

    sinon.assert.calledWith(element.fetchFlipperData, 'id=21&q=owner%3Ame');
  });
});
