Code coverage report for lib/addons/__tests__/ReactComponent-test.js

Statements: 88.78% (87 / 98)      Branches: 53.33% (16 / 30)      Functions: 100% (20 / 20)      Lines: 100% (74 / 74)      Ignored: none     

All files » lib/addons/__tests__/ » ReactComponent-test.js
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156    2   8   2   3   12   1   1 1 1 1   1 1   1 1 1 4   4 4       1   1     4             1     1 1 4   4   4 4   4         1   1     4             1     1 1 4   4   4 4     1   1     1 1     1 1 1     1 1     1   1 1     1 1 1   1   1 1 1 1     1 1 1   1           1   1     1 1 1   1           1   1 1 1 1      
"use strict";
 
var _interopRequire = function (obj) { return obj && obj.__esModule ? obj["default"] : obj; };
 
var _get = function get(object, property, receiver) { var desc = Object.getOwnPropertyDescriptor(object, property); Iif (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else Eif ("value" in desc && desc.writable) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };
 
var _prototypeProperties = function (child, staticProps, instanceProps) { Iif (staticProps) Object.defineProperties(child, staticProps); Eif (instanceProps) Object.defineProperties(child.prototype, instanceProps); };
 
var _inherits = function (subClass, superClass) { Iif (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 } }); Eif (superClass) subClass.__proto__ = superClass; };
 
var _classCallCheck = function (instance, Constructor) { Iif (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } };
 
var _Flux = require("../../Flux");
 
var Flummox = _Flux.Flummox;
var Store = _Flux.Store;
var Actions = _Flux.Actions;
var React = _interopRequire(require("react/addons"));
 
var TestUtils = React.addons.TestUtils;
var FluxComponent = _interopRequire(require("../FluxComponent"));
 
