github.com/nextlinux/gosbom@v0.81.1-0.20230627115839-1ff50c281391/test/integration/test-fixtures/npm-lock/node_modules/insert-css/test.js (about)

     1  var test = require('tape');
     2  
     3  test(function (t) {
     4      var insertCss = require('./');
     5      var initialNbStyleTags = nbStyleTags();
     6  
     7      // basic usage
     8      var baseStyle = 'body{position:relative;text-decoration:overline}';
     9      insertCss(baseStyle);
    10      t.equal(position(), 'relative', 'initial position is `relative`');
    11  
    12      // adds one style tag
    13      t.equal(nbStyleTags(), initialNbStyleTags + 1, 'we added one style tag');
    14  
    15      // default to appending style
    16      var appendStyle = 'body{position:absolute}';
    17      var appendStyleTag = insertCss(appendStyle);
    18      t.equal(position(), 'absolute', 'new position is `absolute`');
    19  
    20      // reuse same style tag
    21      t.equal(nbStyleTags(), initialNbStyleTags + 1, 'we kept using the same style tag');
    22  
    23      // prepend should add a new style tag before the append one
    24      t.equal(textDecoration(), 'overline', 'text-decoration is overline by default');
    25      var prependStyleTag = insertCss('body{text-decoration:underline !important}', {prepend: true});
    26      t.equal(nbStyleTags(), initialNbStyleTags + 2, 'we added a new style tag');
    27      t.equal(textDecoration(), 'underline', 'text-decoration is now underline');
    28      var tag = prependStyleTag;
    29      while (tag !== appendStyleTag) {
    30          tag = tag.nextSibling;
    31      }
    32      t.equal(tag, appendStyleTag, 'prepend mode should add a style tag before the append one');
    33  
    34      // uses old school styleSheet prop when present (IE)
    35      if (!appendStyleTag.styleSheet) {
    36          appendStyleTag.styleSheet = {cssText: 'a'};
    37          insertCss('p{color:blue}');
    38          t.equal(appendStyleTag.styleSheet.cssText, 'ap{color:blue}', 'we use old school styleSheet prop');
    39          delete appendStyleTag.styleSheet;
    40      }
    41  
    42      // allow re-adding added style
    43      insertCss(baseStyle);
    44      t.equal(position(), 'relative', 'position is again `relative`');
    45  
    46      // allow using a custom container
    47      var customContainer = document.createElement('div');
    48      document.querySelector('body').appendChild(customContainer);
    49      t.equal(nbStyleTags(customContainer), 0, 'no style tag in custom container');
    50      insertCss('body{position:absolute}', {container: customContainer});
    51      t.equal(nbStyleTags(customContainer), 1, 'new style tag added in custom container');
    52      t.equal(position(), 'absolute', 'position is absolute again');
    53  
    54      t.end();
    55  });
    56  
    57  test(function testEmpty(t) {
    58      var insertCss = require('./');
    59  
    60      t.equal(insertCss(), false, 'insertCss() with no arguments returns `false`');
    61  
    62      t.end();
    63  });
    64  
    65  function position() {
    66      var getStyle = require('computed-style');
    67      return getStyle(document.querySelector('body'), 'position');
    68  }
    69  
    70  function textDecoration() {
    71      var getStyle = require('computed-style');
    72      return getStyle(document.querySelector('body'), 'text-decoration');
    73  }
    74  
    75  function nbStyleTags(container) {
    76      if (!container) container = document;
    77      return container.querySelectorAll('style').length
    78  }