UNPKG

postcss-foft-classes

Version:

A postcss plugin to automatically add classes for the FOFT font loading strategy.

70 lines (60 loc) 2.93 kB
import test from "ava"; import stripQuotes from "../src/stripQuotes"; import fontFamilyCleanup from "../src/fontFamilyCleanup"; import isFontFamilyMatch from "../src/isFontFamilyMatch"; import hasFamily from "../src/hasAnyWebFontFamily"; import removeFamily from "../src/removeFontFamily"; import modifySelector from "../src/modifySelector"; test("strip quotes", t => { t.is(stripQuotes("Elena"), "Elena"); t.is(stripQuotes("'Elena'"), "Elena"); t.is(stripQuotes('"Elena"'), "Elena"); t.is(stripQuotes("Elena, sans-serif"), "Elena, sans-serif"); t.is(stripQuotes("'Elena', sans-serif"), "Elena, sans-serif"); t.is(stripQuotes('"Elena", sans-serif'), "Elena, sans-serif"); }); test("family cleanup", t => { t.deepEqual(fontFamilyCleanup("Elena, sans-serif"), ["Elena", "sans-serif"]); t.deepEqual(fontFamilyCleanup("'Elena', sans-serif"), ["Elena", "sans-serif"]); t.deepEqual(fontFamilyCleanup('"Elena", sans-serif'), ["Elena", "sans-serif"]); }); test("is match, no quotes", t => { t.true(isFontFamilyMatch("Elena, sans-serif", "Elena")); t.true(isFontFamilyMatch("Elena, sans-serif", "sans-serif")); t.false(isFontFamilyMatch("Elena, sans-serif", "serif")); t.false(isFontFamilyMatch("Elena, sans-serif", "Lato")); }); test("is match, single quotes", t => { t.true(isFontFamilyMatch("'Elena', sans-serif", "Elena")); t.false(isFontFamilyMatch("'Elena', sans-serif", "Lato")); }); test("is match, double quotes", t => { t.true(isFontFamilyMatch('"Elena", sans-serif', "Elena")); t.false(isFontFamilyMatch('"Elena", sans-serif', "Lato")); }); test("has family: single test class", t => { t.true(hasFamily(["Elena"], "Elena, sans-serif")); t.false(hasFamily(["Open Sans"], "Elena, sans-serif")); }); test("has family: multiple test classes", t => { t.true(hasFamily(["Elena", "Mija"], "Elena, sans-serif")); t.true(hasFamily(["Elena", "Mija"], "Elena, Mija, sans-serif")); t.true(hasFamily(["Elena", "Open Sans"], "Elena, sans-serif")); t.false(hasFamily(["Lato", "Open Sans"], "Elena, sans-serif")); }); test("remove family", t => { t.is( removeFamily( "Elena", "Elena" ), "" ); t.is( removeFamily( "Elena, sans-serif", "Elena" ), "sans-serif" ); t.is( removeFamily( "Elena, Mija, sans-serif", "Mija" ), "Elena, sans-serif" ); }); test("remove multiple families", t => { t.is( removeFamily( "Elena, sans-serif", [ "Elena", "sans-serif" ] ), "" ); t.is( removeFamily( "Elena, Mija, sans-serif", [ "Elena", "Mija" ] ), "sans-serif" ); t.is( removeFamily( "Lato, Elena, Mija, sans-serif", [ "Elena", "Mija", "sans-serif" ] ), "Lato" ); }); test("modify selector", t => { t.is( modifySelector("html", "fonts-loaded"), "html.fonts-loaded" ); t.is( modifySelector("body", "fonts-loaded"), ".fonts-loaded body" ); t.is( modifySelector("html", "fonts-loaded no-js"), "html.fonts-loaded,html.no-js" ); t.is( modifySelector("body", "fonts-loaded no-js"), ".fonts-loaded body,.no-js body" ); });