Commit 2e140a6a by Albert (AJ) St. Aubin Committed by GitHub

Merge pull request #15569 from edx/staubina/ed-592_tests

Staubina/ed 592 tests
parents cc49c74a 427967ea
<section id="membership" class="idash-section active-section" aria-labelledby="header-membership">
<h3 class="hd hd-3" id="header-membership">Membership</h3>
<div class="member-lists-management membership-section" aria-live="polite">
<h3 class="hd hd-3">Course Team Management</h3>
<div class="request-response-error"></div>
<div class="wrapper-member-select">
<label>Select a course team role:
<select id="member-lists-selector" class="member-lists-selector">
<option value="staff">Staff</option>
<option value="instructor">Admin</option>
<option value="beta">Beta Testers</option>
<option value="Administrator">Discussion Admins</option>
<option value="Moderator">Discussion Moderators</option>
<option value="Group Moderator">Group Community TA</option>
<option value="Community TA">Discussion Community TA</option>
</select>
</label>
</div>
<div class="auth-list-container active" data-rolename="staff" data-display-name="Staff" data-info-text="
Course team members with the Staff role help you manage your course. Staff can enroll and unenroll learners, as well as modify their grades and access all course data. Staff also have access to your course in Studio and Insights. You can only give course team roles to enrolled users."
data-list-endpoint="/courses/course-v1:edx+ed202+2017_T3/instructor/api/list_course_role_members"
data-modify-endpoint="/courses/course-v1:edx+ed202+2017_T3/instructor/api/modify_access"
data-add-button-label="Add Staff">
<div class="member-list-widget">
<div class="header">
<div class="title"> Staff</div>
</div>
<div class="info">
Course team members with the Staff role help you manage your course. Staff can enroll and unenroll learners,
as well as modify their grades and access all course data. Staff also have access to your course in Studio and
Insights. You can only give course team roles to enrolled users.
</div>
<div class="member-list">
<table>
<thead>
<tr>
<th class="label" scope="column">Username</th>
<th class="label" scope="column">Email</th>
<th class="label" scope="column">Revoke access</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
<div class="bottom-bar">
<label>
<span class="label-text sr">Enter username or email</span>
<input type="text" name="add-field" class="add-field" placeholder="Enter username or email">
</label>
<input type="button" name="add" class="add" value="Add Staff">
</div>
</div>
</div>
<div class="auth-list-container" data-rolename="Group Moderator" data-display-name="Group Community TA"
data-info-text="
Group Community TAs are members of the community who help course teams moderate discussions. Group Community TAs see only posts by learners in their assigned group. They can edit or delete posts, clear flags, close and re-open threads, and endorse responses, but only for posts by learners in their group."
data-list-endpoint="/courses/course-v1:edx+ed202+2017_T3/instructor/api/list_forum_members"
data-modify-endpoint="/courses/course-v1:edx+ed202+2017_T3/instructor/api/update_forum_role_membership"
data-add-button-label="Add Group Community TA">
<div class="member-list-widget">
<div class="header">
<div class="title"> Group Community TA</div>
</div>
<div class="info">
Group Community TAs are members of the community who help course teams moderate discussions. Group Community
TAs see only posts by learners in their assigned group. They can edit or delete posts, clear flags, close and
re-open threads, and endorse responses, but only for posts by learners in their group.
</div>
<div class="member-list">
<table>
<thead>
<tr>
<th class="label" scope="column">Username</th>
<th class="label" scope="column">Email</th>
<th class="label" scope="column">Group</th>
<th class="label" scope="column">Revoke access</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
<div class="bottom-bar">
<label>
<span class="label-text sr">Enter username or email</span>
<input type="text" name="add-field" class="add-field" placeholder="Enter username or email">
</label>
<input type="button" name="add" class="add" value="Add Group Community TA">
</div>
</div>
</div>
<div class="auth-list-container" data-rolename="Community TA" data-display-name="Discussion Community TA"
data-info-text="
Community TAs are members of the community who help course teams moderate discussions. They can see posts by all learners, and can edit or delete posts, clear flags, close or re-open threads, and endorse responses. Their posts are marked as 'Community TA'. Only enrolled users can be added as Community TAs."
data-list-endpoint="/courses/course-v1:edx+ed202+2017_T3/instructor/api/list_forum_members"
data-modify-endpoint="/courses/course-v1:edx+ed202+2017_T3/instructor/api/update_forum_role_membership"
data-add-button-label="Add Community TA">
<div class="member-list-widget">
<div class="header">
<div class="title"> Discussion Community TA</div>
</div>
<div class="info">
Community TAs are members of the community who help course teams moderate discussions. They can see posts by
all learners, and can edit or delete posts, clear flags, close or re-open threads, and endorse responses.
Their posts are marked as 'Community TA'. Only enrolled users can be added as Community TAs.
</div>
<div class="member-list">
<table>
<thead>
<tr>
<th class="label" scope="column">Username</th>
<th class="label" scope="column">Email</th>
<th class="label" scope="column">Revoke access</th>
</tr>
</thead>
<tbody></tbody>
</table>
</div>
<div class="bottom-bar">
<label>
<span class="label-text sr">Enter username or email</span>
<input type="text" name="add-field" class="add-field" placeholder="Enter username or email">
</label>
<input type="button" name="add" class="add" value="Add Community TA">
</div>
</div>
</div>
</div>
</section>
......@@ -8,11 +8,14 @@ wrap in (-> ... apply) to defer evaluation
such that the value can be defined later than this assignment (file load order).
*/
(function() {
'use strict';
var AuthListWidget, BatchEnrollment, BetaTesterBulkAddition,
MemberListWidget, Membership, emailStudents, plantTimeout, statusAjaxError, enableAddButton,
var AuthListWidget,
Membership,
BatchEnrollment,
BetaTesterBulkAddition,
MemberListWidget,
emailStudents, plantTimeout, statusAjaxError, enableAddButton,
/* eslint-disable */
__hasProp = {}.hasOwnProperty,
__extends = function(child, parent) { for (var key in parent) { if (__hasProp.call(parent, key)) child[key] = parent[key]; } function ctor() { this.constructor = child; } ctor.prototype = parent.prototype; child.prototype = new ctor(); child.__super__ = parent.prototype; return child; };
......@@ -223,7 +226,7 @@ such that the value can be defined later than this assignment (file load order).
AuthListWidget.prototype.get_member_list = function(cb) {
var authlistwidgetgetmemberlist = this;
return $.ajax({
$.ajax({
type: 'POST',
dataType: 'json',
url: this.list_endpoint,
......@@ -1004,7 +1007,6 @@ such that the value can be defined later than this assignment (file load order).
this.$list_selector.change(function() {
var $opt, j, len1, ref1;
$opt = thismembership.$list_selector.children('option:selected');
if (!($opt.length > 0)) {
return;
}
......
/* global define, Membership */
define(['jquery',
'edx-ui-toolkit/js/utils/spec-helpers/ajax-helpers',
'js/instructor_dashboard/membership'],
function($, AjaxHelpers) {
'use strict';
describe('Membership.AuthListWidget', function() {
var membership, // eslint-disable-line no-unused-vars
changeSelectedList;
changeSelectedList = function(listName) {
var i, options;
options = document.getElementById('member-lists-selector').options;
for (i = 0; i < options.length; i++) {
if (options[i].value === listName) {
document.getElementById('member-lists-selector').selectedIndex = i;
$('select#member-lists-selector').trigger('change');
break;
}
}
};
beforeEach(function() {
var membershipMain, membershipTpl;
membershipMain = readFixtures('js/fixtures/instructor_dashboard/membership.html');
membershipTpl = readFixtures(
'templates/instructor/instructor_dashboard_2/membership-list-widget.underscore'
);
appendSetFixtures(
"<script type='text/template' id='membership-list-widget-tpl'>" + membershipTpl + '</script>' +
membershipMain
);
membership = new window.InstructorDashboard.sections.Membership($('#membership'));
});
it('binds the ajax call and the result will be success for Group Moderator', function() {
var requests = AjaxHelpers.requests(this),
data,
url = '/courses/course-v1:edx+ed202+2017_T3/instructor/api/list_forum_members';
data = {
course_id: 'course-v1:edx+ed202+2017_T3',
'Group Moderator': [{
email: 'verified@example.com',
first_name: '',
group_name: 'Verified',
last_name: '',
username: 'verified'
}],
division_scheme: 'enrollment_track'
};
changeSelectedList('Group Moderator');
AjaxHelpers.expectPostRequest(requests, url, 'rolename=Group+Moderator');
AjaxHelpers.respondWithJson(requests, data);
expect($('.auth-list-container.active').data('rolename')).toEqual('Group Moderator');
expect($('.request-response-error').text()).toEqual('');
// Both buttons should be enabled
expect($('.auth-list-container.active .add').attr('disabled')).toBe(undefined);
expect($('.auth-list-container.active .add-field').attr('disabled')).toBe(undefined);
});
it('When no discussions division scheme is selected error is shown and inputs are disabled', function() {
var requests = AjaxHelpers.requests(this),
data,
url = '/courses/course-v1:edx+ed202+2017_T3/instructor/api/list_forum_members';
data = {
course_id: 'course-v1:edx+ed202+2017_T3',
'Group Moderator': [{
email: 'verified@example.com',
first_name: '',
group_name: 'Verified',
last_name: '',
username: 'verified'
}],
division_scheme: 'none'
};
changeSelectedList('Group Moderator');
AjaxHelpers.expectPostRequest(requests, url, 'rolename=Group+Moderator');
AjaxHelpers.respondWithJson(requests, data);
expect($('.auth-list-container.active').data('rolename')).toEqual('Group Moderator');
// Error message is shown.
expect($('.request-response-error').text()).toEqual('This role requires a divided discussions scheme.');
// Both buttons should be disabled
expect($('.auth-list-container.active .add').attr('disabled')).toBe('disabled');
expect($('.auth-list-container.active .add-field').attr('disabled')).toBe('disabled');
});
});
});
......@@ -306,6 +306,21 @@
exports: 'js/instructor_dashboard/certificates',
deps: ['jquery', 'gettext', 'underscore']
},
'js/instructor_dashboard/membership': {
exports: 'js/instructor_dashboard/membership',
deps: ['jquery', 'underscore'],
init: function() {
// Set global variables that the util code is expecting to be defined
require([ // eslint-disable-line global-require
'edx-ui-toolkit/js/utils/html-utils',
'edx-ui-toolkit/js/utils/string-utils'
], function(HtmlUtils, StringUtils) {
window.edx = window.edx || {};
window.edx.HtmlUtils = HtmlUtils;
window.edx.StringUtils = StringUtils;
});
}
},
// LMS class loaded explicitly until they are converted to use RequireJS
'js/student_account/account': {
exports: 'js/student_account/account',
......@@ -341,6 +356,7 @@
exports: 'edx.instructor_dashboard.ecommerce.ExpiryCouponView',
deps: ['backbone', 'jquery', 'underscore']
},
'js/models/notification': {
exports: 'NotificationModel',
deps: ['backbone']
......@@ -738,6 +754,7 @@
'js/spec/instructor_dashboard/certificates_invalidation_spec.js',
'js/spec/instructor_dashboard/certificates_spec.js',
'js/spec/instructor_dashboard/ecommerce_spec.js',
'js/spec/instructor_dashboard/membership_auth_spec.js',
'js/spec/instructor_dashboard/student_admin_spec.js',
'js/spec/learner_dashboard/collection_list_view_spec.js',
'js/spec/learner_dashboard/program_card_view_spec.js',
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment