Skip to content

Commit

Permalink
Merge branch 'hotfix/0.4.7'
Browse files Browse the repository at this point in the history
  • Loading branch information
dcrockwell committed Sep 13, 2016
2 parents c5b7fe0 + 7f4fd37 commit 35e9009
Show file tree
Hide file tree
Showing 6 changed files with 134 additions and 8 deletions.
9 changes: 7 additions & 2 deletions es5/lib/component/link.js
Expand Up @@ -174,8 +174,13 @@ var Link = function () {
if (_this2.parentLink.hasOwnProperty(getMethodName)) {
instance[propertyName];
} else {
var propertyValue = _this2.parentLink[propertyName]();
instance[propertyName](propertyValue);
if (typeof _this2.parentLink[propertyName] === "function") {
var propertyValue = _this2.parentLink[propertyName]();
instance[propertyName](propertyValue);
} else {
var _propertyValue = _this2.parentLink[propertyName];
instance[propertyName] = _propertyValue;
}
}
});
}
Expand Down
82 changes: 82 additions & 0 deletions es5/spec/component/component.link.inherit.into.spec.js
@@ -0,0 +1,82 @@
"use strict";

var _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();

var _component = require("../../lib/component/component.js");

var _component2 = _interopRequireDefault(_component);

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }

function _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return call && (typeof call === "object" || typeof call === "function") ? call : self; }

function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function, not " + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }

var Parent = function (_Component) {
_inherits(Parent, _Component);

function Parent() {
_classCallCheck(this, Parent);

return _possibleConstructorReturn(this, Object.getPrototypeOf(Parent).apply(this, arguments));
}

_createClass(Parent, [{
key: "initialize",
value: function initialize() {
this.link("dependency", Dependency).into("dependencies");

this.link("child", Child).inherit("dependency", "dependencies");
}
}]);

return Parent;
}(_component2.default);

var Child = function (_Component2) {
_inherits(Child, _Component2);

function Child() {
_classCallCheck(this, Child);

return _possibleConstructorReturn(this, Object.getPrototypeOf(Child).apply(this, arguments));
}

return Child;
}(_component2.default);

var Dependency = function (_Component3) {
_inherits(Dependency, _Component3);

function Dependency() {
_classCallCheck(this, Dependency);

return _possibleConstructorReturn(this, Object.getPrototypeOf(Dependency).apply(this, arguments));
}

return Dependency;
}(_component2.default);

describe("component.link.inherit.into", function () {
var parent = void 0,
child = void 0;

beforeEach(function () {
parent = new Parent();
child = parent.child();
});

it("copy the inherited properties to the newly instantiated chain link", function () {
var values = {
dependency: child.dependency,
dependencies: child.dependencies
};

values.should.eql({
dependency: parent.dependency,
dependencies: parent.dependencies
});
});
});
9 changes: 7 additions & 2 deletions es6/lib/component/link.js
Expand Up @@ -130,8 +130,13 @@ export default class Link {
if (this.parentLink.hasOwnProperty(getMethodName)) {
instance[propertyName];
} else {
const propertyValue = this.parentLink[propertyName]();
instance[propertyName](propertyValue);
if (typeof this.parentLink[propertyName] === "function") {
const propertyValue = this.parentLink[propertyName]();
instance[propertyName](propertyValue);
} else {
const propertyValue = this.parentLink[propertyName];
instance[propertyName] = propertyValue;
}
}
});
}
Expand Down
35 changes: 35 additions & 0 deletions es6/spec/component/component.link.inherit.into.spec.js
@@ -0,0 +1,35 @@
import Component from "../../lib/component/component.js";

class Parent extends Component {
initialize() {
this.link("dependency", Dependency).into("dependencies");

this.link("child", Child)
.inherit("dependency", "dependencies");
}
}

class Child extends Component {}
class Dependency extends Component {}

describe("component.link.inherit.into", () => {
let parent,
child;

beforeEach(() => {
parent = new Parent();
child = parent.child();
});

it("copy the inherited properties to the newly instantiated chain link", () => {
const values = {
dependency: child.dependency,
dependencies: child.dependencies
};

values.should.eql({
dependency: parent.dependency,
dependencies: parent.dependencies
});
});
});
5 changes: 2 additions & 3 deletions es6/spec/component/component.link.inherit.spec.js
Expand Up @@ -5,9 +5,8 @@ class Person extends Component {
this.properties("dna", "color");
this.properties("numb").boolean;

this
.link("arm", Arm)
.inherit("dna", "color", "numb");
this.link("arm", Arm)
.inherit("dna", "color", "numb");
}
}

Expand Down
2 changes: 1 addition & 1 deletion package.json
@@ -1,6 +1,6 @@
{
"name": "mrt",
"version": "0.4.6",
"version": "0.4.7",
"description": "Helps build expressive chained interfaces.",
"main": "index.js",
"scripts": {
Expand Down

0 comments on commit 35e9009

Please sign in to comment.