reshow-flux
Version:
The smallest react flux and Fast hook alternative
102 lines (101 loc) • 2.15 kB
JavaScript
//@ts-check
import { expect } from "chai";
import { Map } from "immutable";
import toJS from "../toJS.mjs";
describe("Test toJS with object", function () {
it("without set", function () {
var foo = {
foo: "bar"
};
var foo1 = toJS(foo);
var foo2 = toJS(foo);
expect(foo1 === foo2).to.be.true;
});
it("set same value", function () {
var foo = {
foo: "bar"
};
var foo1 = toJS(foo);
foo.foo = "bar";
var foo2 = toJS(foo);
expect(foo1 === foo2).to.be.true;
expect(foo1).to.deep.equal({
foo: "bar"
});
expect(foo2).to.deep.equal({
foo: "bar"
});
});
it("set different value", function () {
var foo = {
foo: "bar"
};
var foo1 = toJS(foo);
foo.foo = "bar1";
var foo2 = toJS(foo);
expect(foo1 === foo2).to.be.true;
expect(foo1).to.deep.equal({
foo: "bar1"
});
expect(foo2).to.deep.equal({
foo: "bar1"
});
});
});
describe("Test toJS with immuteable", function () {
it("without set", function () {
var foo = Map({
foo: "bar"
});
var foo1 = toJS(foo);
var foo2 = toJS(foo);
expect(foo1 === foo2).to.be.true;
});
it("set same value", function () {
var foo = Map({
foo: "bar"
});
var foo1 = toJS(foo);
var foo2 = toJS(foo.set("foo", "bar"));
expect(foo1 === foo2).to.be.true;
expect(foo1).to.deep.equal({
foo: "bar"
});
expect(foo2).to.deep.equal({
foo: "bar"
});
});
it("set different value", function () {
var foo = Map({
foo: "bar"
});
var foo1 = toJS(foo);
var foo2 = toJS(foo.set("foo", "bar1"));
expect(foo1 === foo2).to.be.false;
expect(foo1).to.deep.equal({
foo: "bar"
});
expect(foo2).to.deep.equal({
foo: "bar1"
});
});
it("should restore all to js object", function () {
var foo1 = Map({
a: {
foo1: "bar1"
},
b: Map({
foo2: "bar2"
})
});
var foo2 = toJS(foo1);
expect(foo2).to.deep.equal({
a: {
foo1: "bar1"
},
b: {
foo2: "bar2"
}
});
});
});