@@ -9,42 +9,47 @@ import {
99 getLanguageDisplayString ,
1010 removeLanguageSize ,
1111} from "../../src/ts/utils/strings" ;
12+ import { Language } from "@monkeytype/schemas/languages" ;
1213
1314//todo this file is in the wrong place
1415
1516describe ( "misc.ts" , ( ) => {
1617 describe ( "getLanguageDisplayString" , ( ) => {
1718 it ( "should return correctly formatted strings" , ( ) => {
18- const tests = [
19+ const tests : {
20+ input : Language ;
21+ noSizeString : boolean ;
22+ expected : string ;
23+ } [ ] = [
1924 {
20- input : "language " ,
25+ input : "english " ,
2126 noSizeString : false ,
22- expected : "language " ,
27+ expected : "english " ,
2328 } ,
2429 {
25- input : "language_1k " ,
30+ input : "english_1k " ,
2631 noSizeString : false ,
27- expected : "language 1k" ,
32+ expected : "english 1k" ,
2833 } ,
2934 {
30- input : "language_1k " ,
35+ input : "english_1k " ,
3136 noSizeString : true ,
32- expected : "language " ,
37+ expected : "english " ,
3338 } ,
3439 {
35- input : "language_lang " ,
40+ input : "english_medical " ,
3641 noSizeString : false ,
37- expected : "language lang " ,
42+ expected : "english medical " ,
3843 } ,
3944 {
40- input : "language_lang_1k " ,
45+ input : "arabic_egypt_1k " ,
4146 noSizeString : false ,
42- expected : "language lang 1k" ,
47+ expected : "arabic egypt 1k" ,
4348 } ,
4449 {
45- input : "language_lang_1k " ,
50+ input : "arabic_egypt_1k " ,
4651 noSizeString : true ,
47- expected : "language lang " ,
52+ expected : "arabic egypt " ,
4853 } ,
4954 ] ;
5055
@@ -56,22 +61,22 @@ describe("misc.ts", () => {
5661 } ) ;
5762 describe ( "removeLanguageSize" , ( ) => {
5863 it ( "should remove language size" , ( ) => {
59- const tests = [
64+ const tests : { input : Language ; expected : Language } [ ] = [
6065 {
61- input : "language " ,
62- expected : "language " ,
66+ input : "english " ,
67+ expected : "english " ,
6368 } ,
6469 {
65- input : "language_1k " ,
66- expected : "language " ,
70+ input : "english_1k " ,
71+ expected : "english " ,
6772 } ,
6873 {
69- input : "language_lang " ,
70- expected : "language_lang " ,
74+ input : "arabic_egypt " ,
75+ expected : "arabic_egypt " ,
7176 } ,
7277 {
73- input : "language_lang_1k " ,
74- expected : "language_lang " ,
78+ input : "arabic_egypt_1k " ,
79+ expected : "arabic_egypt " ,
7580 } ,
7681 ] ;
7782
@@ -284,6 +289,25 @@ describe("misc.ts", () => {
284289 } ) ;
285290 } ) ;
286291
292+ it ( "should throw on nested objects" , ( ) => {
293+ const schema = z
294+ . object ( {
295+ name : z . string ( ) ,
296+ info : z . object ( { age : z . number ( ) } ) . partial ( ) ,
297+ } )
298+ . partial ( ) ;
299+ const obj = {
300+ name : "Alice" ,
301+ info : { age : "42" as any } ,
302+ } ;
303+
304+ expect ( ( ) => {
305+ sanitize ( schema , obj ) ;
306+ } ) . toThrowError (
307+ "sanitize does not support nested objects yet. path: info.age"
308+ ) ;
309+ } ) ;
310+
287311 it ( "should remove entire property if all array elements are invalid" , ( ) => {
288312 const obj = { name : "Alice" , age : 30 , tags : [ 123 , 456 ] as any } ;
289313 const sanitized = sanitize ( schema , obj ) ;
0 commit comments