| <!doctype html> |
| <!-- |
| @license |
| Copyright (c) 2015 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-lite.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"> |
| </head> |
| <body> |
| |
| <test-fixture id="BasicQueryParams"> |
| <template> |
| <iron-query-params></iron-query-params> |
| </template> |
| </test-fixture> |
| |
| <script> |
| 'use strict'; |
| |
| suite('<iron-query-params>', function () { |
| |
| var paramsElem; |
| setup(function() { |
| paramsElem = fixture('BasicQueryParams'); |
| }); |
| |
| test('basic functionality with ?key=value params', function() { |
| // Check initialization |
| expect(paramsElem.paramsString).to.be.eq(''); |
| expect(paramsElem.paramsObject).to.deep.eq({}); |
| |
| // Check the mapping from paramsString to paramsObject. |
| paramsElem.paramsString = 'greeting=hello&target=world'; |
| expect(paramsElem.paramsObject).to.deep.equal( |
| {greeting: 'hello', target: 'world'}); |
| |
| // Check the mapping from paramsObject back to paramsString. |
| paramsElem.set('paramsObject.another', 'key'); |
| expect(paramsElem.paramsString).to.be.equal( |
| 'greeting=hello&target=world&another=key'); |
| }); |
| test('encoding of params', function() { |
| var mappings = [ |
| { |
| string: 'a=b', |
| object: {'a': 'b'} |
| }, |
| { |
| string: 'debug&ok', |
| object: {'debug': '', 'ok': ''} |
| }, |
| { |
| string: 'monster%20kid%3A=%F0%9F%98%BF"es=%27%27', |
| object: {'monster kid:': '😿', 'quotes': '\'\''} |
| }, |
| { |
| string: 'yes%2C%20ok?%20what%20is%20up%20with%20%CB%9Athiiis%CB%9A=%E2%98%83', |
| object: {'yes, ok? what is up with ˚thiiis˚': '☃'} |
| }, |
| ]; |
| |
| mappings.forEach(function(mapping) { |
| // Clear |
| paramsElem.paramsObject = {}; |
| expect(paramsElem.paramsString).to.be.equal(''); |
| |
| // Test going from string to object |
| paramsElem.paramsString = mapping.string; |
| expect(paramsElem.paramsObject).to.deep.equal(mapping.object); |
| |
| // Clear again. |
| paramsElem.paramsObject = {}; |
| expect(paramsElem.paramsString).to.be.equal(''); |
| |
| // Test going from object to string |
| paramsElem.paramsObject = mapping.object; |
| expect(paramsElem.paramsString).to.be.equal(mapping.string); |
| }); |
| }); |
| test('query strings with alternative encodings', function() { |
| // Check the mapping for querystrings with + instead of %20. |
| paramsElem.paramsString = 'key=value+with+spaces'; |
| expect(paramsElem.paramsObject).to.deep.equal( |
| {key: 'value with spaces'}); |
| }); |
| }); |
| |
| </script> |
| </body> |