11import { describe , expect , it } from 'vitest' ;
2- import { githubParamsSchema , streakParamsSchema } from './validations' ;
2+ import { githubParamsSchema , ogParamsSchema , streakParamsSchema } from './validations' ;
33
44describe ( 'githubParamsSchema' , ( ) => {
55 it ( 'should pass when username is valid' , ( ) => {
@@ -118,15 +118,11 @@ describe('streakParamsSchema', () => {
118118 } ) ;
119119} ) ;
120120
121- // Helper — parse only the fields we care about, supplying the required `user` field.
122121function parse ( params : Record < string , string > ) {
123122 return streakParamsSchema . parse ( { user : 'octocat' , ...params } ) ;
124123}
125124
126125describe ( 'streakParamsSchema — scale fallback behavior' , ( ) => {
127- // z.enum(['linear', 'log']).catch('linear') — unknown values silently fall
128- // back to 'linear' instead of throwing a validation error.
129-
130126 it ( 'accepts "log" as a valid scale value' , ( ) => {
131127 expect ( parse ( { scale : 'log' } ) . scale ) . toBe ( 'log' ) ;
132128 } ) ;
@@ -149,9 +145,6 @@ describe('streakParamsSchema — scale fallback behavior', () => {
149145} ) ;
150146
151147describe ( 'streakParamsSchema — size fallback behavior' , ( ) => {
152- // z.enum(['small', 'medium', 'large']).catch('medium') — unknown values
153- // silently fall back to 'medium' to preserve badge rendering.
154-
155148 it ( 'accepts "small" as a valid size value' , ( ) => {
156149 expect ( parse ( { size : 'small' } ) . size ) . toBe ( 'small' ) ;
157150 } ) ;
@@ -176,3 +169,39 @@ describe('streakParamsSchema — size fallback behavior', () => {
176169 expect ( parse ( { size : '' } ) . size ) . toBe ( 'medium' ) ;
177170 } ) ;
178171} ) ;
172+
173+ describe ( 'ogParamsSchema' , ( ) => {
174+ it ( 'should keep provided user value' , ( ) => {
175+ const result = ogParamsSchema . safeParse ( {
176+ user : 'octocat' ,
177+ } ) ;
178+
179+ expect ( result . success ) . toBe ( true ) ;
180+
181+ if ( result . success ) {
182+ expect ( result . data . user ) . toBe ( 'octocat' ) ;
183+ }
184+ } ) ;
185+
186+ it ( 'should default user to unknown when omitted' , ( ) => {
187+ const result = ogParamsSchema . safeParse ( { } ) ;
188+
189+ expect ( result . success ) . toBe ( true ) ;
190+
191+ if ( result . success ) {
192+ expect ( result . data . user ) . toBe ( 'unknown' ) ;
193+ }
194+ } ) ;
195+
196+ it ( 'should allow empty string user' , ( ) => {
197+ const result = ogParamsSchema . safeParse ( {
198+ user : '' ,
199+ } ) ;
200+
201+ expect ( result . success ) . toBe ( true ) ;
202+
203+ if ( result . success ) {
204+ expect ( result . data . user ) . toBe ( '' ) ;
205+ }
206+ } ) ;
207+ } ) ;
0 commit comments