UNPKG

@ribajs/core

Version:

Core module of Riba.js

68 lines (56 loc) 2.01 kB
import { Riba } from "../riba.js"; import { dotAdapter } from "../adapters/dot.adapter.js"; import { OnEventBinder } from "./on-event.binder.js"; import { ValueBinder } from "./value.binder.js"; const riba = new Riba(); riba.module.adapter.register(dotAdapter); riba.module.binder.register(OnEventBinder); riba.module.binder.register(ValueBinder); describe("riba.binders", () => { let element: HTMLInputElement; let model: any = {}; const blurAll = () => { const tmp = document.createElement("input"); document.body.appendChild(tmp); tmp.focus(); document.body.removeChild(tmp); }; beforeEach(() => { element = document.createElement("input"); element.setAttribute("type", "text"); document.body.appendChild(element); model = {}; }); describe("on-*", () => { it("on-click: Watch's the click event", () => { element.className = "foobar remove-me"; model.onClick = vi.fn(); element.setAttribute("rv-on-click", "onClick"); riba.bind(document.body, model); // Simulates the click element.click(); expect(model.onClick).toHaveBeenCalled(); }); it("on-change: Watch's the change event", () => { element.className = "foobar remove-me"; model.onChange = vi.fn(); model.onFocus = vi.fn(); model.onFocusout = vi.fn(); model.value = "test"; element.setAttribute("rv-on-change", "onChange"); element.setAttribute("rv-on-focus", "onFocus"); element.setAttribute("rv-on-blur", "onFocusout"); element.setAttribute("rv-value", "value"); riba.bind(document.body, model); // Trigger the focus event element.focus(); // Trigger the change event model.value = "this should trigger the change event!"; // Focus out all focused elements blurAll(); expect(model.onFocus).toHaveBeenCalled(); expect(model.onFocusout).toHaveBeenCalled(); // expect(model.onChange).toHaveBeenCalled(); TODO FIXME }); }); });