Code coverage report for Event/index.js

Statements: 100% (52 / 52)      Branches: 100% (32 / 32)      Functions: 100% (13 / 13)      Lines: 100% (35 / 35)      Ignored: 2 statements, 4 branches     

All files » Event/ » index.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    1         6       1       19   1   1   1 1   1 1 19   19 19 19 19   19   19   1 18   1     17 17       1     6 6         6   6         4   4         2         3         2       1     1 1  
"use strict";
 
Object.defineProperty(exports, "__esModule", {
  value: true
});
// istanbul ignore next
 
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) { Eif (protoProps) defineProperties(Constructor.prototype, protoProps); Iif (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; })();
 
// istanbul ignore next
 
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
 
// istanbul ignore next
 
function _classCallCheck(instance, Constructor) { Iif (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
 
var _moment = require('moment');
 
var _moment2 = _interopRequireDefault(_moment);
 
var invalidStartDateError = new ReferenceError("Invalid starting point");
var invalidDurationError = new ReferenceError("Invalid duration period");
 
var Event = (function () {
  function Event() {
    var _ref = arguments.length <= 0 || arguments[0] === undefined ? {} : arguments[0];
 
    var _ref$startTime = _ref.startTime;
    var startTime = _ref$startTime === undefined ? (0, _moment2["default"])() : _ref$startTime;
    var _ref$duration = _ref.duration;
    var duration = _ref$duration === undefined ? _moment2["default"].duration(1, 'hours') : _ref$duration;
 
    _classCallCheck(this, Event);
 
    if (startTime.isBefore((0, _moment2["default"])())) {
 
      throw invalidStartDateError;
    } else if (!_moment2["default"].isDuration(duration)) {
 
      throw invalidDurationError;
    } else {
 
      this._startTime = startTime;
      this._duration = duration;
    }
  }
 
  _createClass(Event, [{
    key: "isBetween",
    value: function isBetween(start, end) {
      var endTime = (0, _moment2["default"])(this._startTime).add(this._duration);
      return this._startTime.isAfter(start) && endTime.isBefore(end);
    }
  }, {
    key: "inRange",
    value: function inRange(start, end) {
      var endTime = (0, _moment2["default"])(this._startTime).add(this._duration);
 
      return endTime.isBetween(start, end) || this._startTime.isBetween(start, end) || start.isBetween(this._startTime, endTime) || end.isBetween(this._startTime, endTime);
    }
  }, {
    key: "collide",
    value: function collide(event) {
      var endTime = (0, _moment2["default"])(this._startTime).add(this._duration);
 
      return event.inRange(this._startTime, endTime);
    }
  }, {
    key: "startTime",
    get: function get() {
      return this._startTime.calendar();
    }
  }, {
    key: "duration",
    get: function get() {
      return this._duration.toJSON();
    }
  }, {
    key: "endTime",
    get: function get() {
      return (0, _moment2["default"])(this._startTime).add(this._duration).calendar();
    }
  }]);
 
  return Event;
})();
 
exports["default"] = Event;
module.exports = exports["default"];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3RyYXZpcy9idWlsZC9yb2RvbGZvMjQ4OC9ib29raW5nL3NyYy9tb2RlbHMvRXZlbnQvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7c0JBQ21CLFFBQVE7Ozs7QUFFM0IsSUFBTSxxQkFBcUIsR0FBRyxJQUFJLGNBQWMsQ0FBQyx3QkFBd0IsQ0FBQyxDQUFDO0FBQzNFLElBQU0sb0JBQW9CLEdBQUcsSUFBSSxjQUFjLENBQUMseUJBQXlCLENBQUMsQ0FBQzs7SUFFckUsS0FBSztBQUVFLFdBRlAsS0FBSyxHQUUwRTtxRUFBSixFQUFFOzs4QkFBbkUsU0FBUztRQUFULFNBQVMsa0NBQUcsMEJBQVE7NkJBQUUsUUFBUTtRQUFSLFFBQVEsaUNBQUcsb0JBQU8sUUFBUSxDQUFDLENBQUMsRUFBRSxPQUFPLENBQUM7OzBCQUZ0RSxLQUFLOztBQUlQLFFBQUksU0FBUyxDQUFDLFFBQVEsQ0FBQywwQkFBUSxDQUFDLEVBQUU7O0FBRWhDLFlBQU0scUJBQXFCLENBQUM7S0FFN0IsTUFBTSxJQUFJLENBQUMsb0JBQU8sVUFBVSxDQUFDLFFBQVEsQ0FBQyxFQUFFOztBQUV2QyxZQUFNLG9CQUFvQixDQUFDO0tBRTVCLE1BQU07O0FBRUwsVUFBSSxDQUFDLFVBQVUsR0FBRyxTQUFTLENBQUM7QUFDNUIsVUFBSSxDQUFDLFNBQVMsR0FBRyxRQUFRLENBQUM7S0FDM0I7R0FDRjs7ZUFqQkcsS0FBSzs7V0FtQkEsbUJBQUMsS0FBSyxFQUFFLEdBQUcsRUFBRTtBQUNwQixVQUFJLE9BQU8sR0FBRyx5QkFBTyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztBQUMxRCxhQUFRLElBQUksQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxJQUFJLE9BQU8sQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUU7S0FDbEU7OztXQUVNLGlCQUFDLEtBQUssRUFBRSxHQUFHLEVBQUU7QUFDbEIsVUFBSSxPQUFPLEdBQUcseUJBQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUM7O0FBRTFELGFBQVEsT0FBTyxDQUFDLFNBQVMsQ0FBQyxLQUFLLEVBQUUsR0FBRyxDQUFDLElBQzdCLElBQUksQ0FBQyxVQUFVLENBQUMsU0FBUyxDQUFDLEtBQUssRUFBRSxHQUFHLENBQUMsSUFDckMsS0FBSyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxJQUN6QyxHQUFHLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsT0FBTyxDQUFDLENBQUU7S0FDbEQ7OztXQUVNLGlCQUFDLEtBQUssRUFBRTtBQUNiLFVBQUksT0FBTyxHQUFHLHlCQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDOztBQUUxRCxhQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztLQUNoRDs7O1NBRVksZUFBRztBQUNkLGFBQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztLQUNuQzs7O1NBRVcsZUFBRztBQUNiLGFBQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztLQUNoQzs7O1NBRVUsZUFBRztBQUNaLGFBQU8seUJBQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsUUFBUSxFQUFFLENBQUM7S0FDL0Q7OztTQWpERyxLQUFLOzs7cUJBcURJLEtBQUsiLCJmaWxlIjoiL2hvbWUvdHJhdmlzL2J1aWxkL3JvZG9sZm8yNDg4L2Jvb2tpbmcvc3JjL21vZGVscy9FdmVudC9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuXG5jb25zdCBpbnZhbGlkU3RhcnREYXRlRXJyb3IgPSBuZXcgUmVmZXJlbmNlRXJyb3IoXCJJbnZhbGlkIHN0YXJ0aW5nIHBvaW50XCIpO1xuY29uc3QgaW52YWxpZER1cmF0aW9uRXJyb3IgPSBuZXcgUmVmZXJlbmNlRXJyb3IoXCJJbnZhbGlkIGR1cmF0aW9uIHBlcmlvZFwiKTtcblxuY2xhc3MgRXZlbnQge1xuXG4gIGNvbnN0cnVjdG9yKHsgc3RhcnRUaW1lID0gbW9tZW50KCksIGR1cmF0aW9uID0gbW9tZW50LmR1cmF0aW9uKDEsICdob3VycycpIH0gPSB7fSkge1xuXG4gICAgaWYgKHN0YXJ0VGltZS5pc0JlZm9yZShtb21lbnQoKSkpIHtcblxuICAgICAgdGhyb3cgaW52YWxpZFN0YXJ0RGF0ZUVycm9yO1xuXG4gICAgfSBlbHNlIGlmICghbW9tZW50LmlzRHVyYXRpb24oZHVyYXRpb24pKSB7XG5cbiAgICAgIHRocm93IGludmFsaWREdXJhdGlvbkVycm9yO1xuXG4gICAgfSBlbHNlIHtcblxuICAgICAgdGhpcy5fc3RhcnRUaW1lID0gc3RhcnRUaW1lO1xuICAgICAgdGhpcy5fZHVyYXRpb24gPSBkdXJhdGlvbjtcbiAgICB9XG4gIH1cblxuICBpc0JldHdlZW4oc3RhcnQsIGVuZCkge1xuICAgIGxldCBlbmRUaW1lID0gbW9tZW50KHRoaXMuX3N0YXJ0VGltZSkuYWRkKHRoaXMuX2R1cmF0aW9uKTtcbiAgICByZXR1cm4gKHRoaXMuX3N0YXJ0VGltZS5pc0FmdGVyKHN0YXJ0KSAmJiBlbmRUaW1lLmlzQmVmb3JlKGVuZCkpO1xuICB9XG5cbiAgaW5SYW5nZShzdGFydCwgZW5kKSB7XG4gICAgbGV0IGVuZFRpbWUgPSBtb21lbnQodGhpcy5fc3RhcnRUaW1lKS5hZGQodGhpcy5fZHVyYXRpb24pO1xuXG4gICAgcmV0dXJuIChlbmRUaW1lLmlzQmV0d2VlbihzdGFydCwgZW5kKSB8fFxuICAgICAgICAgICAgdGhpcy5fc3RhcnRUaW1lLmlzQmV0d2VlbihzdGFydCwgZW5kKSB8fFxuICAgICAgICAgICAgc3RhcnQuaXNCZXR3ZWVuKHRoaXMuX3N0YXJ0VGltZSwgZW5kVGltZSkgfHxcbiAgICAgICAgICAgIGVuZC5pc0JldHdlZW4odGhpcy5fc3RhcnRUaW1lLCBlbmRUaW1lKSk7XG4gIH1cblxuICBjb2xsaWRlKGV2ZW50KSB7XG4gICAgbGV0IGVuZFRpbWUgPSBtb21lbnQodGhpcy5fc3RhcnRUaW1lKS5hZGQodGhpcy5fZHVyYXRpb24pO1xuXG4gICAgcmV0dXJuIGV2ZW50LmluUmFuZ2UodGhpcy5fc3RhcnRUaW1lLCBlbmRUaW1lKTtcbiAgfVxuXG4gIGdldCBzdGFydFRpbWUoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3N0YXJ0VGltZS5jYWxlbmRhcigpO1xuICB9XG5cbiAgZ2V0IGR1cmF0aW9uKCkge1xuICAgIHJldHVybiB0aGlzLl9kdXJhdGlvbi50b0pTT04oKTtcbiAgfVxuXG4gIGdldCBlbmRUaW1lKCkge1xuICAgIHJldHVybiBtb21lbnQodGhpcy5fc3RhcnRUaW1lKS5hZGQodGhpcy5fZHVyYXRpb24pLmNhbGVuZGFyKCk7XG4gIH1cblxufVxuXG5leHBvcnQgZGVmYXVsdCBFdmVudDtcbiJdfQ==