// Copyright 2019 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

import {assert} from 'chai';
import {MrAutocomplete} from './mr-autocomplete.js';

let element;

describe('mr-autocomplete', () => {
  beforeEach(() => {
    element = document.createElement('mr-autocomplete');
    document.body.appendChild(element);
  });

  afterEach(() => {
    document.body.removeChild(element);
  });

  it('initializes', () => {
    assert.instanceOf(element, MrAutocomplete);
  });

  it('sets properties based on vocabularies', async () => {
    assert.deepEqual(element.strings, []);
    assert.deepEqual(element.docDict, {});

    element.vocabularies = {
      'project': {
        'strings': ['chromium', 'v8'],
        'docDict': {'chromium': 'move the web forward'},
      },
    };

    element.vocabularyName = 'project';

    await element.updateComplete;

    assert.deepEqual(element.strings, ['chromium', 'v8']);
    assert.deepEqual(element.docDict, {'chromium': 'move the web forward'});
  });

  it('_setupProjectVocabulary', () => {
    assert.deepEqual(element._setupProjectVocabulary({}), {strings: []});

    assert.deepEqual(element._setupProjectVocabulary({
      ownerOf: ['chromium'],
      memberOf: ['skia'],
      contributorTo: ['v8'],
    }), {strings: ['chromium', 'skia', 'v8']});
  });

  it('_setupMemberVocabulary', () => {
    assert.deepEqual(element._setupMemberVocabulary({}), {strings: []});

    assert.deepEqual(element._setupMemberVocabulary({
      userRefs: [
        {displayName: 'group@example.com', userId: '100'},
        {displayName: 'test@example.com', userId: '123'},
        {displayName: 'test2@example.com', userId: '543'},
      ],
      groupRefs: [
        {displayName: 'group@example.com', userId: '100'},
      ],
    }), {strings:
      ['group@example.com', 'test@example.com', 'test2@example.com'],
    });
  });

  it('_setupOwnerVocabulary', () => {
    assert.deepEqual(element._setupOwnerVocabulary({}), {strings: []});

    assert.deepEqual(element._setupOwnerVocabulary({
      userRefs: [
        {displayName: 'group@example.com', userId: '100'},
        {displayName: 'test@example.com', userId: '123'},
        {displayName: 'test2@example.com', userId: '543'},
      ],
      groupRefs: [
        {displayName: 'group@example.com', userId: '100'},
      ],
    }), {strings:
      ['test@example.com', 'test2@example.com'],
    });
  });
});
