deno.land / x / solid_signals@solid-signals@1.3.7 / src / signals / composable / createObject / createObject.test.ts
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120import { createRoot } from "solid-js";import { suite } from "uvu";import * as assert from "uvu/assert";import createHistory from "../createHistory";import createObject from "./createObject";
const test = suite("createObject");
test("Creates object signal", () => { createRoot((dispose) => { const [object, setObject] = createObject({ a: "a" });
assert.equal(object(), { a: "a" });
dispose(); });});
test("Preserve Solid setter", () => { createRoot((dispose) => { const [object, setObject] = createObject({ a: "a" });
setObject({ a: "a1" }); assert.equal(object(), { a: "a1" });
setObject(({ a }) => ({ a: `${a}2`, })); assert.equal(object(), { a: "a12" });
dispose(); });});
test("update: Shallow merges state with updates", () => { createRoot((dispose) => { const [object, setObject] = createObject({ a: "a", b: "b" });
const res = setObject.update({ a: "a1", }); assert.equal(object(), { a: "a1", b: "b" }); // Returns new state assert.is(res, object());
setObject.update({ b: "b1", }); assert.equal(object(), { a: "a1", b: "b1" });
setObject.update({ a: "a2", b: "b2", }); assert.equal(object(), { a: "a2", b: "b2" });
setObject.update(({ a }) => ({ a: `${a}3` })); assert.equal(object(), { a: "a23", b: "b2" });
dispose(); });});
test("Extends other signals (createHistory)", () => { createRoot((dispose) => { const [object, setObject] = createObject.wrap(createHistory({ a: "a" }));
setObject.update({ a: "a1" }); setObject.update({ a: "a2" }); setObject.update({ a: "a3" }); assert.equal(object(), { a: "a3" }); assert.equal(object.history(), [ { a: "a" }, { a: "a1" }, { a: "a2" }, { a: "a3" }, ]); assert.equal(object.history.forward(), []);
assert.is(setObject.history.back(), true); assert.equal(object(), { a: "a2" }); assert.equal(object.history(), [{ a: "a" }, { a: "a1" }, { a: "a2" }]); assert.equal(object.history.forward(), [{ a: "a3" }]);
assert.is(setObject.history.back(), true); assert.is(setObject.history.back(), true); assert.equal(object(), { a: "a" }); assert.equal(object.history(), [{ a: "a" }]); assert.equal(object.history.forward(), [ { a: "a1" }, { a: "a2" }, { a: "a3" }, ]);
assert.is(setObject.history.back(), false);
assert.is(setObject.history.forward(), true); assert.equal(object(), { a: "a1" }); assert.equal(object.history(), [{ a: "a" }, { a: "a1" }]); assert.equal(object.history.forward(), [{ a: "a2" }, { a: "a3" }]);
assert.is(setObject.history.forward(), true); assert.is(setObject.history.forward(), true); assert.equal(object(), { a: "a3" }); assert.equal(object.history(), [ { a: "a" }, { a: "a1" }, { a: "a2" }, { a: "a3" }, ]); assert.equal(object.history.forward(), []);
assert.is(setObject.history.forward(), false);
dispose(); });});
test.run();
Version Info