blob: 3eb49ffcecb318784585e409b4050414ce97a602 [file]
// Copyright 2023 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
import '../src/CreditsItem.js';
import {assert} from 'chai';
import {html, render, type TemplateResult} from 'lit-html';
import type {CreditsItem, CreditsItemData} from '../src/CreditsItem.js';
import {nonNull} from './TestUtils.js';
async function createItem(text: TemplateResult): Promise<CreditsItem> {
const container = document.createElement('div');
render(text, container);
const el = nonNull(container.firstElementChild) as CreditsItem;
await new Promise<void>(resolve => requestAnimationFrame(() => resolve()));
return el;
}
describe('CreditsItem', () => {
it('is accessible', async () => {
const el = await createItem(
html`<devtools-cxx-debugging-credits-item></devtools-cxx-debugging-credits-item>`,
);
assert.isNotNull(el.shadowRoot);
});
it('can get and set data correctly', async () => {
const data: CreditsItemData = {
title: 'My awesome project',
homepage: 'https://www.example.com',
license: 'Do whatever you want!',
};
const el = await createItem(
html`<devtools-cxx-debugging-credits-item
.data=${data}
></devtools-cxx-debugging-credits-item>`,
);
assert.strictEqual(el.data, data);
el.data = {title: 'title', homepage: 'homepage', license: 'license'};
assert.strictEqual(el.data.title, 'title');
assert.strictEqual(el.data.homepage, 'homepage');
assert.strictEqual(el.data.license, 'license');
});
it('renders title and homepage correctly', async () => {
const data: CreditsItemData = {
title: 'My project',
homepage: 'https://www.example.com',
license: '3-BSD License',
};
const el = await createItem(
html`<devtools-cxx-debugging-credits-item
.data=${data}
></devtools-cxx-debugging-credits-item>`,
);
assert.deepEqual(
el.shadowRoot?.querySelector('.title')?.textContent,
data.title,
);
assert.deepEqual(
el.shadowRoot?.querySelector('a')?.getAttribute('href'),
data.homepage,
);
});
});