@@ -24,10 +24,17 @@ const mockPrismaWallet = {
2424 count : jest . fn ( ) ,
2525} ;
2626
27+ // Shared mock Prisma user methods (used by network preference lookups)
28+ const mockPrismaUser = {
29+ findUnique : jest . fn ( ) ,
30+ update : jest . fn ( ) ,
31+ } ;
32+
2733// Mock the PrismaClient module so new PrismaClient() returns our mock
2834jest . mock ( '../generated/prisma/client' , ( ) => ( {
2935 PrismaClient : jest . fn ( ( ) => ( {
3036 wallet : mockPrismaWallet ,
37+ user : mockPrismaUser ,
3138 } ) ) ,
3239} ) ) ;
3340
@@ -724,4 +731,76 @@ describe('WalletsService', () => {
724731 expect ( result . hasMore ) . toBe ( false ) ;
725732 } ) ;
726733 } ) ;
734+
735+ describe ( 'getNetworkPreference' , ( ) => {
736+ it ( 'returns the persisted preference for an existing user' , async ( ) => {
737+ mockPrismaUser . findUnique . mockResolvedValue ( {
738+ id : 'user-1' ,
739+ defaultNetwork : 'TESTNET' ,
740+ } ) ;
741+
742+ const result = await service . getNetworkPreference ( 'user-1' ) ;
743+
744+ expect ( mockPrismaUser . findUnique ) . toHaveBeenCalledWith ( {
745+ where : { id : 'user-1' } ,
746+ } ) ;
747+ expect ( result ) . toEqual ( {
748+ userId : 'user-1' ,
749+ defaultNetwork : WalletNetwork . TESTNET ,
750+ } ) ;
751+ } ) ;
752+
753+ it ( 'returns null defaultNetwork when the user has no preference set' , async ( ) => {
754+ mockPrismaUser . findUnique . mockResolvedValue ( {
755+ id : 'user-1' ,
756+ defaultNetwork : null ,
757+ } ) ;
758+
759+ const result = await service . getNetworkPreference ( 'user-1' ) ;
760+
761+ expect ( result ) . toEqual ( { userId : 'user-1' , defaultNetwork : null } ) ;
762+ } ) ;
763+
764+ it ( 'throws NotFoundException when the user does not exist' , async ( ) => {
765+ mockPrismaUser . findUnique . mockResolvedValue ( null ) ;
766+
767+ await expect (
768+ service . getNetworkPreference ( 'missing-user' ) ,
769+ ) . rejects . toThrow ( 'User with ID missing-user not found' ) ;
770+ } ) ;
771+ } ) ;
772+
773+ describe ( 'setNetworkPreference' , ( ) => {
774+ it ( 'persists the network preference for an existing user' , async ( ) => {
775+ mockPrismaUser . findUnique . mockResolvedValue ( { id : 'user-1' } ) ;
776+ mockPrismaUser . update . mockResolvedValue ( {
777+ id : 'user-1' ,
778+ defaultNetwork : 'MAINNET' ,
779+ } ) ;
780+
781+ const result = await service . setNetworkPreference (
782+ 'user-1' ,
783+ WalletNetwork . MAINNET ,
784+ ) ;
785+
786+ expect ( mockPrismaUser . update ) . toHaveBeenCalledWith ( {
787+ where : { id : 'user-1' } ,
788+ data : { defaultNetwork : WalletNetwork . MAINNET } ,
789+ } ) ;
790+ expect ( result ) . toEqual ( {
791+ userId : 'user-1' ,
792+ defaultNetwork : WalletNetwork . MAINNET ,
793+ } ) ;
794+ } ) ;
795+
796+ it ( 'throws NotFoundException when the user does not exist' , async ( ) => {
797+ mockPrismaUser . findUnique . mockResolvedValue ( null ) ;
798+
799+ await expect (
800+ service . setNetworkPreference ( 'missing-user' , WalletNetwork . MAINNET ) ,
801+ ) . rejects . toThrow ( 'User with ID missing-user not found' ) ;
802+
803+ expect ( mockPrismaUser . update ) . not . toHaveBeenCalled ( ) ;
804+ } ) ;
805+ } ) ;
727806} ) ;
0 commit comments