describe("FluxComponent", function () {
  var TestActions = (function (Actions) {
    function TestActions() {
      _classCallCheck(this, TestActions);
 
      Eif (Actions != null) {
        Actions.apply(this, arguments);
      }
    }
 
    _inherits(TestActions, Actions);
 
    _prototypeProperties(TestActions, null, {
      getSomething: {
        value: function getSomething(something) {
          return something;
        },
        writable: true,
        configurable: true
      }
    });
 
    return TestActions;
  })(Actions);
 
  var TestStore = (function (Store) {
    function TestStore(flux) {
      _classCallCheck(this, TestStore);
 
      _get(Object.getPrototypeOf(TestStore.prototype), "constructor", this).call(this);
 
      var testActions = flux.getActions("test");
      this.register(testActions.getSomething, this.handleGetSomething);
 
      this.state = {
        something: null
      };
    }
 
    _inherits(TestStore, Store);
 
    _prototypeProperties(TestStore, null, {
      handleGetSomething: {
        value: function handleGetSomething(something) {
          this.setState({ something: something });
        },
        writable: true,
        configurable: true
      }
    });
 
    return TestStore;
  })(Store);
 
  var Flux = (function (Flummox) {
    function Flux() {
      _classCallCheck(this, Flux);
 
      _get(Object.getPrototypeOf(Flux.prototype), "constructor", this).call(this);
 
      this.createActions("test", TestActions);
      this.createStore("test", TestStore, this);
    }
 
    _inherits(Flux, Flummox);
 
    return Flux;
  })(Flummox);
 
  before(function () {
    jsdom();
  });
 
  it("gets Flux property from either props or context", function () {
    var flux = new Flux();
    var contextComponent = undefined,
        propsComponent = undefined;
 
    React.withContext({ flux: flux }, function () {
      contextComponent = TestUtils.renderIntoDocument(React.createElement(FluxComponent, null));
    });
 
    propsComponent = TestUtils.renderIntoDocument(React.createElement(FluxComponent, { flux: flux }));
 
    expect(contextComponent.flux).to.be.an["instanceof"](Flummox);
    expect(propsComponent.flux).to.be.an["instanceof"](Flummox);
  });
 
  it("passes connectToStore prop to ReactMixin's connectToStores()", function () {
    var flux = new Flux();
    var actions = flux.getActions("test");
 
    var component = TestUtils.renderIntoDocument(React.createElement(FluxComponent, { flux: flux, connectToStores: "test" }));
 
    actions.getSomething("something good");
    expect(component.state.something).to.deep.equal("something good");
    actions.getSomething("something else");
    expect(component.state.something).to.deep.equal("something else");
  });
 
  it("injects children with flux prop", function () {
    var flux = new Flux();
    var actions = flux.getActions("test");
 
    var tree = TestUtils.renderIntoDocument(React.createElement(
      FluxComponent,
      { flux: flux },
      React.createElement("div", null)
    ));
 
    var div = TestUtils.findRenderedDOMComponentWithTag(tree, "div");
 
    expect(div.props.flux).to.equal(flux);
  });
 
  it("injects children with props corresponding to component state", function () {
    var flux = new Flux();
    var actions = flux.getActions("test");
 
    var tree = TestUtils.renderIntoDocument(React.createElement(
      FluxComponent,
      { flux: flux, connectToStores: "test" },
      React.createElement("div", null)
    ));
 
    var div = TestUtils.findRenderedDOMComponentWithTag(tree, "div");
 
    actions.getSomething("something good");
    expect(div.props.something).to.equal("something good");
    actions.getSomething("something else");
    expect(div.props.something).to.equal("something else");
  });
});
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy9hZGRvbnMvX190ZXN0c19fL1JlYWN0Q29tcG9uZW50LXRlc3QuanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsWUFBWSxDQUFDOzs7Ozs7Ozs7Ozs7b0JBRTJCLFlBQVk7O0lBQTNDLE9BQU8sU0FBUCxPQUFPO0lBQUUsS0FBSyxTQUFMLEtBQUs7SUFBRSxPQUFPLFNBQVAsT0FBTztJQUV6QixLQUFLLDJCQUFNLGNBQWM7O0lBQzFCLFNBQVMsR0FBSyxLQUFLLENBQUMsTUFBTSxDQUExQixTQUFTO0lBRVIsYUFBYSwyQkFBTSxrQkFBa0I7O0FBRTVDLFFBQVEsQ0FBQyxlQUFlLEVBQUUsWUFBTTtNQUV4QixXQUFXLGNBQVMsT0FBTzthQUEzQixXQUFXOzRCQUFYLFdBQVc7O1VBQVMsT0FBTztBQUFQLGVBQU87Ozs7Y0FBM0IsV0FBVyxFQUFTLE9BQU87O3lCQUEzQixXQUFXO0FBQ2Ysa0JBQVk7ZUFBQSxzQkFBQyxTQUFTLEVBQUU7QUFDdEIsaUJBQU8sU0FBUyxDQUFDO1NBQ2xCOzs7Ozs7V0FIRyxXQUFXO0tBQVMsT0FBTzs7TUFNM0IsU0FBUyxjQUFTLEtBQUs7QUFDaEIsYUFEUCxTQUFTLENBQ0QsSUFBSTs0QkFEWixTQUFTOztBQUVYLGlDQUZFLFNBQVMsNkNBRUg7O0FBRVIsVUFBSSxXQUFXLEdBQUcsSUFBSSxDQUFDLFVBQVUsQ0FBQyxNQUFNLENBQUMsQ0FBQztBQUMxQyxVQUFJLENBQUMsUUFBUSxDQUFDLFdBQVcsQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUM7O0FBRWpFLFVBQUksQ0FBQyxLQUFLLEdBQUc7QUFDWCxpQkFBUyxFQUFFLElBQUk7T0FDaEIsQ0FBQztLQUNIOztjQVZHLFNBQVMsRUFBUyxLQUFLOzt5QkFBdkIsU0FBUztBQVliLHdCQUFrQjtlQUFBLDRCQUFDLFNBQVMsRUFBRTtBQUM1QixjQUFJLENBQUMsUUFBUSxDQUFDLEVBQUUsU0FBUyxFQUFULFNBQVMsRUFBRSxDQUFDLENB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LElBQUksQ0FBQyxDQUFDO0dBQ3ZDLENBQUMsQ0FBQzs7QUFFSCxJQUFFLENBQUMsOERBQThELEVBQUUsWUFBTTtBQUN2RSxRQUFJLElBQUksR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO0FBQ3RCLFFBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsTUFBTSxDQUFDLENBQUM7O0FBRXRDLFFBQUksSUFBSSxHQUFHLFNBQVMsQ0FBQyxrQkFBa0IsQ0FDckM7QUFBQyxtQkFBYTtRQUFDLElBQUksRUFBRSxJQUFJLEFBQUMsRUFBQyxlQUFlLEVBQUMsTUFBTTtNQUMvQyxnQ0FBTztLQUNPLENBQ2pCLENBQUM7O0FBRUYsUUFBSSxHQUFHLEdBQUcsU0FBUyxDQUFDLCtCQUErQixDQUFDLElBQUksRUFBRSxLQUFLLENBQUMsQ0FBQzs7QUFFakUsV0FBTyxDQUFDLFlBQVksQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0FBQ3ZDLFVBQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsZ0JBQWdCLENBQUMsQ0FBQztBQUN2RCxXQUFPLENBQUMsWUFBWSxDQUFDLGdCQUFnQixDQUFDLENBQUM7QUFDdkMsVUFBTSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxDQUFDLENBQUMsRUFBRSxDQUFDLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxDQUFDO0dBQ3hELENBQUMsQ0FBQztDQUVKLENBQUMsQ0FBQyIsImZpbGUiOiJzcmMvYWRkb25zL19fdGVzdHNfXy9SZWFjdENvbXBvbmVudC10ZXN0LmpzIiwic291cmNlc0NvbnRlbnQiOlsiJ3VzZSBzdHJpY3QnO1xuXG5pbXBvcnQgeyBGbHVtbW94LCBTdG9yZSwgQWN0aW9ucyB9IGZyb20gJy4uLy4uL0ZsdXgnO1xuXG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QvYWRkb25zJztcbmxldCB7IFRlc3RVdGlscyB9ID0gUmVhY3QuYWRkb25zO1xuXG5pbXBvcnQgRmx1eENvbXBvbmVudCBmcm9tICcuLi9GbHV4Q29tcG9uZW50JztcblxuZGVzY3JpYmUoJ0ZsdXhDb21wb25lbnQnLCAoKSA9PiB7XG5cbiAgY2xhc3MgVGVzdEFjdGlvbnMgZXh0ZW5kcyBBY3Rpb25zIHtcbiAgICBnZXRTb21ldGhpbmcoc29tZXRoaW5nKSB7XG4gICAgICByZXR1cm4gc29tZXRoaW5nO1xuICAgIH1cbiAgfVxuXG4gIGNsYXNzIFRlc3RTdG9yZSBleHRlbmRzIFN0b3JlIHtcbiAgICBjb25zdHJ1Y3RvcihmbHV4KSB7XG4gICAgICBzdXBlcigpO1xuXG4gICAgICBsZXQgdGVzdEFjdGlvbnMgPSBmbHV4LmdldEFjdGlvbnMoJ3Rlc3QnKTtcbiAgICAgIHRoaXMucmVnaXN0ZXIodGVzdEFjdGlvbnMuZ2V0U29tZXRoaW5nLCB0aGlzLmhhbmRsZUdldFNvbWV0aGluZyk7XG5cbiAgICAgIHRoaXMuc3RhdGUgPSB7XG4gICAgICAgIHNvbWV0aGluZzogbnVsbFxuICAgICAgfTtcbiAgICB9XG5cbiAgICBoYW5kbGVHZXRTb21ldGhpbmcoc29tZXRoaW5nKSB7XG4gICAgICB0aGlzLnNldFN0YXRlKHsgc29tZXRoaW5nIH0pO1xuICAgIH1cbiAgfVxuXG4gIGNsYXNzIEZsdXggZXh0ZW5kcyBGbHVtbW94IHtcbiAgICBjb25zdHJ1Y3RvcigpIHtcbiAgICAgIHN1cGVyKCk7XG5cbiAgICAgIHRoaXMuY3JlYXRlQWN0aW9ucygndGVzdCcsIFRlc3RBY3Rpb25zKTtcbiAgICAgIHRoaXMuY3JlYXRlU3RvcmUoJ3Rlc3QnLCBUZXN0U3RvcmUsIHRoaXMpO1xuICAgIH1cbiAgfVxuXG4gIGJlZm9yZSgoKSA9PiB7XG4gICAganNkb20oKTtcbiAgfSk7XG5cbiAgaXQoJ2dldHMgRmx1eCBwcm9wZXJ0eSBmcm9tIGVpdGhlciBwcm9wcyBvciBjb250ZXh0JywgKCkgPT4ge1xuICAgIGxldCBmbHV4ID0gbmV3IEZsdXgoKTtcbiAgICBsZXQgY29udGV4dENvbXBvbmVudCwgcHJvcHNDb21wb25lbnQ7XG5cbiAgICBSZWFjdC53aXRoQ29udGV4dCh7IGZsdXggfSwgKCkgPT4ge1xuICAgICAgY29udGV4dENvbXBvbmVudCA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoPEZsdXhDb21wb25lbnQgLz4pO1xuICAgIH0pO1xuXG4gICAgcHJvcHNDb21wb25lbnQgPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFxuICAgICAgPEZsdXhDb21wb25lbnQgZmx1eD17Zmx1eH0gLz5cbiAgICApO1xuXG4gICAgZXhwZWN0KGNvbnRleHRDb21wb25lbnQuZmx1eCkudG8uYmUuYW4uaW5zdGFuY2VvZihGbHVtbW94KTtcbiAgICBleHBlY3QocHJvcHNDb21wb25lbnQuZmx1eCkudG8uYmUuYW4uaW5zdGFuY2VvZihGbHVtbW94KTtcbiAgfSk7XG5cbiAgaXQoJ3Bhc3NlcyBjb25uZWN0VG9TdG9yZSBwcm9wIHRvIFJlYWN0TWl4aW5cXCdzIGNvbm5lY3RUb1N0b3JlcygpJywgKCkgPT4ge1xuICAgIGxldCBmbHV4ID0gbmV3IEZsdXgoKTtcbiAgICBsZXQgYWN0aW9ucyA9IGZsdXguZ2V0QWN0aW9ucygndGVzdCcpO1xuXG4gICAgbGV0IGNvbXBvbmVudCA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICA8Rmx1eENvbXBvbmVudCBmbHV4PXtmbHV4fSBjb25uZWN0VG9TdG9yZXM9XCJ0ZXN0XCIgLz5cbiAgICApO1xuXG4gICAgYWN0aW9ucy5nZXRTb21ldGhpbmcoJ3NvbWV0aGluZyBnb29kJyk7XG4gICAgZXhwZWN0KGNvbXBvbmVudC5zdGF0ZS5zb21ldGhpbmcpLnRvLmRlZXAuZXF1YWwoJ3NvbWV0aGluZyBnb29kJyk7XG4gICAgYWN0aW9ucy5nZXRTb21ldGhpbmcoJ3NvbWV0aGluZyBlbHNlJyk7XG4gICAgZXhwZWN0KGNvbXBvbmVudC5zdGF0ZS5zb21ldGhpbmcpLnRvLmRlZXAuZXF1YWwoJ3NvbWV0aGluZyBlbHNlJyk7XG4gIH0pO1xuXG4gIGl0KCdpbmplY3RzIGNoaWxkcmVuIHdpdGggZmx1eCBwcm9wJywgKCkgPT4ge1xuICAgIGxldCBmbHV4ID0gbmV3IEZsdXgoKTtcbiAgICBsZXQgYWN0aW9ucyA9IGZsdXguZ2V0QWN0aW9ucygndGVzdCcpO1xuXG4gICAgbGV0IHRyZWUgPSBUZXN0VXRpbHMucmVuZGVySW50b0RvY3VtZW50KFxuICAgICAgPEZsdXhDb21wb25lbnQgZmx1eD17Zmx1eH0+XG4gICAgICAgIDxkaXYgLz5cbiAgICAgIDwvRmx1eENvbXBvbmVudD5cbiAgICApO1xuXG4gICAgbGV0IGRpdiA9IFRlc3RVdGlscy5maW5kUmVuZGVyZWRET01Db21wb25lbnRXaXRoVGFnKHRyZWUsICdkaXYnKTtcblxuICAgIGV4cGVjdChkaXYucHJvcHMuZmx1eCkudG8uZXF1YWwoZmx1eCk7XG4gIH0pO1xuXG4gIGl0KCdpbmplY3RzIGNoaWxkcmVuIHdpdGggcHJvcHMgY29ycmVzcG9uZGluZyB0byBjb21wb25lbnQgc3RhdGUnLCAoKSA9PiB7XG4gICAgbGV0IGZsdXggPSBuZXcgRmx1eCgpO1xuICAgIGxldCBhY3Rpb25zID0gZmx1eC5nZXRBY3Rpb25zKCd0ZXN0Jyk7XG5cbiAgICBsZXQgdHJlZSA9IFRlc3RVdGlscy5yZW5kZXJJbnRvRG9jdW1lbnQoXG4gICAgICA8Rmx1eENvbXBvbmVudCBmbHV4PXtmbHV4fSBjb25uZWN0VG9TdG9yZXM9XCJ0ZXN0XCI+XG4gICAgICAgIDxkaXYgLz5cbiAgICAgIDwvRmx1eENvbXBvbmVudD5cbiAgICApO1xuXG4gICAgbGV0IGRpdiA9IFRlc3RVdGlscy5maW5kUmVuZGVyZWRET01Db21wb25lbnRXaXRoVGFnKHRyZWUsICdkaXYnKTtcblxuICAgIGFjdGlvbnMuZ2V0U29tZXRoaW5nKCdzb21ldGhpbmcgZ29vZCcpO1xuICAgIGV4cGVjdChkaXYucHJvcHMuc29tZXRoaW5nKS50by5lcXVhbCgnc29tZXRoaW5nIGdvb2QnKTtcbiAgICBhY3Rpb25zLmdldFNvbWV0aGluZygnc29tZXRoaW5nIGVsc2UnKTtcbiAgICBleHBlY3QoZGl2LnByb3BzLnNvbWV0aGluZykudG8uZXF1YWwoJ3NvbWV0aGluZyBlbHNlJyk7XG4gIH0pO1xuXG59KTtcbiJdfQ==