<!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>
