mirror of
https://github.com/pyscript/pyscript.git
synced 2025-12-19 10:17:23 -05:00
* Apply prettier to css, js, html, md, ts, and yml As a followup I will add prettier to the .pre-commit config. This patch is 100% generated by prettier. I used a forked version of prettier that understands the py-script tag. See https://github.com/hoodmane/pyscript-prettier-precommit for more info. * Apply old pre-commit * Revert some problems * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Revert some changes * More changes * Fix pre-commit * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
124 lines
4.8 KiB
TypeScript
124 lines
4.8 KiB
TypeScript
import { expect, it, jest, describe, afterEach } from '@jest/globals';
|
|
import { _createAlertBanner, UserError, FetchError, ErrorCode } from '../../src/exceptions';
|
|
|
|
describe('Test _createAlertBanner', () => {
|
|
afterEach(() => {
|
|
// Ensure we always have a clean body
|
|
document.body.innerHTML = `<div>Hello World</div>`;
|
|
});
|
|
|
|
it("error level shouldn't contain close button", async () => {
|
|
_createAlertBanner('Something went wrong!', 'error');
|
|
|
|
const banner = document.getElementsByClassName('alert-banner');
|
|
const closeButton = document.getElementById('alert-close-button');
|
|
expect(banner.length).toBe(1);
|
|
expect(banner[0].innerHTML).toBe('Something went wrong!');
|
|
expect(closeButton).toBeNull();
|
|
});
|
|
|
|
it('warning level should contain close button', async () => {
|
|
_createAlertBanner('This is a warning', 'warning');
|
|
|
|
const banner = document.getElementsByClassName('alert-banner');
|
|
const closeButton = document.getElementById('alert-close-button');
|
|
expect(banner.length).toBe(1);
|
|
expect(banner[0].innerHTML).toContain('This is a warning');
|
|
expect(closeButton).not.toBeNull();
|
|
});
|
|
|
|
it('error level banner should log to console', async () => {
|
|
const logSpy = jest.spyOn(console, 'error');
|
|
|
|
_createAlertBanner('Something went wrong!');
|
|
|
|
expect(logSpy).toHaveBeenCalledWith('Something went wrong!');
|
|
});
|
|
|
|
it('warning level banner should log to console', async () => {
|
|
const logSpy = jest.spyOn(console, 'warn');
|
|
|
|
_createAlertBanner('This warning', 'warning');
|
|
|
|
expect(logSpy).toHaveBeenCalledWith('This warning');
|
|
});
|
|
|
|
it('close button should remove element from page', async () => {
|
|
let banner = document.getElementsByClassName('alert-banner');
|
|
expect(banner.length).toBe(0);
|
|
|
|
_createAlertBanner('Warning!', 'warning');
|
|
|
|
// Just a sanity check
|
|
banner = document.getElementsByClassName('alert-banner');
|
|
expect(banner.length).toBe(1);
|
|
|
|
const closeButton = document.getElementById('alert-close-button');
|
|
if (closeButton) {
|
|
closeButton.click();
|
|
// Confirm that clicking the close button, removes the element
|
|
banner = document.getElementsByClassName('alert-banner');
|
|
expect(banner.length).toBe(0);
|
|
} else {
|
|
fail('Unable to find close button on the page, but should exist');
|
|
}
|
|
});
|
|
|
|
it("toggling logging off on error alert shouldn't log to console", async () => {
|
|
const errorLogSpy = jest.spyOn(console, 'error');
|
|
|
|
_createAlertBanner('Test error', 'error', 'text', false);
|
|
expect(errorLogSpy).not.toHaveBeenCalledWith('Test error');
|
|
});
|
|
|
|
it("toggling logging off on warning alert shouldn't log to console", async () => {
|
|
const warnLogSpy = jest.spyOn(console, 'warn');
|
|
_createAlertBanner('Test warning', 'warning', 'text', false);
|
|
expect(warnLogSpy).not.toHaveBeenCalledWith('Test warning');
|
|
});
|
|
|
|
it('_createAlertbanner messageType text writes message to content', async () => {
|
|
let banner = document.getElementsByClassName('alert-banner');
|
|
expect(banner.length).toBe(0);
|
|
|
|
const message = '<p>Test message</p>';
|
|
_createAlertBanner(message, 'error', 'text');
|
|
banner = document.getElementsByClassName('alert-banner');
|
|
|
|
expect(banner.length).toBe(1);
|
|
expect(banner[0].innerHTML).toBe('<p>Test message</p>');
|
|
expect(banner[0].textContent).toBe(message);
|
|
});
|
|
|
|
it('_createAlertbanner messageType html writes message to innerHTML', async () => {
|
|
let banner = document.getElementsByClassName('alert-banner');
|
|
expect(banner.length).toBe(0);
|
|
|
|
const message = '<p>Test message</p>';
|
|
_createAlertBanner(message, 'error', 'html');
|
|
banner = document.getElementsByClassName('alert-banner');
|
|
|
|
expect(banner.length).toBe(1);
|
|
expect(banner[0].innerHTML).toBe(message);
|
|
expect(banner[0].textContent).toBe('Test message');
|
|
});
|
|
});
|
|
|
|
describe('Test Exceptions', () => {
|
|
it('UserError contains errorCode and shows in message', async () => {
|
|
const errorCode = ErrorCode.BAD_CONFIG;
|
|
const message = 'Test error';
|
|
const userError = new UserError(ErrorCode.BAD_CONFIG, message);
|
|
expect(userError.errorCode).toBe(errorCode);
|
|
expect(userError.message).toBe(`(${errorCode}): ${message}`);
|
|
});
|
|
|
|
it('FetchError contains errorCode and shows in message', async () => {
|
|
const errorCode = ErrorCode.FETCH_NOT_FOUND_ERROR;
|
|
const message = 'Test error';
|
|
const fetchError = new FetchError(errorCode, message);
|
|
expect(fetchError.errorCode).toBe(errorCode);
|
|
expect(fetchError.message).toBe(`(${errorCode}): ${message}`);
|
|
});
|
|
});
|