stitch-ui
Version:
76 lines (68 loc) • 2.59 kB
JavaScript
/* global it, describe, beforeAll, expect */
/* eslint-disable no-underscore-dangle */
import { OrderedMap } from "immutable";
import { testSetup, noConsoleErrorsAllowed } from "../../testutil";
import * as valuesActions from "../actions";
import * as homeActions from "../../home/actions";
global.navigator = {
userAgent: "node.js"
};
describe("values", () => {
noConsoleErrorsAllowed();
let store;
let testApp;
const valueName = "test-value";
beforeAll(async () => {
const testHarness = await testSetup();
store = testHarness.store;
testApp = await store.dispatch(
homeActions.createApp(testHarness.groupId, "my-test-app")
);
});
it("can list values when empty", async () => {
await store.dispatch(
valuesActions.loadValues(testApp.groupId, testApp._id)
);
expect(store.getState().values.values).toEqual(new OrderedMap());
});
let foo = { value: "foo", private: true };
it("can create a value, and see it appear in the list", async () => {
await store.dispatch(
valuesActions.updateValue(testApp.groupId, testApp._id, valueName, foo)
);
await store.dispatch(
valuesActions.loadValues(testApp.groupId, testApp._id)
);
expect(store.getState().values.values.size).toBe(1);
const valueInStore = store.getState().values.values.get("test-value");
expect(valueInStore.valueJson.data).toEqual(foo.value);
});
it("can update a value, and see it appear in the list", async () => {
foo = { value: { blah: "blorp" }, private: !foo.private };
await store.dispatch(
valuesActions.updateValue(testApp.groupId, testApp._id, valueName, foo)
);
await store.dispatch(
valuesActions.loadValues(testApp.groupId, testApp._id)
);
const valueInStore = store.getState().values.values.get("test-value");
expect(valueInStore).toBeDefined();
expect(valueInStore.get("valueJson")).toBeDefined();
expect(valueInStore.get("valueJson").get("data")).toBeDefined();
expect(valueInStore.private).toBe(false);
expect(valueInStore.private).toEqual(foo.private);
expect(valueInStore.get("valueJson").get("data")).toEqual(foo.value);
expect(valueInStore.get("valueJson").get("data")).toEqual({
blah: "blorp"
});
});
it("can remove a value", async () => {
await store.dispatch(
valuesActions.removeValue(testApp.groupId, testApp._id, valueName)
);
await store.dispatch(
valuesActions.loadValues(testApp.groupId, testApp._id)
);
expect(store.getState().values.values).toEqual(new OrderedMap());
});
});