diff --git a/tests/js/doctools.js b/tests/js/doctools.js
index 8533f7148..c569bcb8a 100644
--- a/tests/js/doctools.js
+++ b/tests/js/doctools.js
@@ -1,32 +1,86 @@
var DOCUMENTATION_OPTIONS = {};
-describe('urldecode', function() {
- it('should correctly decode URLs and replace `+`s with a spaces', function() {
- var test_encoded_string =
- '%D1%88%D0%B5%D0%BB%D0%BB%D1%8B+%D1%88%D0%B5%D0%BB%D0%BB%D1%8B';
- var test_decoded_string = 'шеллы шеллы';
- expect(jQuery.urldecode(test_encoded_string)).toEqual(test_decoded_string);
+describe('jQuery extensions', function() {
+
+ describe('urldecode', function() {
+
+ it('should correctly decode URLs and replace `+`s with a spaces', function() {
+ var test_encoded_string =
+ '%D1%88%D0%B5%D0%BB%D0%BB%D1%8B+%D1%88%D0%B5%D0%BB%D0%BB%D1%8B';
+ var test_decoded_string = 'шеллы шеллы';
+ expect(jQuery.urldecode(test_encoded_string)).toEqual(test_decoded_string);
+ });
+
});
+ describe('getQueryParameters', function() {
+ var paramString = '?q=test+this&check_keywords=yes&area=default';
+ var queryParamObject = {
+ area: ['default'],
+ check_keywords: ['yes'],
+ q: ['test this']
+ };
+
+ it('should correctly create query parameter object from string', function() {
+ expect(jQuery.getQueryParameters(paramString)).toEqual(queryParamObject);
+ });
+
+ it('should correctly create query param object from URL params', function() {
+ history.pushState({}, '_', window.location + paramString);
+ expect(jQuery.getQueryParameters()).toEqual(queryParamObject);
+ });
+
+ });
+
+ describe('highlightText', function() {
+
+ var cyrillicTerm = 'шеллы';
+ var umlautTerm = 'gänsefüßchen';
+
+ it('should highlight text incl. special characters correctly in HTML', function() {
+ var highlightTestSpan =
+ jQuery('This is the шеллы and Gänsefüßchen test!');
+ jQuery(document.body).append(highlightTestSpan);
+ highlightTestSpan.highlightText(cyrillicTerm, 'highlighted');
+ highlightTestSpan.highlightText(umlautTerm, 'highlighted');
+ var expectedHtmlString =
+ 'This is the шеллы and ' +
+ 'Gänsefüßchen test!';
+ expect(highlightTestSpan.html()).toEqual(expectedHtmlString);
+ });
+
+ it('should highlight text incl. special characters correctly in SVG', function() {
+ var highlightTestSvg = jQuery(
+ '' +
+ '' +
+ '');
+ $("#svg-highlight-test").html($("#svg-highlight-test").html());
+ jQuery(document.body).append(highlightTestSvg);
+ highlightTestSvg.highlightText(cyrillicTerm, 'highlighted');
+ highlightTestSvg.highlightText(umlautTerm, 'highlighted');
+ var expectedSvgString =
+ '';
+ expect(highlightTestSvg.html()).toEqual(expectedSvgString);
+ });
+
+ });
+
+
});
-describe('getQueryParameters', function() {
- var paramString = '?q=test+this&check_keywords=yes&area=default';
- var queryParamObject = {
- area: ['default'],
- check_keywords: ['yes'],
- q: ['test this']
- };
-
- it('should correctly create query parameter object from string', function() {
- expect(jQuery.getQueryParameters(paramString)).toEqual(queryParamObject);
- });
-
- it('should correctly create query param object from URL params', function() {
- history.pushState({}, '_', window.location + paramString);
- expect(jQuery.getQueryParameters()).toEqual(queryParamObject);
- });
-
-});