@@ -16,7 +16,7 @@ import { HexBlob, InvalidArgumentError, isNotNil } from '@cardano-sdk/util';
16
16
import { MinimalRuntime } from '../../src/messaging' ;
17
17
import { ObservableWallet , storage } from '@cardano-sdk/wallet' ;
18
18
import { Storage } from 'webextension-polyfill' ;
19
- import { TimeoutError , filter , firstValueFrom , from , timeout } from 'rxjs' ;
19
+ import { TimeoutError , filter , firstValueFrom , from , skip , timeout } from 'rxjs' ;
20
20
import { logger } from '@cardano-sdk/util-dev' ;
21
21
import pick from 'lodash/pick' ;
22
22
@@ -33,6 +33,7 @@ jest.mock('../../src/messaging', () => {
33
33
const createInMemoryStorage = ( ) => {
34
34
const store : Record < string , any > = { } ;
35
35
return {
36
+ clear : jest . fn ( ) ,
36
37
get : async ( keyOrKeys ) =>
37
38
typeof keyOrKeys === 'object'
38
39
? Array . isArray ( keyOrKeys )
@@ -41,6 +42,15 @@ const createInMemoryStorage = () => {
41
42
: keyOrKeys
42
43
? pick ( store , keyOrKeys )
43
44
: { } ,
45
+ remove : jest . fn ( async ( keyOrKeys ) => {
46
+ if ( Array . isArray ( keyOrKeys ) ) {
47
+ for ( const key of keyOrKeys ) {
48
+ delete store [ key ] ;
49
+ }
50
+ } else {
51
+ delete store [ keyOrKeys ] ;
52
+ }
53
+ } ) ,
44
54
set : async ( items ) => {
45
55
Object . assign ( store , items ) ;
46
56
}
@@ -230,6 +240,17 @@ describe('WalletManager', () => {
230
240
} ) ;
231
241
} ) ;
232
242
243
+ describe ( 'deactivate' , ( ) => {
244
+ it ( 'deletes lastActivateProps from storage and emits null from activeWalletId$' , async ( ) => {
245
+ walletManager = await createWalletManager ( ) ;
246
+ await walletManager . activate ( { accountIndex : 0 , chainId, walletId } ) ;
247
+ const activeWalletId = firstValueFrom ( walletManager . activeWallet$ . pipe ( skip ( 1 ) ) ) ;
248
+ await walletManager . deactivate ( ) ;
249
+ expect ( managerStorage . remove ) . toBeCalledTimes ( 1 ) ;
250
+ await expect ( activeWalletId ) . resolves . toBeNull ( ) ;
251
+ } ) ;
252
+ } ) ;
253
+
233
254
describe ( 'initialize' , ( ) => {
234
255
it ( 'does nothing before wallet is activated for the 1st time' , async ( ) => {
235
256
await walletManager . initialize ( ) ;
0 commit comments