<!DOCTYPE html>
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
<script src="/node_modules/@webcomponents/webcomponentsjs/custom-elements-es5-adapter.js"></script>
<script src="../node_modules/@webcomponents/webcomponentsjs/webcomponents-loader.js"></script>
<script src="../bower_components/web-component-tester/browser.js"></script>

<title>gr-checks-chip-view</title>

<test-fixture id="basic">
  <template>
    <gr-checks-chip-view></gr-checks-chip-view>
  </template>
</test-fixture>

<script type="module">
  import '../test/common-test-setup.js';
  import './gr-checks-chip-view.js';
  const CHECK1 = {
    checkId: 'test-check-id',
    log: 'http://example.com/test-log-url',
    started: '2019-02-06T22:25:19.269Z',
    finished: '2019-02-06T22:25:44.574Z',
    state: 'SUCCESSFUL',
  };

  const CHECK2 = {
    checkId: 'test-check-id-2',
    log: 'http://example.com/test-log-url',
    started: '2019-02-06T22:25:19.269Z',
    finished: '2019-02-06T22:25:44.574Z',
    state: 'FAILED',
  };

  suite('gr-checks-chip-view tests', () => {
    let element;
    let sandbox;
    let getChecksSpy;

    setup(done => {
      sandbox = sinon.sandbox.create();

      getChecksSpy = sinon.stub();
      getChecksSpy.returns(Promise.resolve([CHECK1, CHECK2, CHECK1]));

      element = fixture('basic');
      element.getChecks = getChecksSpy;
      element.change = {
        _number: 314,
        current_revision: 'abcd',
        revisions: {
          abcd: {
            _number: 271,
          },
        },
      };
      element.revision = {
        _number: 271,
      };
      flush(done);
    });

    teardown(() => { sandbox.restore(); });

    test('renders the checks prefix', () => {
      assert.include(element.shadowRoot.textContent.trim(), 'Checks:');
    });

    test('updating revision does not update getChecks call', done => {
      element.revision = {_number: 272};
      flush(() => {
        assert.isFalse(getChecksSpy.calledWith(314, 272));
        done();
      });
    });

    suite('builds chip contents', () => {
      test('queries the checks', () => {
        assert.isTrue(getChecksSpy.called);
        assert.isTrue(getChecksSpy.calledWith(314, 271));
      });

      test('renders the text of failed checks', () => {
        const chip = element.$$('.chip');
        assert.equal(chip.textContent.trim(), '1 of 3 checks failed');
      });
    });
  });
</script>
