Code coverage report for Calendar/index.js

Statements: 100% (53 / 53)      Branches: 100% (28 / 28)      Functions: 100% (12 / 12)      Lines: 100% (36 / 36)      Ignored: 2 statements, 4 branches     

All files » Calendar/ » 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         5       2       6   1   1   1   1   1   1 1 6   6 6 6 6   6   6   1     5 5 5       1     4   4 1 1     4         4 2           2         1         4       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 _Event = require('../Event');
 
var _Event2 = _interopRequireDefault(_Event);
 
var invalidRangeError = new ReferenceError("Invalid range of dates");
 
var Calendar = (function () {
  function Calendar() {
    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$endTime = _ref.endTime;
    var endTime = _ref$endTime === undefined ? (0, _moment2['default'])().add(1, 'year') : _ref$endTime;
 
    _classCallCheck(this, Calendar);
 
    if (startTime.isAfter(endTime)) {
 
      throw invalidRangeError;
    } else {
 
      this._startTime = startTime;
      this._endTime = endTime;
      this._events = new Array();
    }
  }
 
  _createClass(Calendar, [{
    key: 'isValidEvent',
    value: function isValidEvent(event) {
      var isValid = event.isBetween(this._startTime, this._endTime);
 
      for (var i = 0; i < this._events.length && isValid; i++) {
        var e = this._events[i];
        isValid = !e.collide(event);
      }
 
      return isValid;
    }
  }, {
    key: 'addEvent',
    value: function addEvent(event) {
      if (this.isValidEvent(event)) {
        this._events.push(event);
      }
    }
  }, {
    key: 'startTime',
    get: function get() {
      return this._startTime.calendar();
    }
  }, {
    key: 'endTime',
    get: function get() {
      return this._endTime.calendar();
    }
  }, {
    key: 'events',
    get: function get() {
      return this._events;
    }
  }]);
 
  return Calendar;
})();
 
