/** * Created by windy on 2018/01/23. */ describe("contextTest", function () { before(function () { }); /** * test_author_guy */ it("context测试", function () { var ParentStore = BI.inherit(Fix.Model, { state: function () { return { context: "默认context" }; }, childContext: ["context"] }); BI.model("demo.model.parent_store", ParentStore); var ChildStore = BI.inherit(Fix.Model, { context: ["context"], computed: { currContext: function () { return this.model.context; } }, actions: { changeContext: function () { this.model.context = "改变后的context"; } } }); BI.model("demo.model.child_store", ChildStore); var Label = BI.inherit(BI.Widget, { _store: function () { return BI.Models.getModel("demo.model.child_store"); }, render: function () { return { type: "bi.label", text: this.model.currContext }; } }); BI.shortcut("demo.label", Label); var Demo = BI.inherit(BI.Widget, { _store: function () { return BI.Models.getModel("demo.model.parent_store"); }, render: function () { var self = this; return { type: "demo.label", ref: function (_ref) { self.child = _ref; } }; } }); BI.shortcut("demo.demo", Demo); var demo = BI.Test.createWidget({ type: "demo.demo" }); expect(demo.child.model.currContext).to.equal("默认context"); demo.child.store.changeContext(); expect(demo.model.context).to.equal("改变后的context"); demo.destroy(); }); /** * test_author_guy */ it("异步context测试-loader的populate测试", function (done) { var ParentStore = BI.inherit(Fix.Model, { state: function () { return { context: "默认context" }; }, childContext: ["context"] }); BI.model("demo.model.parent_store", ParentStore); var ChildStore = BI.inherit(Fix.Model, { context: ["context"], computed: { currContext: function () { return this.model.context; } }, actions: { changeContext: function () { this.model.context = "改变后的context"; } } }); BI.model("demo.model.child_store", ChildStore); var Label = BI.inherit(BI.Widget, { _store: function () { return BI.Models.getModel("demo.model.child_store"); }, render: function () { return { type: "bi.label", text: this.model.currContext }; } }); BI.shortcut("demo.label", Label); var Demo = BI.inherit(BI.Widget, { _store: function () { return BI.Models.getModel("demo.model.parent_store"); }, render: function () { var items = BI.map([1, 2, 3], function (i, v) { return { text: v, value: v, title: v }; }); var self = this; this.labels = {}; return { type: "bi.loader", ref: function (_ref) { self.child = _ref; }, itemsCreator: function (options, populate) { setTimeout(function () { populate(BI.map(items.slice((options.times - 1) * 10, options.times * 10), function (i, v) { return BI.extend(v, { type: "demo.label", ref: function (_ref) { self.labels[i] = _ref; }, height: 25 }); })); }, 0); }, hasNext: function (options) { return options.times * 10 < items.length; } }; } }); BI.shortcut("demo.demo", Demo); var demo = BI.Test.createWidget({ type: "demo.demo" }); demo.child.populate(); setTimeout(function () { expect(demo.labels[0].model.currContext).to.equal("默认context"); demo.destroy(); done(); }, 0); }); /** * test_author_guy */ it("异步context测试-beforeInit测试", function (done) { var ParentStore = BI.inherit(Fix.Model, { state: function () { return { context: "默认context" }; }, childContext: ["context"] }); BI.model("demo.model.parent_store", ParentStore); var ChildStore = BI.inherit(Fix.Model, { context: ["context"], computed: { currContext: function () { return this.model.context; } }, actions: { changeContext: function () { this.model.context = "改变后的context"; } } }); BI.model("demo.model.child_store", ChildStore); var Label = BI.inherit(BI.Widget, { _store: function () { return BI.Models.getModel("demo.model.child_store"); }, render: function () { return { type: "bi.label", text: this.model.currContext }; } }); BI.shortcut("demo.label", Label); var Demo = BI.inherit(BI.Widget, { _store: function () { return BI.Models.getModel("demo.model.parent_store"); }, beforeInit: function (callback) { setTimeout(callback, 0); }, render: function () { var self = this; return { type: "demo.label", ref: function (_ref) { self.child = _ref; } }; } }); BI.shortcut("demo.demo", Demo); var demo = BI.Test.createWidget({ type: "demo.demo" }); setTimeout(function () { expect(demo.child.model.currContext).to.equal("默认context"); demo.destroy(); done(); }, 0); }); /** * test_author_guy */ it("inject测试", function () { var ParentStore = BI.inherit(Fix.Model, { state: function () { return { context: "默认context" }; }, childContext: ["context"] }); BI.model("demo.model.parent_store", ParentStore); var ChildStore = BI.inherit(Fix.Model, { inject: ["context"], computed: { currContext: function () { return this.model.context; } }, actions: { changeContext: function () { this.model.context = "改变后的context"; } } }); BI.model("demo.model.child_store", ChildStore); var Label = BI.inherit(BI.Widget, { _store: function () { return BI.Models.getModel("demo.model.child_store"); }, render: function () { return { type: "bi.label", text: this.model.currContext }; } }); BI.shortcut("demo.label", Label); var Demo = BI.inherit(BI.Widget, { _store: function () { return BI.Models.getModel("demo.model.parent_store"); }, render: function () { var self = this; return { type: "demo.label", ref: function (_ref) { self.child = _ref; } }; } }); BI.shortcut("demo.demo", Demo); var demo = BI.Test.createWidget({ type: "demo.demo" }); expect(demo.child.model.currContext).to.equal("默认context"); demo.child.store.changeContext(); expect(demo.model.context).to.equal("默认context"); demo.destroy(); }); });