blob: 7d204d9ff0bcefe28aa98f70467d1c0a444bdc5b [file] [log] [blame]
/**
* @license
* Copyright 2017 Google LLC
* SPDX-License-Identifier: Apache-2.0
*/
import '../../../test/common-test-setup';
import {fixture, html, assert} from '@open-wc/testing';
import './gr-user-header';
import {GrUserHeader} from './gr-user-header';
import {stubRestApi, waitEventLoop} from '../../../test/test-utils';
import {AccountId, EmailAddress, Timestamp} from '../../../types/common';
suite('gr-user-header tests', () => {
let element: GrUserHeader;
setup(async () => {
element = await fixture(html`<gr-user-header></gr-user-header>`);
});
test('render', () => {
assert.shadowDom.equal(
element,
/* HTML */ `
<gr-avatar aria-label="Account avatar" hidden=""> </gr-avatar>
<div class="info">
<h1 class="heading-1"></h1>
<hr />
<div class="hide status">
<span> Status: </span>
</div>
<div>
<span> Email: </span>
<a href="mailto:"> </a>
</div>
<div>
<span> Joined: </span>
<gr-date-formatter datestr=""> </gr-date-formatter>
</div>
<gr-endpoint-decorator name="user-header">
<gr-endpoint-param name="accountDetails"> </gr-endpoint-param>
<gr-endpoint-param name="loggedIn"> </gr-endpoint-param>
</gr-endpoint-decorator>
</div>
<div class="info">
<div class="dashboardLink hide">
<a href=""> View dashboard </a>
</div>
</div>
`
);
});
test('loads and clears account info', async () => {
stubRestApi('getAccountDetails').returns(
Promise.resolve({
name: 'foo',
email: 'bar' as EmailAddress,
status: 'OOO',
registered_on: '2015-03-12 18:32:08.000000000' as Timestamp,
})
);
element.userId = 10 as AccountId;
await waitEventLoop();
assert.isOk(element._accountDetails);
assert.isOk(element._status);
element.userId = undefined;
await waitEventLoop();
assert.isUndefined(element._accountDetails);
assert.equal(element._status, '');
});
test('_computeDashboardLinkClass', () => {
assert.include(element._computeDashboardLinkClass(false, false), 'hide');
assert.include(element._computeDashboardLinkClass(true, false), 'hide');
assert.include(element._computeDashboardLinkClass(false, true), 'hide');
assert.notInclude(element._computeDashboardLinkClass(true, true), 'hide');
});
});