1
0
Fork 0
freesewing/packages/core/tests/attributes.test.mjs

87 lines
2.5 KiB
JavaScript
Raw Normal View History

2022-08-25 11:47:54 +02:00
import chai from "chai"
import { Point } from "./dist/index.mjs"
const expect = chai.expect
const newAttr = () => new Point(0, 0).attributes;
const a = newAttr();
describe('Attributes', () => {
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');
});
it("Should return false when getting an unset attribute", () => {
let a = newAttr();
expect(a.get("test")).to.equal(false);
});
it("Should render attributes correctly", () => {
let a = newAttr()
.set("class", "test")
.add("class", "render")
.set("transform", "scale(1)");
expect(a.render()).to.equal(' class="test render" transform="scale(1)"');
});
it("Should render attributes with given prefix only", () => {
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"');
});
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);
});
2022-07-23 17:00:48 +02: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");
});
})
2022-07-23 17:00:48 +02:00