exports['default'] = Calendar;
module.exports = exports['default'];
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi9ob21lL3RyYXZpcy9idWlsZC9yb2RvbGZvMjQ4OC9ib29raW5nL3NyYy9tb2RlbHMvQ2FsZW5kYXIvaW5kZXguanMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7c0JBQ21CLFFBQVE7Ozs7cUJBQ1IsVUFBVTs7OztBQUU3QixJQUFNLGlCQUFpQixHQUFHLElBQUksY0FBYyxDQUFDLHdCQUF3QixDQUFDLENBQUM7O0lBRWpFLFFBQVE7QUFFRCxXQUZQLFFBQVEsR0FFa0U7cUVBQUosRUFBRTs7OEJBQTlELFNBQVM7UUFBVCxTQUFTLGtDQUFHLDBCQUFROzRCQUFFLE9BQU87UUFBUCxPQUFPLGdDQUFHLDBCQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxNQUFNLENBQUM7OzBCQUZqRSxRQUFROztBQUlWLFFBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsRUFBRTs7QUFFOUIsWUFBTSxpQkFBaUIsQ0FBQztLQUV6QixNQUFNOztBQUVMLFVBQUksQ0FBQyxVQUFVLEdBQUcsU0FBUyxDQUFDO0FBQzVCLFVBQUksQ0FBQyxRQUFRLEdBQUcsT0FBTyxDQUFDO0FBQ3hCLFVBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQztLQUM1QjtHQUNGOztlQWRHLFFBQVE7O1dBZ0JBLHNCQUFDLEtBQUssRUFBRTtBQUNsQixVQUFJLE9BQU8sR0FBRyxLQUFLLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDOztBQUU5RCxXQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxFQUFFLENBQUMsRUFBRSxFQUFFO0FBQ3ZELFlBQUksQ0FBQyxHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDeEIsZUFBTyxHQUFHLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQztPQUM3Qjs7QUFFRCxhQUFPLE9BQU8sQ0FBQztLQUNoQjs7O1dBRU8sa0JBQUMsS0FBSyxFQUFFO0FBQ2QsVUFBSSxJQUFJLENBQUMsWUFBWSxDQUFDLEtBQUssQ0FBQyxFQUFFO0FBQzVCLFlBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO09BQzFCO0tBQ0Y7OztTQUVZLGVBQUc7QUFDZCxhQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUSxFQUFFLENBQUM7S0FDbkM7OztTQUVVLGVBQUc7QUFDWixhQUFPLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxFQUFFLENBQUM7S0FDakM7OztTQUVTLGVBQUc7QUFDWCxhQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7S0FDckI7OztTQTNDRyxRQUFROzs7cUJBOENDLFFBQVEiLCJmaWxlIjoiL2hvbWUvdHJhdmlzL2J1aWxkL3JvZG9sZm8yNDg4L2Jvb2tpbmcvc3JjL21vZGVscy9DYWxlbmRhci9pbmRleC5qcyIsInNvdXJjZXNDb250ZW50IjpbIlxuaW1wb3J0IG1vbWVudCBmcm9tICdtb21lbnQnO1xuaW1wb3J0IEV2ZW50ICBmcm9tICcuLi9FdmVudCc7XG5cbmNvbnN0IGludmFsaWRSYW5nZUVycm9yID0gbmV3IFJlZmVyZW5jZUVycm9yKFwiSW52YWxpZCByYW5nZSBvZiBkYXRlc1wiKTtcblxuY2xhc3MgQ2FsZW5kYXIge1xuXG4gIGNvbnN0cnVjdG9yKHsgc3RhcnRUaW1lID0gbW9tZW50KCksIGVuZFRpbWUgPSBtb21lbnQoKS5hZGQoMSwgJ3llYXInKSB9ID0ge30pIHtcblxuICAgIGlmIChzdGFydFRpbWUuaXNBZnRlcihlbmRUaW1lKSkge1xuXG4gICAgICB0aHJvdyBpbnZhbGlkUmFuZ2VFcnJvcjtcblxuICAgIH0gZWxzZSB7XG5cbiAgICAgIHRoaXMuX3N0YXJ0VGltZSA9IHN0YXJ0VGltZTtcbiAgICAgIHRoaXMuX2VuZFRpbWUgPSBlbmRUaW1lO1xuICAgICAgdGhpcy5fZXZlbnRzID0gbmV3IEFycmF5KCk7XG4gICAgfVxuICB9XG5cbiAgaXNWYWxpZEV2ZW50KGV2ZW50KSB7XG4gICAgbGV0IGlzVmFsaWQgPSBldmVudC5pc0JldHdlZW4odGhpcy5fc3RhcnRUaW1lLCB0aGlzLl9lbmRUaW1lKTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgdGhpcy5fZXZlbnRzLmxlbmd0aCAmJiBpc1ZhbGlkOyBpKyspIHtcbiAgICAgIGxldCBlID0gdGhpcy5fZXZlbnRzW2ldO1xuICAgICAgaXNWYWxpZCA9ICFlLmNvbGxpZGUoZXZlbnQpO1xuICAgIH1cblxuICAgIHJldHVybiBpc1ZhbGlkO1xuICB9XG5cbiAgYWRkRXZlbnQoZXZlbnQpIHtcbiAgICBpZiAodGhpcy5pc1ZhbGlkRXZlbnQoZXZlbnQpKSB7XG4gICAgICB0aGlzLl9ldmVudHMucHVzaChldmVudCk7XG4gICAgfVxuICB9XG5cbiAgZ2V0IHN0YXJ0VGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fc3RhcnRUaW1lLmNhbGVuZGFyKCk7XG4gIH1cblxuICBnZXQgZW5kVGltZSgpIHtcbiAgICByZXR1cm4gdGhpcy5fZW5kVGltZS5jYWxlbmRhcigpO1xuICB9XG5cbiAgZ2V0IGV2ZW50cygpIHtcbiAgICByZXR1cm4gdGhpcy5fZXZlbnRzO1xuICB9XG59XG5cbmV4cG9ydCBkZWZhdWx0IENhbGVuZGFyO1xuIl19