<!DOCTYPE html>
<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
<script src="../../../bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
<script src="/bower_components/web-component-tester/browser.js"></script>

<link rel="import" href="/bower_components/polymer/polymer.html">

<title>gr-checks-chip-view</title>
<link rel="import" href="gr-checks-chip-view.html">

<test-fixture id="basic">
  <template is="dom-template">
    <gr-checks-chip-view change="[[change]]" revision="[[revision]]" get-checks="[[getChecks]]"></gr-checks-chip-view>
  </template>
</test-fixture>

<script>
  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', {
        getChecks: getChecksSpy,
        change: {
          _number: 314,
        },
        revision: {
          _number: 271,
        },
      });
      flush(done);
    });

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

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

    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>
