react-class
Version:
A carefully crafted base class for all your React components
88 lines (63 loc) • 2.51 kB
JavaScript
;
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 _ava = require('ava');
var _ava2 = _interopRequireDefault(_ava);
var _autoBind = require('../../autoBind');
var _autoBind2 = _interopRequireDefault(_autoBind);
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"); } }
(0, _ava2.default)('autoBind works', function (t) {
var MyClass = function () {
function MyClass() {
_classCallCheck(this, MyClass);
}
_createClass(MyClass, [{
key: 'returnThis',
value: function returnThis() {
return this || 0;
}
}, {
key: 'setState',
value: function setState() {}
}]);
return MyClass;
}();
var obj = new MyClass();
var unbound = obj.returnThis;
var bound = (0, _autoBind2.default)(obj).returnThis;
t.is(unbound(), 0, 'unbound');
t.true(bound() === obj, 'bound');
});
(0, _ava2.default)('autoBind filter works', function (t) {
var MyClass = function () {
function MyClass() {
_classCallCheck(this, MyClass);
this.name = 'myclass';
}
_createClass(MyClass, [{
key: 'returnThis',
value: function returnThis() {
return this || 0;
}
}, {
key: 'notBound',
value: function notBound() {
return this || 1;
}
}, {
key: 'setState',
value: function setState() {}
}]);
return MyClass;
}();
var obj = new MyClass();
var unbound = (0, _autoBind2.default)(obj, { notBound: true }).notBound;
t.is(unbound(), 1, 'unbound');
var boundObj = (0, _autoBind2.default)(obj, function (name) {
return name !== 'notBound';
});
var returnThisBound = boundObj.returnThis;
var notBound = boundObj.notBound;
t.is(returnThisBound(), boundObj, 'returnThisBound');
t.is(notBound(), 1, 'notBound');
});