Commit ab945243 by Ned Batchelder Committed by GitHub

Merge pull request #13837 from edx/release

Release to master
parents 413cd6e6 afcf8921
......@@ -95,7 +95,7 @@
// end of Annotation tool files
// externally hosted files
mathjax: '//cdn.mathjax.org/mathjax/2.6-latest/MathJax.js?config=TeX-MML-AM_SVG&delayStartupUntil=configured', // eslint-disable-line max-len
mathjax: '//cdn.mathjax.org/mathjax/2.7-latest/MathJax.js?config=TeX-MML-AM_SVG&delayStartupUntil=configured', // eslint-disable-line max-len
'youtube': [
// youtube URL does not end in '.js'. We add '?noext' to the path so
// that require.js adds the '.js' to the query component of the URL,
......
......@@ -55,7 +55,7 @@
'domReady': 'xmodule_js/common_static/js/vendor/domReady',
'URI': 'xmodule_js/common_static/js/vendor/URI.min',
'mock-ajax': 'xmodule_js/common_static/js/vendor/mock-ajax',
mathjax: '//cdn.mathjax.org/mathjax/2.6-latest/MathJax.js?config=TeX-MML-AM_SVG&delayStartupUntil=configured', // eslint-disable-line max-len
mathjax: '//cdn.mathjax.org/mathjax/2.7-latest/MathJax.js?config=TeX-MML-AM_SVG&delayStartupUntil=configured', // eslint-disable-line max-len
'youtube': '//www.youtube.com/player_api?noext',
'coffee/src/ajax_prefix': 'xmodule_js/common_static/coffee/src/ajax_prefix',
'js/spec/test_utils': 'js/spec/test_utils'
......
......@@ -48,7 +48,7 @@
'draggabilly': 'xmodule_js/common_static/js/vendor/draggabilly',
'domReady': 'xmodule_js/common_static/js/vendor/domReady',
'URI': 'xmodule_js/common_static/js/vendor/URI.min',
mathjax: '//cdn.mathjax.org/mathjax/2.6-latest/MathJax.js?config=TeX-MML-AM_SVG&delayStartupUntil=configured', // eslint-disable-line max-len
mathjax: '//cdn.mathjax.org/mathjax/2.7-latest/MathJax.js?config=TeX-MML-AM_SVG&delayStartupUntil=configured', // eslint-disable-line max-len
'youtube': '//www.youtube.com/player_api?noext',
'coffee/src/ajax_prefix': 'xmodule_js/common_static/coffee/src/ajax_prefix'
},
......
......@@ -975,7 +975,7 @@ div.problem .action {
}
.submit {
@include margin-right($baseline / 2);
float: left;
@include float(left);
}
}
......
......@@ -42,6 +42,6 @@ if (typeof MathJax === 'undefined') {
});
};
};
vendorScript.src = 'https://cdn.mathjax.org/mathjax/2.6-latest/MathJax.js?config=TeX-MML-AM_SVG';
vendorScript.src = 'https://cdn.mathjax.org/mathjax/2.7-latest/MathJax.js?config=TeX-MML-AM_SVG';
document.body.appendChild(vendorScript);
}
......@@ -76,4 +76,4 @@
<!-- This must appear after all mathjax-config blocks, so it is after the imports from the other templates.
It can't be run through static.url because MathJax uses crazy url introspection to do lazy loading of
MathJax extension libraries -->
<script type="text/javascript" src="https://cdn.mathjax.org/mathjax/2.6-latest/MathJax.js?config=TeX-MML-AM_SVG"></script>
<script type="text/javascript" src="https://cdn.mathjax.org/mathjax/2.7-latest/MathJax.js?config=TeX-MML-AM_SVG"></script>
......@@ -6,7 +6,7 @@ Teams pages.
from common.test.acceptance.pages.lms.course_page import CoursePage
from common.test.acceptance.pages.lms.discussion import InlineDiscussionPage
from common.test.acceptance.pages.common.paging import PaginatedUIMixin
from common.test.acceptance.pages.common.utils import confirm_prompt
from common.test.acceptance.pages.common.utils import confirm_prompt, click_css
from common.test.acceptance.pages.lms.fields import FieldsMixin
......@@ -502,7 +502,7 @@ class TeamPage(CoursePage, PaginatedUIMixin, BreadcrumbsMixin):
def click_leave_team_link(self, remaining_members=0, cancel=False):
""" Click on Leave Team link"""
self.q(css='.leave-team-link').first.click()
click_css(self, '.leave-team-link', require_notification=False)
confirm_prompt(self, cancel, require_notification=False)
if cancel is False:
......
......@@ -1042,8 +1042,21 @@ class CreateTeamTest(TeamFormActions):
Then I should see the error message and highlighted fields.
"""
self.verify_and_navigate_to_create_team_page()
self.team_management_page.submit_form()
# `submit_form` clicks on a button, but that button doesn't always
# have the click event handler registered on it in time. That's why
# this test is flaky. Unfortunately, I don't know of a straightforward
# way to write something that waits for that event handler to be bound
# to the button element. So I used time.sleep as well, even though
# the bok choy docs explicitly ask us not to:
# http://bok-choy.readthedocs.io/en/latest/guidelines.html
# Sorry! For the story to address this anti-pattern, see TNL-5820
time.sleep(0.5)
self.team_management_page.submit_form()
self.team_management_page.wait_for(
lambda: self.team_management_page.validation_message_text,
"Validation message text never loaded."
)
self.assertEqual(
self.team_management_page.validation_message_text,
'Check the highlighted fields below and try again.'
......@@ -1150,6 +1163,13 @@ class CreateTeamTest(TeamFormActions):
self.assertTrue(self.browse_teams_page.get_pagination_header_text().startswith('Showing 0 out of 0 total'))
self.verify_and_navigate_to_create_team_page()
# We add a sleep here to allow time for the click event handler to bind
# to the cancel button. Using time.sleep in bok-choy tests is,
# generally, an anti-pattern. So don't copy this :).
# For the story to address this anti-pattern, see TNL-5820
time.sleep(0.5)
self.team_management_page.cancel_team()
self.assertTrue(self.browse_teams_page.is_browser_on_page())
......@@ -1940,6 +1960,13 @@ class TeamPageTest(TeamsTabBase):
}
]
with self.assert_events_match_during(event_filter=self.only_team_events, expected_events=expected_events):
# I think we're seeing the same problem that we're seeing in
# CreateTeamTest.test_user_can_see_error_message_for_missing_data.
# We click on the "leave team" link after it's loaded, but before
# its JavaScript event handler is added. Adding this sleep gives
# enough time for that event handler to bind to the link. Sorry!
# For the story to address this anti-pattern, see TNL-5820
time.sleep(0.5)
self.team_page.click_leave_team_link()
self.assert_team_details(num_members=0, is_member=False)
self.assertTrue(self.team_page.join_team_button_present)
......
......@@ -12,7 +12,11 @@ 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;
MemberListWidget, Membership, emailStudents, plantTimeout, statusAjaxError,
/* 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; };
/* eslint-enable */
plantTimeout = function() {
return window.InstructorDashboard.util.plantTimeout.apply(this, arguments);
......@@ -38,10 +42,8 @@ such that the value can be defined later than this assignment (file load order).
add_btn_label: 'Add Member',
add_handler: function() {}
});
templateHtml = $('#member-list-widget-template').html();
edx.HtmlUtils.setHtml(
this.$container, window.Mustache.render(templateHtml, edx.HtmlUtils.HTML(memberListParams))
);
templateHtml = window.Mustache.render($('#member-list-widget-template').html(), memberListParams);
edx.HtmlUtils.setHtml(this.$container, edx.HtmlUtils.HTML(templateHtml));
this.$('input[type="button"].add').click(function() {
condition = typeof memberListParams.add_handler === 'function';
return condition ? memberListParams.add_handler(memberlistwidget.$('.add-field').val()) : undefined;
......@@ -64,7 +66,7 @@ such that the value can be defined later than this assignment (file load order).
item = rowArray[i];
$td = $('<td>');
if (item instanceof jQuery) {
edx.HtmlUtils.append($td, item);
edx.HtmlUtils.append($td, edx.HtmlUtils.HTML(item));
} else {
$td.text(item);
}
......@@ -86,13 +88,14 @@ such that the value can be defined later than this assignment (file load order).
return memberListWidget;
}());
AuthListWidget = (function() {
function authListWidget($container, rolename, $errorSection) {
AuthListWidget = (function(_super) {
__extends(AuthListWidget, _super); // eslint-disable-line no-use-before-define
function AuthListWidget($container, rolename, $errorSection) { // eslint-disable-line no-shadow
var msg,
authlistwidget = this;
this.rolename = rolename;
this.$errorSection = $errorSection;
authListWidget.super.constructor.call(this, $container, {
AuthListWidget.__super__.constructor.call(this, $container, { // eslint-disable-line no-underscore-dangle
title: $container.data('display-name'),
info: $container.data('info-text'),
labels: [gettext('Username'), gettext('Email'), gettext('Revoke access')],
......@@ -112,13 +115,13 @@ such that the value can be defined later than this assignment (file load order).
this.reload_list();
}
authListWidget.prototype.re_view = function() {
AuthListWidget.prototype.re_view = function() {
this.clear_errors();
this.clear_input();
return this.reload_list();
};
authListWidget.prototype.add_handler = function(input) {
AuthListWidget.prototype.add_handler = function(input) {
var authlistwidgetaddhandler = this;
if ((input != null) && input !== '') {
return this.modify_member_access(input, 'allow', function(error) {
......@@ -134,7 +137,7 @@ such that the value can be defined later than this assignment (file load order).
}
};
authListWidget.prototype.reload_list = function() {
AuthListWidget.prototype.reload_list = function() {
var authlistwidgetreloadlist = this;
return this.get_member_list(function(error, memberList) {
if (error !== null) {
......@@ -163,19 +166,19 @@ such that the value can be defined later than this assignment (file load order).
});
};
authListWidget.prototype.clear_errors = function() {
AuthListWidget.prototype.clear_errors = function() {
var ref, result;
result = (this.$error_section) != null ? ref.text('') : undefined;
return result;
};
authListWidget.prototype.show_errors = function(msg) {
AuthListWidget.prototype.show_errors = function(msg) {
var ref, result;
result = (this.$error_section) != null ? ref.text(msg) : undefined;
return result;
};
authListWidget.prototype.get_member_list = function(cb) {
AuthListWidget.prototype.get_member_list = function(cb) {
var authlistwidgetgetmemberlist = this;
return $.ajax({
type: 'POST',
......@@ -190,7 +193,7 @@ such that the value can be defined later than this assignment (file load order).
});
};
authListWidget.prototype.modify_member_access = function(uniqueStudentIdentifier, action, cb) {
AuthListWidget.prototype.modify_member_access = function(uniqueStudentIdentifier, action, cb) {
var authlistwidgetmemberaccess = this;
return $.ajax({
type: 'POST',
......@@ -210,7 +213,7 @@ such that the value can be defined later than this assignment (file load order).
});
};
authListWidget.prototype.member_response = function(data) {
AuthListWidget.prototype.member_response = function(data) {
var msg;
this.clear_errors();
this.clear_input();
......@@ -233,7 +236,7 @@ such that the value can be defined later than this assignment (file load order).
}
};
return authListWidget;
return AuthListWidget;
}(MemberListWidget));
this.AutoEnrollmentViaCsv = (function() {
......
......@@ -51,7 +51,7 @@
'squire': 'xmodule_js/common_static/js/vendor/Squire',
'jasmine-imagediff': 'xmodule_js/common_static/js/vendor/jasmine-imagediff',
'domReady': 'xmodule_js/common_static/js/vendor/domReady',
mathjax: '//cdn.mathjax.org/mathjax/2.6-latest/MathJax.js?config=TeX-MML-AM_SVG&delayStartupUntil=configured', // eslint-disable-line max-len
mathjax: '//cdn.mathjax.org/mathjax/2.7-latest/MathJax.js?config=TeX-MML-AM_SVG&delayStartupUntil=configured', // eslint-disable-line max-len
'youtube': '//www.youtube.com/player_api?noext',
'coffee/src/ajax_prefix': 'xmodule_js/common_static/coffee/src/ajax_prefix',
'js/instructor_dashboard/student_admin': 'js/instructor_dashboard/student_admin',
......
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