blob: 9518d1755fc300ed6aeab5609dcfe19f31b5e12e [file] [log] [blame]
<!doctype html>
<!--
@license
Copyright (c) 2016 The Polymer Project Authors. All rights reserved.
This code may only be used under the BSD style license found at http://polymer.github.io/LICENSE.txt
The complete set of authors may be found at http://polymer.github.io/AUTHORS.txt
The complete set of contributors may be found at http://polymer.github.io/CONTRIBUTORS.txt
Code distributed by Google as part of the polymer project is also
subject to an additional IP rights grant found at http://polymer.github.io/PATENTS.txt
-->
<html>
<head>
<title>iron-location</title>
<script src="../../webcomponentsjs/webcomponents.js"></script>
<script src="../../web-component-tester/browser.js"></script>
<link rel="import" href="../../polymer/polymer.html">
<link rel="import" href="../../promise-polyfill/promise-polyfill.html">
<link rel="import" href="../iron-query-params.html">
<link rel="import" href="../iron-location.html">
</head>
<body>
<dom-module id="integration-element">
<template>
<iron-location
id="location"
path="{{path}}"
query="{{query}}"
hash="{{hash}}">
</iron-location>
<iron-query-params
id="queryParams"
params-string="{{query}}"
params-object="{{queryParams}}">
</iron-query-params>
</template>
<script>
HTMLImports.whenReady(function() {
Polymer({
is: 'integration-element'
});
});
</script>
</dom-module>
<test-fixture id="Integration">
<template>
<integration-element></integration-element>
</template>
</test-fixture>
<script>
'use strict';
suite('Integration tests', function () {
var integration;
var ironLocation;
var ironQueryParams;
setup(function() {
integration = fixture('Integration');
ironLocation = integration.$.location;
ironQueryParams = integration.$.queryParams;
});
test('propagations from location to iqp', function() {
var queryEncodingExamples = {
'foo': '?foo',
'': '',
'foo bar': '?foo%20bar',
'foo#bar': '?foo%23bar',
'foo?bar': '?foo?bar',
'/foo\'bar\'baz': ['?/foo%27bar%27baz', '?/foo\'bar\'baz'],
'foo/bar/baz': '?foo/bar/baz'
};
for (var plainTextQuery in queryEncodingExamples) {
var encodedQueries = queryEncodingExamples[plainTextQuery];
var ironLocationQuery = encodedQueries;
if (typeof encodedQueries === 'string') {
encodedQueries = [encodedQueries];
ironLocationQuery = [ironLocationQuery.substring(1)];
} else {
ironLocationQuery = ironLocationQuery.map(function(value) {
return value.substring(1);
});
}
ironLocation.query = plainTextQuery;
expect(encodedQueries).to.contain(window.location.search);
expect(ironLocationQuery).to.contain(ironLocation.query);
expect(ironLocationQuery).to.contain(ironQueryParams.paramsString);
if (plainTextQuery) {
expect('').to.be.equal(ironQueryParams.paramsObject[plainTextQuery])
} else {
expect(ironQueryParams.paramsObject[plainTextQuery]).to.be.undefined;
}
}
});
test('propagations from iqp to location', function() {
var queryEncodingExamples = {
'foo': '?foo',
'': '',
'foo bar': '?foo%20bar',
'foo#bar': '?foo%23bar',
'foo?bar': '?foo?bar',
'/foo\'bar\'baz': ['?/foo%27bar%27baz', '?/foo\'bar\'baz'],
'foo/bar/baz': '?foo/bar/baz'
};
for (var plainTextQuery in queryEncodingExamples) {
var encodedQueries = queryEncodingExamples[plainTextQuery];
var ironLocationQuery = encodedQueries;
if (typeof encodedQueries === 'string') {
encodedQueries = [encodedQueries];
ironLocationQuery = [ironLocationQuery.substring(1)];
} else {
ironLocationQuery = ironLocationQuery.map(function(value) {
return value.substring(1);
});
}
var newParamsObject = {};
newParamsObject[plainTextQuery] = '';
ironQueryParams.paramsObject = newParamsObject;
expect(encodedQueries).to.contain(window.location.search);
expect(ironLocationQuery).to.contain(ironLocation.query);
}
});
});
</script>
</body>