Skip to content
This repository was archived by the owner on Nov 26, 2024. It is now read-only.

Commit 7b38924

Browse files
Linting and initial tests
1 parent 80f7a27 commit 7b38924

File tree

2 files changed

+70
-11
lines changed

2 files changed

+70
-11
lines changed

src/figma/tokens.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1179,4 +1179,4 @@
11791179
}
11801180
},
11811181
"$themes": []
1182-
}
1182+
}

src/js/typography/typography.test.ts

Lines changed: 69 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,22 +3,81 @@ import { typography } from './typography';
33

44
const designTokens = require('../../figma/tokens.json');
55

6+
/**
7+
* Trim string between 2 characters
8+
*
9+
* @param {string} str - The string to be trimmed
10+
* @param {string} firstChar - The first character to start from '$'
11+
* @param {string} lastChar - The last character to stop at '.'
12+
* @returns {string}
13+
*/
14+
function trimStringBetweenCharacters(
15+
str: string,
16+
firstChar = '$',
17+
lastChar = '.',
18+
) {
19+
return str.substring(str.indexOf(firstChar) + 1, str.lastIndexOf(lastChar));
20+
}
21+
22+
/**
23+
* Trim string after character. Default character is '.'
24+
*
25+
* @param {string} str - The string to be trimmed
26+
* @param {string} char - The first character to start from '.'
27+
* @returns {string}
28+
*/
29+
function trimStringAfterCharacter(str: string, char = '.') {
30+
return str.split(char).pop();
31+
}
32+
33+
/**
34+
* Creates a new figma token object by creating object keys from a string
35+
*
36+
* @param {string} str - The object path as a string to be trimmed into object keys
37+
* @param {Object} obj - Global figma token object
38+
* @returns {Object} - New object formed from object keys created from provided string
39+
*/
40+
function createNewFigmaTokenObject(str: string, obj: any) {
41+
const firstString = trimStringBetweenCharacters(str);
42+
const secondString = trimStringAfterCharacter(str);
43+
return obj[`${firstString}`][`${secondString}`];
44+
}
45+
646
describe('Typography Small Screen', () => {
747
it('js tokens for sDisplayMD matches figma tokens sDisplayMD', () => {
848
expect(typography.sDisplayMD.fontFamily).toStrictEqual(
9-
designTokens.global.fontFamilies['euclid-circular-b'].value,
49+
createNewFigmaTokenObject(
50+
designTokens.global['S-Display-MD'].value.fontFamily,
51+
designTokens.global,
52+
).value,
1053
);
1154
expect(typography.sDisplayMD.fontWeight).toStrictEqual('700');
12-
expect(typography.sDisplayMD.fontSize.toString()).toStrictEqual(
13-
designTokens.global.fontSize[6].value,
14-
);
1555

16-
expect(typography.sDisplayMD.lineHeight.toString()).toStrictEqual(
17-
designTokens.global.lineHeights[1].value,
18-
);
19-
20-
expect(typography.sDisplayMD.letterSpacing.toString()).toStrictEqual(
21-
designTokens.global.letterSpacing[0].value,
56+
expect(typography.sDisplayMD.fontSize).toStrictEqual(
57+
Number(
58+
createNewFigmaTokenObject(
59+
designTokens.global['S-Display-MD'].value.fontSize,
60+
designTokens.global,
61+
).value,
62+
),
63+
);
64+
65+
expect(typography.sDisplayMD.lineHeight).toStrictEqual(
66+
Number(
67+
createNewFigmaTokenObject(
68+
designTokens.global['S-Display-MD'].value.lineHeight,
69+
designTokens.global,
70+
).value,
71+
),
72+
);
73+
74+
expect(typography.sDisplayMD.letterSpacing).toStrictEqual(
75+
Number(
76+
createNewFigmaTokenObject(
77+
designTokens.global['S-Display-MD'].value.letterSpacing,
78+
designTokens.global,
79+
).value,
80+
),
2281
);
2382
});
2483

0 commit comments

Comments
 (0)