Uname: Linux webm016.cluster127.gra.hosting.ovh.net 5.15.167-ovh-vps-grsec-zfs-classid #1 SMP Tue Sep 17 08:14:20 UTC 2024 x86_64
Software: Apache
PHP version: 7.4.33 [ PHP INFO ] PHP os: Linux
Server Ip: 54.36.31.145
Your Ip: 216.73.216.182
User: homesquasz (91404) | Group: users (100)
Safe Mode: OFF
Disable Function:
_dyuweyrj4,_dyuweyrj4r,dl

name : index.spec.ts
import * as fs from 'fs';
import * as postcssLessSyntax from 'postcss-less';
import * as postcssScssSyntax from 'postcss-scss';

import cssNodeExtract, { process, processSync } from './';

describe(`cssNodeExtract`, () => {
  const scss = fs.readFileSync(`test/css/test.scss`, { encoding: `utf8` });
  const less = fs.readFileSync(`test/css/test.less`, { encoding: `utf8` });

  test(`It should be an object.`, () => {
    expect(typeof cssNodeExtract).toBe(`object`);
  });

  describe(`process()`, () => {
    test(`should be a function.`, () => {
      expect(typeof process).toBe(`function`);
    });

    test(`SCSS: should extract only at-rules.`, () => {
      const reference = fs.readFileSync(`test/css/reference/at-rules.scss`, {
        encoding: `utf8`,
      });
      const filters = `at-rules`;
      const postcssSyntax = postcssScssSyntax;
      return process({ css: scss, filters, postcssSyntax })
        .then((filteredScss) => {
          expect(filteredScss.trim()).toBe(reference.trim());
        });
    });

    test(`SCSS: should extract only at-rules and preserve lines.`, () => {
      const reference = fs.readFileSync(`test/css/reference/at-rules-preserve-lines.scss`, {
        encoding: `utf8`,
      });
      const filters = `at-rules`;
      const postcssSyntax = postcssScssSyntax;
      return process({ css: scss, filters, postcssSyntax, preserveLines: true })
        .then((filteredScss) => {
          expect(filteredScss.trim()).toBe(reference.trim());
        });
    });

    test(`SCSS: should extract only mixin at-rules and variable declarations.`, () => {
      const reference = fs.readFileSync(`test/css/reference/combined.scss`, {
        encoding: `utf8`,
      });
      const filters = [`mixins`, `variables`];
      const postcssSyntax = postcssScssSyntax;
      return process({ css: scss, filters, postcssSyntax })
        .then((filteredScss) => {
          expect(filteredScss.trim()).toBe(reference.trim());
        });
    });

    test(`SCSS: should extract only declaration rules.`, () => {
      const reference = fs.readFileSync(`test/css/reference/declarations.scss`, {
        encoding: `utf8`,
      });
      const filters = `declarations`;
      const postcssSyntax = postcssScssSyntax;
      return process({ css: scss, filters, postcssSyntax })
        .then((filteredScss) => {
          expect(filteredScss.trim()).toBe(reference.trim());
        });
    });

    test(`SCSS: should extract only function at-rules.`, () => {
      const reference = fs.readFileSync(`test/css/reference/functions.scss`, {
        encoding: `utf8`,
      });
      const filters = `functions`;
      const postcssSyntax = postcssScssSyntax;
      return process({ css: scss, filters, postcssSyntax })
        .then((filteredScss) => {
          expect(filteredScss.trim()).toBe(reference.trim());
        });
    });

    test(`SCSS: should extract only mixin at-rules.`, () => {
      const reference = fs.readFileSync(`test/css/reference/mixins.scss`, {
        encoding: `utf8`,
      });
      const filters = `mixins`;
      const postcssSyntax = postcssScssSyntax;
      return process({ css: scss, filters, postcssSyntax })
        .then((filteredScss) => {
          expect(filteredScss.trim()).toBe(reference.trim());
        });
    });

    test(`SCSS: should extract only rules.`, () => {
      const reference = fs.readFileSync(`test/css/reference/rules.scss`, {
        encoding: `utf8`,
      });
      const filters = `rules`;
      const postcssSyntax = postcssScssSyntax;
      return process({ css: scss, filters, postcssSyntax })
        .then((filteredScss) => {
          expect(filteredScss.trim()).toBe(reference.trim());
        });
    });

    test(`SCSS: should extract only silent rules.`, () => {
      const reference = fs.readFileSync(`test/css/reference/silent.scss`, {
        encoding: `utf8`,
      });
      const filters = `silent`;
      const postcssSyntax = postcssScssSyntax;
      return process({ css: scss, filters, postcssSyntax })
        .then((filteredScss) => {
          expect(filteredScss.trim()).toBe(reference.trim());
        });
    });

    test(`SCSS: should extract only variable rules.`, () => {
      const reference = fs.readFileSync(`test/css/reference/variables.scss`, {
        encoding: `utf8`,
      });
      const filters = `variables`;
      const postcssSyntax = postcssScssSyntax;
      return process({ css: scss, filters, postcssSyntax })
        .then((filteredScss) => {
          expect(filteredScss.trim()).toBe(reference.trim());
        });
    });

    test(`SCSS: should extract only keyframes at-rules.`, () => {
      const reference = fs.readFileSync(`test/css/reference/keyframes.scss`, {
        encoding: `utf8`,
      });
      const filters = `media-keyframes`;
      const customFilters = {
        mediaKeyframes: [
          [
            { property: `type`, value: `atrule` },
            { property: `name`, value: `keyframes` },
          ],
        ],
      };
      const postcssSyntax = postcssScssSyntax;
      return process({ css: scss, filters, customFilters, postcssSyntax })
        .then((filteredScss) => {
          expect(filteredScss.trim()).toBe(reference.trim());
        });
    });

    test(`LESS: should extract only declaration rules.`, () => {
      const reference = fs.readFileSync(`test/css/reference/declarations.less`, {
        encoding: `utf8`,
      });
      const filters = [`declarations`];
      const postcssSyntax = postcssLessSyntax;
      return process({ css: less, filters, postcssSyntax })
        .then((filteredLess) => {
          expect(filteredLess.trim()).toBe(reference.trim());
        });
    });

    test(`LESS: should extract only mixin rules.`, () => {
      const reference = fs.readFileSync(`test/css/reference/mixins.less`, {
        encoding: `utf8`,
      });
      const filters = `mixins`;
      const postcssSyntax = postcssLessSyntax;
      return process({ css: less, filters, postcssSyntax })
        .then((filteredLess) => {
          expect(filteredLess.trim()).toBe(reference.trim());
        });
    });

    test(`LESS: should extract only silent rules.`, () => {
      const reference = fs.readFileSync(`test/css/reference/silent.less`, {
        encoding: `utf8`,
      });
      const filters = `silent`;
      const postcssSyntax = postcssLessSyntax;
      return process({ css: less, filters, postcssSyntax })
        .then((filteredLess) => {
          expect(filteredLess.trim()).toBe(reference.trim());
        });
    });
  });

  describe(`processSync()`, () => {
    test(`It should be a function.`, () => {
      expect(typeof processSync).toBe(`function`);
    });
  });
});
© 2026 GrazzMean