| // Copyright 2019 The Chromium Authors. All rights reserved. |
| // 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 {MrUserLink} from './mr-user-link.js'; |
| |
| |
| let element; |
| let availabilityIcon; |
| let userLink; |
| let userText; |
| let availabilityText; |
| |
| function getElements() { |
| availabilityIcon = element.shadowRoot.querySelector( |
| '#availability-icon'); |
| userLink = element.shadowRoot.querySelector( |
| '#user-link'); |
| userText = element.shadowRoot.querySelector( |
| '#user-text'); |
| availabilityText = element.shadowRoot.querySelector( |
| '#availability-text'); |
| } |
| |
| describe('mr-user-link', () => { |
| beforeEach(() => { |
| element = document.createElement('mr-user-link'); |
| document.body.appendChild(element); |
| }); |
| |
| afterEach(() => { |
| document.body.removeChild(element); |
| }); |
| |
| it('initializes', () => { |
| assert.instanceOf(element, MrUserLink); |
| }); |
| |
| it('no link when no userId and displayName is null value', async () => { |
| element.userRef = {displayName: '----'}; |
| |
| await element.updateComplete; |
| getElements(); |
| |
| assert.isFalse(userText.hidden); |
| assert.equal(userText.textContent, '----'); |
| |
| assert.isTrue(availabilityIcon.hidden); |
| assert.isTrue(userLink.hidden); |
| assert.isTrue(availabilityText.hidden); |
| }); |
| |
| it('link when displayName', async () => { |
| element.userRef = {displayName: 'test@example.com'}; |
| |
| await element.updateComplete; |
| getElements(); |
| |
| assert.isFalse(userLink.hidden); |
| assert.equal(userLink.textContent.trim(), 'test@example.com'); |
| assert.isTrue(userLink.href.endsWith('/u/test@example.com')); |
| |
| assert.isTrue(availabilityIcon.hidden); |
| assert.isTrue(userText.hidden); |
| assert.isTrue(availabilityText.hidden); |
| }); |
| |
| it('link when userId', async () => { |
| element.userRef = {userId: '1234', displayName: 'test@example.com'}; |
| |
| await element.updateComplete; |
| getElements(); |
| |
| assert.isFalse(userLink.hidden); |
| assert.equal(userLink.textContent.trim(), 'test@example.com'); |
| assert.isTrue(userLink.href.endsWith('/u/1234')); |
| |
| assert.isTrue(availabilityIcon.hidden); |
| assert.isTrue(userText.hidden); |
| assert.isTrue(availabilityText.hidden); |
| }); |
| |
| it('show availability', async () => { |
| element.userRef = {userId: '1234', displayName: 'test@example.com'}; |
| element.referencedUsers = new Map( |
| [['test@example.com', {availability: 'foo'}]]); |
| element.showAvailabilityIcon = true; |
| |
| await element.updateComplete; |
| getElements(); |
| |
| assert.isFalse(availabilityIcon.hidden); |
| assert.equal(availabilityIcon.title, 'foo'); |
| |
| assert.isFalse(userLink.hidden); |
| assert.isTrue(userText.hidden); |
| assert.isTrue(availabilityText.hidden); |
| }); |
| |
| it('dont show availability', async () => { |
| element.userRef = {userId: '1234', displayName: 'test@example.com'}; |
| element.referencedUsers = new Map( |
| [['test@example.com', {availability: 'foo'}]]); |
| |
| await element.updateComplete; |
| getElements(); |
| |
| assert.isTrue(availabilityIcon.hidden); |
| |
| assert.isFalse(userLink.hidden); |
| assert.isTrue(userText.hidden); |
| assert.isTrue(availabilityText.hidden); |
| }); |
| |
| it('show availability text', async () => { |
| element.userRef = {userId: '1234', displayName: 'test@example.com'}; |
| element.referencedUsers = new Map( |
| [['test@example.com', {availability: 'foo'}]]); |
| element.showAvailabilityText = true; |
| |
| await element.updateComplete; |
| getElements(); |
| |
| assert.isFalse(availabilityText.hidden); |
| assert.equal(availabilityText.title, 'foo'); |
| assert.equal(availabilityText.textContent, 'foo'); |
| |
| assert.isTrue(availabilityIcon.hidden); |
| assert.isFalse(userLink.hidden); |
| assert.isTrue(userText.hidden); |
| }); |
| |
| it('show availability user never visited', async () => { |
| element.userRef = {userId: '1234', displayName: 'test@example.com'}; |
| element.referencedUsers = new Map( |
| [['test@example.com', {last_visit_timestamp: undefined}]]); |
| |
| await element.updateComplete; |
| getElements(); |
| |
| assert.isTrue(availabilityIcon.classList.contains("inline-icon-unseen")); |
| }); |
| |
| it('show availability user visited', async () => { |
| element.userRef = {userId: '1234', displayName: 'test@example.com'}; |
| element.referencedUsers = new Map( |
| [['test@example.com', {last_visit_timestamp: "35"}]]); |
| |
| await element.updateComplete; |
| getElements(); |
| |
| assert.isTrue(availabilityIcon.classList.contains("inline-icon")); |
| assert.isFalse(availabilityIcon.classList.contains("inline-icon-unseen")); |
| }); |
| }); |