Files
pyscript/pyscriptjs/tests/unit/pybutton.test.ts
Madhur Tandon 515858f313 implement proposal for fetching paths and retaining structure of dirs and packages (#914)
* implement proposal

* update docs and replace py-env

* more docs

* suggested proposal

* update docs

* add to_file parameter

* remove comment from Makefile

* suggested improvements

* move tests from basic to py_config

* retain leading slash from the first path
2022-11-08 17:26:45 +05:30

69 lines
2.2 KiB
TypeScript

import type { Runtime } from "../../src/runtime"
import { FakeRuntime } from "./fakeruntime"
import { make_PyButton } from '../../src/components/pybutton';
import { ensureUniqueId } from '../../src/utils';
const runtime: Runtime = new FakeRuntime();
const PyButton = make_PyButton(runtime);
customElements.define('py-button', PyButton);
describe('PyButton', () => {
let instance;
beforeEach(() => {
instance = new PyButton();
});
it('should get the Button to just instantiate', async () => {
expect(instance).toBeInstanceOf(PyButton);
});
it('onCallback gets or sets a new id', async () => {
expect(instance.id).toBe('');
instance.connectedCallback();
const instanceId = instance.id;
// id should be similar to py-4850c8c3-d70d-d9e0-03c1-3cfeb0bcec0d-container
expect(instanceId).toMatch(/py-(\w+-){1,5}container/);
// ensureUniqueId doesn't change the ID
ensureUniqueId(instance);
expect(instance.id).toEqual(instanceId);
});
it('onCallback updates on_click code and function name ', async () => {
expect(instance.code).toBe(undefined);
expect(instance.innerHTML).toBe('');
instance.innerHTML = '\ndef on_click(e):\n';
instance.connectedCallback();
expect(instance.code).toMatch(/def\son_click_py_(\w+)\(e\)/);
expect(instance.innerHTML).toContain('<button class="py-button"');
});
it('onCallback updates on_focus code and function name', async () => {
expect(instance.code).toBe(undefined);
expect(instance.innerHTML).toBe('');
instance.innerHTML = '\ndef on_focus(e):\n';
instance.connectedCallback();
expect(instance.code).toMatch(/def\son_focus_py_(\w+)\(e\)/);
expect(instance.innerHTML).toContain('<button class="py-button"');
});
it('onCallback sets mount_name based on id', async () => {
expect(instance.id).toBe('');
expect(instance.mount_name).toBe(undefined);
instance.connectedCallback();
const instanceId = instance.id;
expect(instanceId).toMatch(/py-(\w+-){1,5}container/);
expect(instance.mount_name).toBe(instanceId.replace('-container', '').split('-').join('_'));
});
});