/**
 * @license
 * Copyright 2017 Google LLC
 * SPDX-License-Identifier: Apache-2.0
 */
import '../../../test/common-test-setup';
import {GrReviewerUpdatesParser} from './gr-reviewer-updates-parser';
import {parseDate} from '../../../utils/date-util';
import {assert} from '@open-wc/testing';

suite('gr-reviewer-updates-parser tests', () => {
  test('ignores changes without messages', () => {
    const change = {};
    sinon.stub(
        GrReviewerUpdatesParser.prototype, '_filterRemovedMessages');
    sinon.stub(
        GrReviewerUpdatesParser.prototype, '_groupUpdates');
    sinon.stub(
        GrReviewerUpdatesParser.prototype, '_formatUpdates');
    assert.strictEqual(GrReviewerUpdatesParser.parse(change), change);
    assert.isFalse(
        GrReviewerUpdatesParser.prototype._filterRemovedMessages.called);
    assert.isFalse(
        GrReviewerUpdatesParser.prototype._groupUpdates.called);
    assert.isFalse(
        GrReviewerUpdatesParser.prototype._formatUpdates.called);
  });

  test('ignores changes without reviewer updates', () => {
    const change = {
      messages: [],
    };
    sinon.stub(
        GrReviewerUpdatesParser.prototype, '_filterRemovedMessages');
    sinon.stub(
        GrReviewerUpdatesParser.prototype, '_groupUpdates');
    sinon.stub(
        GrReviewerUpdatesParser.prototype, '_formatUpdates');
    assert.strictEqual(GrReviewerUpdatesParser.parse(change), change);
    assert.isFalse(
        GrReviewerUpdatesParser.prototype._filterRemovedMessages.called);
    assert.isFalse(
        GrReviewerUpdatesParser.prototype._groupUpdates.called);
    assert.isFalse(
        GrReviewerUpdatesParser.prototype._formatUpdates.called);
  });

  test('ignores changes with empty reviewer updates', () => {
    const change = {
      messages: [],
      reviewer_updates: [],
    };
    sinon.stub(
        GrReviewerUpdatesParser.prototype, '_filterRemovedMessages');
    sinon.stub(
        GrReviewerUpdatesParser.prototype, '_groupUpdates');
    sinon.stub(
        GrReviewerUpdatesParser.prototype, '_formatUpdates');
    assert.strictEqual(GrReviewerUpdatesParser.parse(change), change);
    assert.isFalse(
        GrReviewerUpdatesParser.prototype._filterRemovedMessages.called);
    assert.isFalse(
        GrReviewerUpdatesParser.prototype._groupUpdates.called);
    assert.isFalse(
        GrReviewerUpdatesParser.prototype._formatUpdates.called);
  });

  test('filter removed messages', () => {
    const change = {
      messages: [
        {
          message: 'msg1',
          tag: 'autogenerated:gerrit:deleteReviewer',
        },
        {
          message: 'msg2',
          tag: 'foo',
        },
      ],
    };
    const instance = new GrReviewerUpdatesParser(change);
    instance._filterRemovedMessages();
    assert.deepEqual(instance.result, {
      messages: [{
        message: 'msg2',
        tag: 'foo',
      }],
    });
  });

  test('group reviewer updates', () => {
    const reviewer1 = {_account_id: 1};
    const reviewer2 = {_account_id: 2};
    const date1 = '2017-01-26 12:11:50.000000000';
    const date2 = '2017-01-26 12:11:55.000000000'; // Within threshold.
    const date3 = '2017-01-26 12:33:50.000000000';
    const date4 = '2017-01-26 12:44:50.000000000';
    const makeItem = function(state, reviewer, date, author) {
      return {
        reviewer,
        updated: date || date1,
        updated_by: author || reviewer1,
        state,
      };
    };
    let change = {
      reviewer_updates: [
        makeItem('REVIEWER', reviewer1), // New group.
        makeItem('CC', reviewer2), // Appended.
        makeItem('REVIEWER', reviewer2, date2), // Overrides previous one.

        makeItem('CC', reviewer1, date2, reviewer2), // New group.

        makeItem('REMOVED', reviewer2, date3), // Group has no state change.
        makeItem('REVIEWER', reviewer2, date3),

        makeItem('CC', reviewer1, date4), // No change, removed.
        makeItem('REVIEWER', reviewer1, date4), // Forms new group
        makeItem('REMOVED', reviewer2, date4), // Should be grouped.
      ],
    };

    const instance = new GrReviewerUpdatesParser(change);
    instance._groupUpdates();
    change = instance.result;

    assert.equal(change.reviewer_updates.length, 3);
    assert.equal(change.reviewer_updates[0].updates.length, 2);
    assert.equal(change.reviewer_updates[1].updates.length, 1);
    assert.equal(change.reviewer_updates[2].updates.length, 2);

    assert.equal(change.reviewer_updates[0].date, date1);
    assert.deepEqual(change.reviewer_updates[0].author, reviewer1);
    assert.deepEqual(change.reviewer_updates[0].updates, [
      {
        reviewer: reviewer1,
        state: 'REVIEWER',
      },
      {
        reviewer: reviewer2,
        state: 'REVIEWER',
      },
    ]);

    assert.equal(change.reviewer_updates[1].date, date2);
    assert.deepEqual(change.reviewer_updates[1].author, reviewer2);
    assert.deepEqual(change.reviewer_updates[1].updates, [
      {
        reviewer: reviewer1,
        state: 'CC',
        prev_state: 'REVIEWER',
      },
    ]);

    assert.equal(change.reviewer_updates[2].date, date4);
    assert.deepEqual(change.reviewer_updates[2].author, reviewer1);
    assert.deepEqual(change.reviewer_updates[2].updates, [
      {
        reviewer: reviewer1,
        prev_state: 'CC',
        state: 'REVIEWER',
      },
      {
        reviewer: reviewer2,
        prev_state: 'REVIEWER',
        state: 'REMOVED',
      },
    ]);
  });

  test('format reviewer updates', () => {
    const reviewer1 = {_account_id: 1};
    const reviewer2 = {_account_id: 2};
    const makeItem = function(prev, state, reviewer) {
      return {
        reviewer: reviewer || reviewer1,
        prev_state: prev,
        state,
      };
    };
    const makeUpdate = function(items) {
      return {
        author: reviewer1,
        updated: '',
        updates: items,
      };
    };
    const change = {
      reviewer_updates: [
        makeUpdate([
          makeItem(undefined, 'CC'),
          makeItem(undefined, 'CC', reviewer2),
        ]),
        makeUpdate([
          makeItem('CC', 'REVIEWER'),
          makeItem('REVIEWER', 'REMOVED'),
          makeItem('REMOVED', 'REVIEWER'),
          makeItem(undefined, 'REVIEWER', reviewer2),
        ]),
      ],
    };

    const instance = new GrReviewerUpdatesParser(change);
    instance._formatUpdates();

    assert.equal(change.reviewer_updates.length, 2);
    assert.equal(change.reviewer_updates[0].updates.length, 1);
    assert.equal(change.reviewer_updates[1].updates.length, 3);

    let items = change.reviewer_updates[0].updates;
    assert.equal(items[0].message, 'Added to cc: ');
    assert.deepEqual(items[0].reviewers, [reviewer1, reviewer2]);

    items = change.reviewer_updates[1].updates;
    assert.equal(items[0].message, 'Moved from cc to reviewer: ');
    assert.deepEqual(items[0].reviewers, [reviewer1]);
    assert.equal(items[1].message, 'Removed from reviewer: ');
    assert.deepEqual(items[1].reviewers, [reviewer1]);
    assert.equal(items[2].message, 'Added to reviewer: ');
    assert.deepEqual(items[2].reviewers, [reviewer1, reviewer2]);
  });

  test('_advanceUpdates', () => {
    const T0 = parseDate('2017-02-17 19:04:18.000000000').getTime();
    const tplus = delta => new Date(T0 + delta)
        .toISOString()
        .replace('T', ' ')
        .replace('Z', '000000');
    const change = {
      reviewer_updates: [{
        date: tplus(0),
        type: 'REVIEWER_UPDATE',
        updates: [{
          message: 'same time update',
        }],
      }, {
        date: tplus(200),
        type: 'REVIEWER_UPDATE',
        updates: [{
          message: 'update within threshold',
        }],
      }, {
        date: tplus(600),
        type: 'REVIEWER_UPDATE',
        updates: [{
          message: 'update between messages',
        }],
      }, {
        date: tplus(1000),
        type: 'REVIEWER_UPDATE',
        updates: [{
          message: 'late update',
        }],
      }],
      messages: [{
        id: '6734489eb9d642de28dbf2bcf9bda875923800d8',
        date: tplus(0),
        message: 'Uploaded patch set 1.',
      }, {
        id: '6734489eb9d642de28dbf2bcf9bda875923800d8',
        date: tplus(800),
        message: 'Uploaded patch set 2.',
      }],
    };
    const instance = new GrReviewerUpdatesParser(change);
    instance._advanceUpdates();
    const updates = instance.result.reviewer_updates;
    assert.isBelow(parseDate(updates[0].date).getTime(), T0);
    assert.isBelow(parseDate(updates[1].date).getTime(), T0);
    assert.equal(updates[2].date, tplus(100));
    assert.equal(updates[3].date, tplus(500));
  });
});

