@tiny-css/compiler
Version:
The compiler for compiling & reducing the bundle size of tiny-css
94 lines (93 loc) • 4.05 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
var css_1 = __importDefault(require("css"));
var fs = __importStar(require("fs"));
var path_1 = require("path");
var process_1 = require("process");
var ASTTypes_1 = require("../utils/ASTTypes");
var getCssObjects_1 = require("../getCssObjects");
describe("CSS Object Test", function () {
var stylesheetObj;
var cssObj;
beforeAll(function () {
stylesheetObj = css_1.default.parse(fs.readFileSync(path_1.join(process.cwd(), "__test_assets__", "getCSSObject.test.css"), { encoding: "utf-8" }));
});
beforeEach(function () {
var bootstrapClasses = JSON.parse(fs.readFileSync(path_1.join(process_1.cwd(), "__dev_test_assets__", "bootstrap_classes.json"), "utf-8"));
cssObj = getCssObjects_1.getCssObjects(stylesheetObj, Object.values(bootstrapClasses));
});
// #1
it("Shouldn't output false instead of outputting css-AST[]", function () {
expect(cssObj).not.toBe(false);
});
// #2
it("Should match Array of css selectors with AST css selectors", function () {
var selectors = [
".col",
".navbar .container",
".navbar .container-fluid",
".navbar .container-sm",
".navbar .container-md",
".navbar .container-lg",
".navbar .container-xl",
".btn-primary:hover",
".btn-outline-secondary:hover",
".btn-outline-secondary.focus",
".btn-outline-secondary:focus",
".btn-outline-secondary.disabled",
".btn-outline-secondary:disabled",
".btn-outline-secondary:not(:disabled):not(.disabled).active",
".btn-outline-secondary:not(:disabled):not(.disabled):active",
".show>.btn-outline-secondary.dropdown-toggle",
".btn-outline-secondary:not(:disabled):not(.disabled).active:focus",
".btn-outline-secondary:not(:disabled):not(.disabled):active:focus",
];
var onlySelectors = [];
if (cssObj) {
onlySelectors = cssObj
.map(function (cssDec) { return cssDec.selectors; })
.flat(1).filter(Boolean);
console.log("onlySelectors:", onlySelectors);
}
expect(onlySelectors).toEqual(selectors);
});
// #3
it("Should output Array of css AST objects with @media queries", function () {
var selectors = [
".col",
".col-xs-11",
];
var mediaSelectors = [];
if (cssObj) {
mediaSelectors = cssObj
.map(function (cssDec) {
var _a;
return cssDec.type === ASTTypes_1.ASTTypes.media
&& ((_a = cssDec.rules) === null || _a === void 0 ? void 0 : _a.map(function (dec) { return dec.type === ASTTypes_1.ASTTypes.rule && dec.selectors; }).flat(1).filter(Boolean));
}).flat(1).filter(Boolean);
}
expect(mediaSelectors).toEqual(selectors);
});
});