@ribajs/core
Version:
Core module of Riba.js
60 lines (45 loc) • 1.66 kB
text/typescript
import { Riba } from "../riba.js";
import { StyleStarBinder } from "./style-css-property.binder.js";
import { dotAdapter } from "../adapters/dot.adapter.js";
const riba = new Riba();
riba.module.adapter.register(dotAdapter);
riba.module.binder.register(StyleStarBinder);
describe("riba.binders", () => {
let element: HTMLDivElement;
let fragment: DocumentFragment;
let model: any = {};
beforeEach(() => {
fragment = document.createDocumentFragment();
element = document.createElement("div");
fragment.appendChild(element);
model = {
style: {
paddingTop: "100px",
backgroundColor: "",
},
};
});
describe("css-*", () => {
it("Adds / removes a style property to the element", () => {
element.className = "foobar";
expect(element.getAttribute("style")).toBeNull();
element.setAttribute("rv-style-padding-top", "style.paddingTop");
element.setAttribute(
"rv-style-background-color",
"style.backgroundColor"
);
riba.bind(fragment, model);
expect(element.getAttribute("style")).toEqual("padding-top: 100px;");
model.style.paddingTop = "0px";
expect(element.getAttribute("style")).toEqual("padding-top: 0px;");
model.style.backgroundColor = "black";
expect(element.getAttribute("style")).toEqual(
"padding-top: 0px; background-color: black;"
);
model.style.paddingTop = undefined;
expect(element.getAttribute("style")).toEqual("background-color: black;");
model.style.backgroundColor = undefined;
expect(element.getAttribute("style")).toEqual("");
});
});
});