|
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 |
- import {
- css,
- CssIfStringImpl,
- CssStringImpl,
- setup,
- extractCss,
- } from '.';
- import {
- vi,
- describe,
- it,
- expect,
- } from 'vitest';
- import { setup as setupGoober, extractCss as extractCssGoober } from 'goober';
-
- vi.mock('goober', () => {
- return {
- css: () => 'gooberClass',
- setup: vi.fn(),
- extractCss: vi.fn(),
- };
- });
-
- describe('@tesseract-design/goofy-goober', () => {
- describe('css', () => {
- it('should return CssString', () => {
- const c = css`
- background-color: white;
- color: black;
- `
-
- expect(c).toBeInstanceOf(CssStringImpl);
- expect(c.toString()).toBe('background-color:white;color:black;');
- })
- })
-
- describe('css.if', () => {
- it('should return CssString when the condition is true', () => {
- const c = css.if(true)(
- css`
- background-color: white;
- `
- )
-
- expect(c).toBeInstanceOf(CssIfStringImpl)
- expect(c.toString()).toBe('background-color:white;')
- })
-
- it('should return empty string when the condition is false', () => {
- const c = css.if(false)(
- css`
- background-color: white;
- `
- )
-
- expect(c.toString()).toBe('')
- })
-
- it('should return CssString with .else when the if condition is false', () => {
- const c = css.if(false)(
- css`
- background-color: white;
- `
- ).else(
- css`
- background-color: black;
- `
- )
-
- expect(c.toString()).toBe('background-color:black;')
- })
-
- it('should return CssString with .else when the if condition is true', () => {
- const c = css.if(true)(
- css`
- background-color: white;
- `
- ).else(
- css`
- background-color: black;
- `
- )
-
- expect(c.toString()).toBe('background-color:white;')
- })
- })
-
- describe('css.nest', () => {
- it('should add selector', () => {
- const c = css.nest('> div')(
- css`
- background-color: white;
- `
- )
-
- expect(c.toString()).toBe('> div{background-color:white;}')
- })
- })
-
- describe('css.dynamic', () => {
- it('should evaluate dynamic object', () => {
- const randomNumber = Math.floor(Math.random() * 1000);
-
- const c = css.dynamic({
- 'line-height': randomNumber,
- })
-
- expect(c.toString()).toBe(`line-height:${randomNumber};`)
- })
- })
-
- describe('css.media', () => {
- it('should accept raw queries', () => {
- const c = css.media('only screen and (min-width: 720px)')(
- css`
- color: black;
- background-color: white;
- `
- )
-
- expect(c.toString()).toBe('@media only screen and (min-width: 720px){color:black;background-color:white;}')
- })
- })
-
- describe('css.cx', () => {
- it('should accept strings as classnames', () => {
- expect(css.cx('class1', 'class2')).toBe('class1 class2');
- })
-
- it('should accept CSS strings for classname generation', () => {
- expect(
- css.cx(
- css`
- color: white;
- `
- )
- ).toBe('gooberClass');
- })
-
- it('should accept mixed values', () => {
- expect(
- css.cx(
- 'class1',
- 'class2',
- css`
- color: white;
- `
- )
- ).toBe('class1 class2 gooberClass');
- })
- })
-
- describe('setup', () => {
- it('should call setup from goober', () => {
- const pragma = vi.fn();
- const prefixer = vi.fn();
- setup(pragma, prefixer);
-
- expect(setupGoober).toHaveBeenCalledWith(pragma, prefixer);
- })
- });
-
- describe('extractCss', () => {
- it('should call extractCss from goober', () => {
- extractCss();
-
- expect(extractCssGoober).toHaveBeenCalled();
- })
- });
- });
|