UNPKG

can-bind

Version:

Updates one observable value with the value of another observable.

53 lines (45 loc) 1.66 kB
var Bind = require("../can-bind"); var QUnit = require("steal-qunit"); var SimpleMap = require("can-simple-map"); var SimpleObservable = require("can-simple-observable"); var value = require("can-value"); QUnit.module("can-bind binding detection"); QUnit.test("child-to-parent without child setter", function(assert) { var parent = new SimpleObservable(undefined); var map = new SimpleMap({prop: "value"}); var child = value.from(map, "prop"); var binding = new Bind({ child: child, parent: parent }); // This is a child -> parent binding because the child doesn’t have a setter assert.equal(binding._childToParent, true, "child -> parent detection"); assert.equal(binding._parentToChild, false, "parent -> child detection"); }); QUnit.test("child-to-parent without parent getter", function(assert) { var child = new SimpleObservable(undefined); var map = new SimpleMap({prop: "value"}); var parent = value.to(map, "prop"); var binding = new Bind({ child: child, parent: parent }); // This is a child -> parent binding because the parent doesn’t have a getter assert.equal(binding._childToParent, true, "child -> parent detection"); assert.equal(binding._parentToChild, false, "parent -> child detection"); }); QUnit.test("error thrown for no-way binding", function(assert) { var child = value.from(new SimpleMap({prop: "value"}), "prop"); var parent = value.from(new SimpleMap({prop: "value"}), "prop"); // An error is thrown because neither the child’s nor the parent’s value can be set assert.throws( function() { new Bind({ child: child, parent: parent }); }, /binding/, "error thrown" ); });