wallet-core/test/test_jquery.js
Florian Dold d519415433 Squashed 'thirdparty/URI.js/' content from commit b77c167
git-subtree-dir: thirdparty/URI.js
git-subtree-split: b77c167bc201575956ad409333ff032e504b8044
2016-10-10 03:47:49 +02:00

141 lines
5.3 KiB
JavaScript

(function() {
'use strict';
/*global document, URI, $, test, equal, ok */
module('jQuery.URI', {
setup: function() {
var links = [
'<a href="http://example.org/">an HTTP link</a>',
'<a href="https://example.org/">an HTTPS link</a>',
'<a href="http://example.org/so)me.pdf">some pdf</a>',
'<a href="http://example.org/hello/world.html">hello world</a>',
'<a href="ftp://localhost/one/two/three/file.ext">directories</a>',
'<a href="ftp://localhost/one/two/file.ext">directories</a>',
'<a href="mailto:mail@example.org?subject=Hello+World">Mail me</a>',
'<a href="javascript:alert(\'ugly!\');">some javascript</a>',
'<a href="#anchor">jump to anchor</a>',
'<img src="/dontexist.jpg" alt="some jpeg">',
'<img src="/dontexist.svg" alt="some svg">',
'<form method="post" action="/some/script.php"></form>'
];
$('<div id="testestest">' + links.join('') + '</div>')
.appendTo(document.body);
$('<div>foo</div>')
.appendTo(document.body);
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = '/nonexistant.js';
document.getElementById('testestest').appendChild(script);
},
teardown: function() {
var t = $('#testestest');
t.next().remove();
t.remove();
}
});
test('.uri()', function() {
var $links = $('#testestest'),
$first = $links.children().first(),
uri = $first.uri(),
_uri = URI('/hello.world');
ok(uri !== _uri, 'different URI instances');
var __uri = $first.uri(_uri);
ok(uri !== _uri, 'different URI instances');
ok(uri === __uri, 'same URI instances');
equal($first.attr('href'), _uri.toString(), 'equal URI');
});
test('filtering with :uri()', function() {
var $links = $('#testestest');
// find using accessor and "begins with" comparison
equal($('a:uri(href^=#anc)').length, 1, '$(selector) Anchor Link');
equal($links.find(':uri(href^=#anc)').length, 1, '.find(selector) Anchor Link');
// find using accessor and "ends with" comparison
equal($(':uri(href$=.css)').length, 1, ':uri(href$=.css)');
// find using accessor and "contains" comparison
equal($(':uri(href *= /hello/)').length, 1, ':uri(href *= /hello/)');
// find using accessor and "equals" comparison
equal($links.find(':uri(protocol=https)').length, 1, ':uri(protocol=https)');
equal($links.find(':uri(protocol=http)').length, 3, ':uri(protocol=http)');
// directory match with trailing slash
equal($links.find(':uri(directory *= /two/)').length, 2, ':uri(directory *= /two/)');
// find using URI.is()
equal($links.find(':uri(relative)').length, 5, ':uri(relative)');
equal($links.find(':uri(is:relative)').length, 5, ':uri(is:relative)');
equal($links.find(':uri(is: relative)').length, 5, ':uri(is:relative)');
// find using URI.equal()
// This syntax breaks Sizzle, probably because it's looking for a nested pseudo ":http"
//equal($links.find(':uri(equals:http://example.org/hello/foo/../world.html)').length, 1, ':uri(equals:$url$)');
equal($links.find(':uri(equals:"http://example.org/hello/foo/../world.html")').length, 1, ':uri(equals:$url$)');
equal($links.find(':uri(equals: "http://example.org/hello/foo/../world.html")').length, 1, ':uri(equals:$url$)');
// find URNs
equal($links.find(':uri(urn)').length, 2, ':uri(urn)');
// .is()
equal($links.children('script').is(':uri(suffix=js)'), true, '.is(\':uri(suffix=js)\')');
equal($links.children('form').is(':uri(suffix=php)'), true, '.is(\':uri(suffix=php)\')');
// .has()
equal($('div').has(':uri(suffix=js)').length, 1, '.has(\':uri(suffix=js)\')');
});
test('.attr("href")', function() {
var $links = $('#testestest'),
$first = $links.children().first(),
first = $first.get(0),
uri = $first.uri(),
href = function(elem) {
return elem.getAttribute('href');
};
if (!$.support.hrefNormalized) {
href = function(elem) {
return elem.getAttribute('href', 2);
};
}
ok(uri instanceof URI, 'instanceof URI');
equal(href(first), uri.toString(), 'URI equals href');
// test feedback to DOM element
uri.hostname('example.com');
ok($first.uri() === uri, 'URI persisted');
equal(href(first), uri.toString(), 'transparent href update');
// test feedback from DOM element
$first.attr('href', 'http://example.net/');
ok($first.uri() === uri, 'URI persisted');
equal(href(first), uri.toString(), 'transparent href update');
});
test('.attr("uri:accessor")', function() {
var $links = $('#testestest'),
$first = $links.children().first(),
uri = $first.uri(),
href = function(elem) {
return elem.getAttribute('href');
};
if (!$.support.hrefNormalized) {
href = function(elem) {
return elem.getAttribute('href', 2);
};
}
equal($first.attr('uri:hostname'), 'example.org', 'reading uri:hostname');
$first.attr('uri:hostname', 'example.com');
equal($first.attr('uri:hostname'), 'example.com', 'changed uri:hostname');
equal($first.is(':uri(hostname=example.com)'), true, ':uri() after changed uri:hostname');
ok($first.uri() === uri, 'URI persisted');
});
})();