@ribajs/core
Version:
Core module of Riba.js
68 lines (56 loc) • 2.01 kB
text/typescript
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
});
});
});