basic.html 3.47 KB
<!doctype html>
<!--
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-media-query-basic</title>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">

    <script src="../../webcomponentsjs/webcomponents-lite.js"></script>
    <script src="../../web-component-tester/browser.js"></script>
    <link rel="import" href="../iron-media-query.html">
    
  </head>
  <body>

    <test-fixture id="basic">
      <template>
        <iron-media-query></iron-media-query>
      </template>
    </test-fixture>

    <script>

      suite('basic', function() {
        var mq;

        suite('set query with different values', function() {
          setup(function () {
            mq = fixture('basic');
          });

          test('small min-width value', function() {
            mq.query = '(min-width: 1px)';
            assert.equal(mq.queryMatches, true);
          });

          test('large min-width value', function() {
            mq.query = '(min-width: 10000px)';
            assert.equal(mq.queryMatches, false);
          });

          test('small max-width value', function() {
            mq.query = '(max-width: 1px)';
            assert.equal(mq.queryMatches, false);
          });

          test('large max-width value', function() {
            mq.query = '(max-width: 10000px)';
            assert.equal(mq.queryMatches, true);
          });

          test('automatically wrap with parens', function() {
            mq.query = 'min-width: 1px';
            assert.equal(mq.queryMatches, true);
          });

          suite('`full` attribute', function() {
            test('media features without wrapping parentheses no longer match', function() {
              mq.full = true;
              mq.query = 'min-width: 1px';
              assert.equal(mq.queryMatches, false);
            });

            test('media queries with both types and features match', function() {
              mq.full = true;
              mq.query = 'all and (min-width: 1px)';
              assert.equal(mq.queryMatches, true);
            });
          });

          suite('query does not activate on empty string or null', function() {

            test('empty string', function() {
              mq.query = '';
              assert.notOk(mq._mq);
            });

            test('null', function() {
              mq.query = null;
              assert.notOk(mq._mq);
            });

          });

          test('media query destroys on detach', function() {
            mq.query = '(max-width: 800px)';
            mq.parentNode.removeChild(mq);
            Polymer.dom.flush();
            assert.notOk(mq._mq);
          });

          test('media query re-enables on attach', function() {
            mq.query = '(max-width: 800px)';
            var parent = mq.parentNode;
            parent.removeChild(mq);
            Polymer.dom.flush();
            parent.appendChild(mq);
            Polymer.dom.flush();
            assert.ok(mq._mq);
          });

        });

      });

    </script>

  </body>
</html>