2022-08-25 11:47:54 +02:00
|
|
|
import chai from "chai"
|
|
|
|
import { Point } from "./dist/index.mjs"
|
|
|
|
|
|
|
|
const expect = chai.expect
|
2018-08-11 19:17:39 +02:00
|
|
|
|
2021-11-21 17:18:10 +01:00
|
|
|
const newAttr = () => new Point(0, 0).attributes;
|
|
|
|
|
|
|
|
const a = newAttr();
|
|
|
|
it("Should set an attribute", () => {
|
|
|
|
a.set('hold', 'me')
|
|
|
|
expect(a.get("hold")).to.equal('me');
|
|
|
|
});
|
|
|
|
|
|
|
|
it("Should remove an attribute", () => {
|
|
|
|
a.remove('hold')
|
|
|
|
expect(a.get("hold")).to.equal(false);
|
|
|
|
});
|
|
|
|
|
|
|
|
it("Should only set an unset attribute", () => {
|
|
|
|
a.setIfUnset('hold', 'me')
|
|
|
|
expect(a.get("hold")).to.equal('me');
|
|
|
|
a.setIfUnset('hold', 'thatDudeOverThere')
|
|
|
|
expect(a.get("hold")).to.equal('me');
|
|
|
|
});
|
2018-08-11 19:17:39 +02:00
|
|
|
|
2018-08-12 12:37:30 +02:00
|
|
|
it("Should return false when getting an unset attribute", () => {
|
2018-08-11 19:17:39 +02:00
|
|
|
let a = newAttr();
|
|
|
|
expect(a.get("test")).to.equal(false);
|
|
|
|
});
|
|
|
|
|
2018-08-12 12:37:30 +02:00
|
|
|
it("Should render attributes correctly", () => {
|
2018-08-11 19:17:39 +02:00
|
|
|
let a = newAttr()
|
|
|
|
.set("class", "test")
|
|
|
|
.add("class", "render")
|
|
|
|
.set("transform", "scale(1)");
|
|
|
|
expect(a.render()).to.equal(' class="test render" transform="scale(1)"');
|
|
|
|
});
|
|
|
|
|
2018-08-12 12:37:30 +02:00
|
|
|
it("Should render attributes with given prefix only", () => {
|
2018-08-11 19:17:39 +02:00
|
|
|
let a = newAttr()
|
|
|
|
.set("class", "test")
|
|
|
|
.add("class", "render")
|
|
|
|
.add("data-text", "foo")
|
|
|
|
.add("data-text", "bar")
|
|
|
|
.add("data-mode", "test")
|
|
|
|
.set("transform", "scale(1)");
|
|
|
|
expect(a.renderIfPrefixIs("data-")).to.equal(' text="foo bar" mode="test"');
|
|
|
|
});
|
2018-09-06 12:02:43 +02:00
|
|
|
|
|
|
|
it("Should return attributes as array", () => {
|
|
|
|
let a = newAttr()
|
|
|
|
.set("class", "test")
|
|
|
|
.add("class", "render");
|
|
|
|
expect(JSON.stringify(a.getAsArray("class"))).to.equal(
|
|
|
|
JSON.stringify(["test", "render"])
|
|
|
|
);
|
|
|
|
expect(a.getAsArray("nope")).to.equal(false);
|
|
|
|
});
|
2018-12-09 14:17:46 +01:00
|
|
|
|
|
|
|
it("Should render attributes as CSS", () => {
|
|
|
|
let a = newAttr()
|
|
|
|
.set("line-height", 1.2)
|
|
|
|
.add("border", "1px solid red");
|
|
|
|
expect(a.renderAsCss()).to.equal(" line-height:1.2; border:1px solid red;");
|
|
|
|
});
|
2022-07-23 17:00:48 +02:00
|
|
|
|
|
|
|
it("Should return attributes as props and filter a prefix", () => {
|
|
|
|
const a = newAttr()
|
|
|
|
.set("line-height", 1.2)
|
|
|
|
.add("border", "1px solid red")
|
|
|
|
.set("data-text", "This is a test")
|
|
|
|
.set("data-text-class", "center");
|
|
|
|
const props = a.asPropsIfPrefixIs('data-')
|
|
|
|
expect(props.text).to.equal("This is a test");
|
|
|
|
expect(props['text-class']).to.equal("center");
|
|
|
|
});
|
|
|
|
|
|
|
|
it("Should return attributes as props and handle special class case", () => {
|
|
|
|
const a = newAttr().set("class", "fabric");
|
|
|
|
const props = a.asPropsIfPrefixIs('')
|
|
|
|
expect(props.className).to.equal("fabric");
|
|
|
|
});
|
|
|
|
|