Skip to content

Commit

Permalink
added test
Browse files Browse the repository at this point in the history
  • Loading branch information
qurle committed Dec 11, 2024
1 parent b3097e5 commit f426727
Show file tree
Hide file tree
Showing 2 changed files with 55 additions and 2 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
import { describe, expect, it } from '@jest/globals';

import { overwriteFromFigmaJSON } from './overwriteFromFigmaJSON';

const originalLightTokens = {
colorBackgroundAccent: '#000000',
colorSearchFieldBackground: '#111111',
colorHeaderBackground: '#222222',
colorNotSpecifiedInFigmaJSON: '#333333',
};

const figmaJSON = {
appearance: {
backgroundAccent: {
light: '#2688eb',
dark: '#529ef4',
},
backgroundHeaderBackground: {
light: '#ffffff',
dark: '#191919',
},
otherSearchFieldBackground: {
light: '#ebebeb',
dark: '#373737',
},
colorNotSpecifiedInOriginalTokens: {
light: '#212121',
dark: '#e3e3e3',
},
},
};

const overwrittenLightTokens = {
colorBackgroundAccent: '#2688eb',
colorSearchFieldBackground: '#ebebeb',
colorHeaderBackground: '#ffffff',
};

describe('overwriteFromFigmaJSON', () => {
it('should leave only overwritten tokens', () => {
expect(
overwriteFromFigmaJSON(originalLightTokens, 'appearance', 'light', figmaJSON),
).toStrictEqual(overwrittenLightTokens);
});
});
Original file line number Diff line number Diff line change
@@ -1,37 +1,45 @@
import figma from '../figma.json';

// Поля — режимы соответсвующей коллекции переменных из фигмы
// Цвета
interface AppearanceVariable {
light: string;
dark: string;
}

// Числа и строки
interface TokensVariable {
iOS: string | number;
android: string | number;
desktop: string | number;
vkCom: string | number;
}

// Коллекция с переменными
interface Collection {
[name: string]: AppearanceVariable | TokensVariable;
}

// Цельный файл. Может генерироваться дизайнерами плагином Figma Variables To JSON
interface FigmaJSON {
[collection: string]: Collection;
}

/**
* Функция, возращающася список токенов, переопределённых в специальном JSON-файле с фигмовскими переменными
*
* @param originalTokens Токены, замена для которых будет искаться в figma.json
* @param {('appearance' | 'tokens')} [collection='appearance'] Коллекция, среди которой ищется замена
* @param {('light'|'dark')} [mode='light'] Режим переменных фигмы, применяемый для замены. Сейчас ограничивается светлой и тёмной темой
* @param source Объект, используемый вместо figma.json. По умолчанию генерируется дизайнерами плагином Figma Variables To JSON
* @param {FigmaJSON} source Объект, используемый вместо figma.json. Может генерироваться дизайнерами плагином Figma Variables To JSON
* @returns Объект с токенами, для которых нашлась замена
*/
// eslint-disable-next-line max-params
export function overwriteFromFigmaJSON(
originalTokens,
collection: 'appearance' | 'tokens' = 'appearance',
mode: 'light' | 'dark' = 'light',
source = figma,
source: FigmaJSON = figma,

Check warning on line 42 in src/themeDescriptions/themes/lego/helpers/overwriteFromFigmaJSON.ts

View workflow job for this annotation

GitHub Actions / Coverage annotations (🧪 jest-coverage-report-action)

🌿 Branch is not covered

Warning! Not covered branch
): Partial<typeof originalTokens> {
return Object.fromEntries(
Object.keys(originalTokens).reduce((acc, key) => {
Expand Down

0 comments on commit f426727

Please sign in to comment.