"use strict"; const expect = require("chai").expect; const dm = require("../src"); let User = dm.createType("User", { messages: dm.arrayOf(dm.string()) }); describe("guarded arrays", () => { let joe = User({ messages: [] }); it("should accept valid values", () => { joe.messages.push("Hello world!"); expect(joe.messages[0]).to.equal("Hello world!"); joe.messages.splice(0, 0, "Hello earth!") expect(joe.messages[0]).to.equal("Hello earth!"); expect(joe.messages[1]).to.equal("Hello world!"); joe.messages[0] = "Hello moon!"; expect(joe.messages[0]).to.equal("Hello moon!"); expect(joe.messages[1]).to.equal("Hello world!"); }); it("should reject invalid values", () => { expect(() => { joe.messages.push(42); }).to.throw("Expected a string, got a number instead"); expect(() => { joe.messages.splice(0, 0, 43); }).to.throw("Expected a string, got a number instead"); expect(() => { joe.messages[0] = 44; }).to.throw("Expected a string, got a number instead"); expect(joe.messages[0]).to.equal("Hello moon!"); expect(joe.messages[1]).to.equal("Hello world!"); }); });