All Downloads are FREE. Search and download functionalities are using the official Maven repository.

package.test.unit.dataset.ts Maven / Gradle / Ivy

Go to download

A virtual DOM library with focus on simplicity, modularity, powerful features and performance.

The newest version!
import { assert } from "chai";

import { datasetModule, init, h } from "../../src/index";

const patch = init([datasetModule]);

describe("dataset", function () {
  before(function () {
    if (!Object.hasOwnProperty.call(HTMLElement.prototype, "dataset")) {
      this.skip();
    }
  });

  let elm: any, vnode0: any;
  beforeEach(function () {
    elm = document.createElement("div");
    vnode0 = elm;
  });
  it("is set on initial element creation", function () {
    elm = patch(vnode0, h("div", { dataset: { foo: "foo" } })).elm;
    assert.strictEqual(elm.dataset.foo, "foo");
  });
  it("updates dataset", function () {
    const vnode1 = h("i", { dataset: { foo: "foo", bar: "bar" } });
    const vnode2 = h("i", { dataset: { baz: "baz" } });
    elm = patch(vnode0, vnode1).elm;
    assert.strictEqual(elm.dataset.foo, "foo");
    assert.strictEqual(elm.dataset.bar, "bar");
    elm = patch(vnode1, vnode2).elm;
    assert.strictEqual(elm.dataset.baz, "baz");
    assert.strictEqual(elm.dataset.foo, undefined);
  });
  it("can be memoized", function () {
    const cachedDataset = { foo: "foo", bar: "bar" };
    const vnode1 = h("i", { dataset: cachedDataset });
    const vnode2 = h("i", { dataset: cachedDataset });
    elm = patch(vnode0, vnode1).elm;
    assert.strictEqual(elm.dataset.foo, "foo");
    assert.strictEqual(elm.dataset.bar, "bar");
    elm = patch(vnode1, vnode2).elm;
    assert.strictEqual(elm.dataset.foo, "foo");
    assert.strictEqual(elm.dataset.bar, "bar");
  });
  it("handles string conversions", function () {
    const vnode1 = h("i", {
      dataset: {
        empty: "",
        dash: "-",
        dashed: "foo-bar",
        camel: "fooBar",
        integer: 0 as any,
        float: 0.1 as any,
      },
    });
    elm = patch(vnode0, vnode1).elm;

    assert.strictEqual(elm.dataset.empty, "");
    assert.strictEqual(elm.dataset.dash, "-");
    assert.strictEqual(elm.dataset.dashed, "foo-bar");
    assert.strictEqual(elm.dataset.camel, "fooBar");
    assert.strictEqual(elm.dataset.integer, "0");
    assert.strictEqual(elm.dataset.float, "0.1");
  });
});




© 2015 - 2025 Weber Informatics LLC | Privacy Policy