<!DOCTYPE html>
<!--
@license
Copyright (C) 2015 The Android Open Source Project

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->

<meta name="viewport" content="width=device-width, minimum-scale=1.0, initial-scale=1.0, user-scalable=yes">
<title>gr-change-list-item</title>

<script src="../../../bower_components/webcomponentsjs/webcomponents-lite.min.js"></script>
<script src="../../../bower_components/web-component-tester/browser.js"></script>
<link rel="import" href="../../../test/common-test-setup.html"/>
<script src="../../../scripts/util.js"></script>

<link rel="import" href="gr-change-list-item.html">

<script>void(0);</script>

<test-fixture id="basic">
  <template>
    <gr-change-list-item></gr-change-list-item>
  </template>
</test-fixture>

<script>
  suite('gr-change-list-item tests', () => {
    let element;

    setup(() => {
      stub('gr-rest-api-interface', {
        getConfig() { return Promise.resolve({}); },
        getLoggedIn() { return Promise.resolve(false); },
      });
      element = fixture('basic');
    });

    test('computed fields', () => {
      assert.equal(element._computeLabelClass({labels: {}}),
          'cell label u-gray-background');
      assert.equal(element._computeLabelClass(
          {labels: {}}, 'Verified'), 'cell label u-gray-background');
      assert.equal(element._computeLabelClass(
          {labels: {Verified: {approved: true, value: 1}}}, 'Verified'),
          'cell label u-green u-monospace');
      assert.equal(element._computeLabelClass(
          {labels: {Verified: {rejected: true, value: -1}}}, 'Verified'),
          'cell label u-monospace u-red');
      assert.equal(element._computeLabelClass(
          {labels: {'Code-Review': {value: 1}}}, 'Code-Review'),
          'cell label u-green u-monospace');
      assert.equal(element._computeLabelClass(
          {labels: {'Code-Review': {value: -1}}}, 'Code-Review'),
          'cell label u-monospace u-red');
      assert.equal(element._computeLabelClass(
          {labels: {'Code-Review': {value: -1}}}, 'Verified'),
          'cell label u-gray-background');

      assert.equal(element._computeLabelTitle({labels: {}}, 'Verified'),
          'Label not applicable');
      assert.equal(element._computeLabelTitle(
          {labels: {Verified: {approved: {name: 'Diffy'}}}}, 'Verified'),
          'Verified\nby Diffy');
      assert.equal(element._computeLabelTitle(
          {labels: {Verified: {approved: {name: 'Diffy'}}}}, 'Code-Review'),
          'Label not applicable');
      assert.equal(element._computeLabelTitle(
          {labels: {Verified: {rejected: {name: 'Diffy'}}}}, 'Verified'),
          'Verified\nby Diffy');
      assert.equal(element._computeLabelTitle(
          {labels: {'Code-Review': {disliked: {name: 'Diffy'}, value: -1}}},
          'Code-Review'), 'Code-Review\nby Diffy');
      assert.equal(element._computeLabelTitle(
          {labels: {'Code-Review': {recommended: {name: 'Diffy'}, value: 1}}},
          'Code-Review'), 'Code-Review\nby Diffy');
      assert.equal(element._computeLabelTitle(
          {labels: {'Code-Review': {recommended: {name: 'Diffy'},
            rejected: {name: 'Admin'}}}}, 'Code-Review'),
          'Code-Review\nby Admin');
      assert.equal(element._computeLabelTitle(
          {labels: {'Code-Review': {approved: {name: 'Diffy'},
            rejected: {name: 'Admin'}}}}, 'Code-Review'),
          'Code-Review\nby Admin');
      assert.equal(element._computeLabelTitle(
          {labels: {'Code-Review': {recommended: {name: 'Diffy'},
            disliked: {name: 'Admin'}, value: -1}}}, 'Code-Review'),
          'Code-Review\nby Admin');
      assert.equal(element._computeLabelTitle(
          {labels: {'Code-Review': {approved: {name: 'Diffy'},
            disliked: {name: 'Admin'}, value: -1}}}, 'Code-Review'),
          'Code-Review\nby Diffy');

      assert.equal(element._computeLabelValue({labels: {}}), '');
      assert.equal(element._computeLabelValue({labels: {}}, 'Verified'), '');
      assert.equal(element._computeLabelValue(
          {labels: {Verified: {approved: true, value: 1}}}, 'Verified'), '✓');
      assert.equal(element._computeLabelValue(
          {labels: {Verified: {value: 1}}}, 'Verified'), '+1');
      assert.equal(element._computeLabelValue(
          {labels: {Verified: {value: -1}}}, 'Verified'), '-1');
      assert.equal(element._computeLabelValue(
          {labels: {Verified: {approved: true}}}, 'Verified'), '✓');
      assert.equal(element._computeLabelValue(
          {labels: {Verified: {rejected: true}}}, 'Verified'), '✕');
    });

    test('no hidden columns', () => {
      element.visibleChangeTableColumns = [
        'Subject',
        'Status',
        'Owner',
        'Assignee',
        'Project',
        'Branch',
        'Updated',
        'Size',
      ];

      flushAsynchronousOperations();

      for (const column of element.columnNames) {
        const elementClass = '.' + column.toLowerCase();
        assert.isFalse(element.$$(elementClass).hidden);
      }
    });

    test('no hidden columns', () => {
      element.visibleChangeTableColumns = [
        'Subject',
        'Status',
        'Owner',
        'Assignee',
        'Project',
        'Branch',
        'Updated',
        'Size',
      ];

      flushAsynchronousOperations();

      for (const column of element.columnNames) {
        const elementClass = '.' + column.toLowerCase();
        assert.isFalse(element.$$(elementClass).hidden);
      }
    });

    test('project column hidden', () => {
      element.visibleChangeTableColumns = [
        'Subject',
        'Status',
        'Owner',
        'Assignee',
        'Branch',
        'Updated',
        'Size',
      ];

      flushAsynchronousOperations();

      for (const column of element.columnNames) {
        const elementClass = '.' + column.toLowerCase();
        if (column === 'Project') {
          assert.isTrue(element.$$(elementClass).hidden);
        } else {
          assert.isFalse(element.$$(elementClass).hidden);
        }
      }
    });

    test('random column does not exist', () => {
      element.visibleChangeTableColumns = [
        'Bad',
      ];

      flushAsynchronousOperations();
      const elementClass = '.bad';
      assert.isNotOk(element.$$(elementClass));
    });

    test('assignee only displayed if there is one', () => {
      element.change = {};
      flushAsynchronousOperations();
      assert.isNotOk(element.$$('.assignee gr-account-link'));
      assert.equal(element.$$('.assignee').textContent.trim(), '--');
      element.change = {
        assignee: {
          name: 'test',
        },
      };
      flushAsynchronousOperations();
      assert.isOk(element.$$('.assignee gr-account-link'));
    });

    test('_computeAccountStatusString', () => {
      assert.equal(element._computeAccountStatusString({}), '');
      assert.equal(element._computeAccountStatusString({status: 'Working'}),
          '(Working)');
    });

    test('TShirt sizing tooltip', () => {
      assert.equal(element._computeSizeTooltip({
        insertions: 'foo',
        deletions: 'bar',
      }), 'Size unknown');
      assert.equal(element._computeSizeTooltip({
        insertions: 0,
        deletions: 0,
      }), 'Size unknown');
      assert.equal(element._computeSizeTooltip({
        insertions: 1,
        deletions: 2,
      }), '+1, -2');
    });

    test('TShirt sizing', () => {
      assert.equal(element._computeChangeSize({
        insertions: 'foo',
        deletions: 'bar',
      }), null);
      assert.equal(element._computeChangeSize({
        insertions: 1,
        deletions: 1,
      }), 'XS');
      assert.equal(element._computeChangeSize({
        insertions: 9,
        deletions: 1,
      }), 'S');
      assert.equal(element._computeChangeSize({
        insertions: 10,
        deletions: 200,
      }), 'M');
      assert.equal(element._computeChangeSize({
        insertions: 99,
        deletions: 900,
      }), 'L');
      assert.equal(element._computeChangeSize({
        insertions: 99,
        deletions: 999,
      }), 'XL');
    });
  });
</script>
