@@ -320,6 +320,65 @@ describe('query userExperiences', () => {
320320 } ) ;
321321 } ) ;
322322
323+ it ( 'should return empty list when viewing another user with hideExperience enabled' , async ( ) => {
324+ loggedUser = '1' ;
325+
326+ // Set user 2's hideExperience to true
327+ await con . getRepository ( User ) . update ( { id : '2' } , { hideExperience : true } ) ;
328+
329+ const res = await client . query ( USER_EXPERIENCES_QUERY , {
330+ variables : { userId : '2' } ,
331+ } ) ;
332+
333+ expect ( res . errors ) . toBeFalsy ( ) ;
334+ expect ( res . data . userExperiences . edges ) . toHaveLength ( 0 ) ;
335+ expect ( res . data . userExperiences . pageInfo . hasNextPage ) . toBe ( false ) ;
336+ } ) ;
337+
338+ it ( 'should return own experiences even with hideExperience enabled' , async ( ) => {
339+ loggedUser = '1' ;
340+
341+ // Set user 1's hideExperience to true
342+ await con . getRepository ( User ) . update ( { id : '1' } , { hideExperience : true } ) ;
343+
344+ const res = await client . query ( USER_EXPERIENCES_QUERY , {
345+ variables : { userId : '1' } ,
346+ } ) ;
347+
348+ expect ( res . errors ) . toBeFalsy ( ) ;
349+ expect ( res . data . userExperiences . edges ) . toHaveLength ( 4 ) ;
350+ } ) ;
351+
352+ it ( 'should return experiences for another user when hideExperience is false' , async ( ) => {
353+ loggedUser = '1' ;
354+
355+ // Explicitly set user 2's hideExperience to false
356+ await con
357+ . getRepository ( User )
358+ . update ( { id : '2' } , { hideExperience : false } ) ;
359+
360+ const res = await client . query ( USER_EXPERIENCES_QUERY , {
361+ variables : { userId : '2' } ,
362+ } ) ;
363+
364+ expect ( res . errors ) . toBeFalsy ( ) ;
365+ expect ( res . data . userExperiences . edges ) . toHaveLength ( 1 ) ;
366+ } ) ;
367+
368+ it ( 'should return empty list for anonymous user when owner has hideExperience enabled' , async ( ) => {
369+ loggedUser = null ;
370+
371+ // Set user 2's hideExperience to true
372+ await con . getRepository ( User ) . update ( { id : '2' } , { hideExperience : true } ) ;
373+
374+ const res = await client . query ( USER_EXPERIENCES_QUERY , {
375+ variables : { userId : '2' } ,
376+ } ) ;
377+
378+ expect ( res . errors ) . toBeFalsy ( ) ;
379+ expect ( res . data . userExperiences . edges ) . toHaveLength ( 0 ) ;
380+ } ) ;
381+
323382 it ( 'should return cursor for each edge' , async ( ) => {
324383 loggedUser = '1' ;
325384
@@ -447,17 +506,15 @@ describe('query userExperienceById', () => {
447506 } ) ;
448507 } ) ;
449508
450- it ( 'should return error when experience does not exist' , async ( ) => {
509+ it ( 'should return null when experience does not exist' , async ( ) => {
451510 loggedUser = '1' ;
452511
453- await testQueryErrorCode (
454- client ,
455- {
456- query : USER_EXPERIENCE_BY_ID_QUERY ,
457- variables : { id : 'f47ac10b-58cc-4372-a567-3e02b2c3d479' } , // manually adjusted to be unique
458- } ,
459- 'NOT_FOUND' ,
460- ) ;
512+ const res = await client . query ( USER_EXPERIENCE_BY_ID_QUERY , {
513+ variables : { id : 'f47ac10b-58cc-4372-a567-3e02b2c3d479' } , // manually adjusted to be unique
514+ } ) ;
515+
516+ expect ( res . errors ) . toBeFalsy ( ) ;
517+ expect ( res . data . userExperienceById ) . toBeNull ( ) ;
461518 } ) ;
462519
463520 it ( 'should work for non-logged-in users' , async ( ) => {
@@ -486,6 +543,70 @@ describe('query userExperienceById', () => {
486543 title : 'Product Manager' ,
487544 } ) ;
488545 } ) ;
546+
547+ it ( 'should return null when viewing another user experience with hideExperience enabled' , async ( ) => {
548+ loggedUser = '1' ;
549+
550+ // Set user 2's hideExperience to true
551+ await con . getRepository ( User ) . update ( { id : '2' } , { hideExperience : true } ) ;
552+
553+ const res = await client . query ( USER_EXPERIENCE_BY_ID_QUERY , {
554+ variables : { id : 'd4e5f6a7-89ab-4def-c012-456789012345' } , // User 2's experience
555+ } ) ;
556+
557+ expect ( res . errors ) . toBeFalsy ( ) ;
558+ expect ( res . data . userExperienceById ) . toBeNull ( ) ;
559+ } ) ;
560+
561+ it ( 'should return own experience even with hideExperience enabled' , async ( ) => {
562+ loggedUser = '1' ;
563+
564+ // Set user 1's hideExperience to true
565+ await con . getRepository ( User ) . update ( { id : '1' } , { hideExperience : true } ) ;
566+
567+ const res = await client . query ( USER_EXPERIENCE_BY_ID_QUERY , {
568+ variables : { id : 'f47ac10b-58cc-4372-a567-0e02b2c3d479' } , // User 1's experience
569+ } ) ;
570+
571+ expect ( res . errors ) . toBeFalsy ( ) ;
572+ expect ( res . data . userExperienceById ) . toMatchObject ( {
573+ id : 'f47ac10b-58cc-4372-a567-0e02b2c3d479' ,
574+ title : 'Senior Software Engineer' ,
575+ } ) ;
576+ } ) ;
577+
578+ it ( 'should return experience from another user when hideExperience is false' , async ( ) => {
579+ loggedUser = '1' ;
580+
581+ // Explicitly set user 2's hideExperience to false
582+ await con
583+ . getRepository ( User )
584+ . update ( { id : '2' } , { hideExperience : false } ) ;
585+
586+ const res = await client . query ( USER_EXPERIENCE_BY_ID_QUERY , {
587+ variables : { id : 'd4e5f6a7-89ab-4def-c012-456789012345' } ,
588+ } ) ;
589+
590+ expect ( res . errors ) . toBeFalsy ( ) ;
591+ expect ( res . data . userExperienceById ) . toMatchObject ( {
592+ id : 'd4e5f6a7-89ab-4def-c012-456789012345' ,
593+ title : 'Product Manager' ,
594+ } ) ;
595+ } ) ;
596+
597+ it ( 'should return null for anonymous user when owner has hideExperience enabled' , async ( ) => {
598+ loggedUser = null ;
599+
600+ // Set user 1's hideExperience to true
601+ await con . getRepository ( User ) . update ( { id : '1' } , { hideExperience : true } ) ;
602+
603+ const res = await client . query ( USER_EXPERIENCE_BY_ID_QUERY , {
604+ variables : { id : 'f47ac10b-58cc-4372-a567-0e02b2c3d479' } , // User 1's experience
605+ } ) ;
606+
607+ expect ( res . errors ) . toBeFalsy ( ) ;
608+ expect ( res . data . userExperienceById ) . toBeNull ( ) ;
609+ } ) ;
489610} ) ;
490611
491612describe ( 'mutation upsertUserGeneralExperience' , ( ) => {
0 commit comments