Code coverage report for src/components/course-settings/remove-teacher.cjsx

Statements: 66.67% (18 / 27)      Branches: 25% (1 / 4)      Functions: 42.86% (3 / 7)      Lines: 66.67% (18 / 27)      Ignored: none     

All files » src/components/course-settings/ » remove-teacher.cjsx
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                                         54× 54×                                       54× 54×               54× 54×               54×                      
var AsyncButton, BS, CourseActions, CourseStore, Icon, Name, React, TeacherRosterActions, TeacherRosterStore, WARN_REMOVE_CURRENT, _, ref, ref1;
 
React = require('react');
 
BS = require('react-bootstrap');
 
_ = require('underscore');
 
ref = require('../../flux/teacher-roster'), TeacherRosterStore = ref.TeacherRosterStore, TeacherRosterActions = ref.TeacherRosterActions;
 
ref1 = require('../../flux/course'), CourseStore = ref1.CourseStore, CourseActions = ref1.CourseActions;
 
Icon = require('../icon');
 
Name = require('../name');
 
AsyncButton = require('openstax-react-components').AsyncButton;
 
WARN_REMOVE_CURRENT = 'If you remove yourself from the course you will be redirected to the dashboard.';
 
module.exports = React.createClass({
  displayName: 'RemoveTeacherLink',
  propTypes: {
    teacher: React.PropTypes.object.isRequired,
    courseRoles: React.PropTypes.array.isRequired,
    courseId: React.PropTypes.string.isRequired
  },
  contextTypes: {
    router: React.PropTypes.func
  },
  isRemovalCurrentTeacher: function() {
    var role;
    return role = _.chain(this.props.courseRoles).pluck('id').contains(this.props.teacher.role_id).value();
  },
  goToDashboard: function() {
    return TeacherRosterStore.once('deleted', (function(_this) {
      return function() {
        return _this.context.router.transitionTo('dashboard');
      };
    })(this));
  },
  performDeletion: function() {
    var courseId;
    courseId = this.props.courseId;
    TeacherRosterActions["delete"](this.props.teacher.id, courseId);
    if (this.isRemovalCurrentTeacher()) {
      return this.goToDashboard();
    } else {
      return CourseActions.load(courseId);
    }
  },
  confirmPopOver: function() {
    var removeButton, title;
    removeButton = React.createElement(AsyncButton, {
      "bsStyle": 'danger',
      "onClick": this.performDeletion,
      "isWaiting": TeacherRosterStore.isDeleting(this.props.courseId),
      "waitingText": 'Removing Instructor…'
    }, React.createElement(Icon, {
      "type": 'ban'
    }), " Remove");
    title = React.createElement("span", null, "Remove ", React.createElement(Name, React.__spread({}, this.props.teacher)), "?");
    return React.createElement(BS.Popover, React.__spread({
      "className": 'teacher-remove',
      "title": title
    }, this.props), removeButton, React.createElement("div", {
      "className": 'warning'
    }, (this.isRemovalCurrentTeacher() ? WARN_REMOVE_CURRENT : void 0)));
  },
  render: function() {
    return React.createElement(BS.OverlayTrigger, {
      "rootClose": true,
      "trigger": 'click',
      "placement": 'left',
      "overlay": this.confirmPopOver()
    }, React.createElement("a", null, React.createElement(Icon, {
      "type": 'ban'
    }), " Remove"));
  }
});