@@ -66,7 +66,31 @@ describe('Web3RequestManager', () => {
6666 expect ( manager ) . toBeInstanceOf ( Web3RequestManager ) ;
6767 } ) ;
6868 } ) ;
69+ describe ( 'isMetaMaskProvider' , ( ) => {
70+ it ( 'check params' , ( ) => {
71+ const request = {
72+ constructor : {
73+ name : 'AsyncFunction' ,
74+ } ,
75+ } ;
6976
77+ expect (
78+ utils . isMetaMaskProvider ( {
79+ // @ts -expect-error incorrect param
80+ request,
81+ isMetaMask : true ,
82+ } ) ,
83+ ) . toBe ( true ) ;
84+ } ) ;
85+ } ) ;
86+ describe ( 'isSupportSubscriptions' , ( ) => {
87+ it ( 'check params' , ( ) => {
88+ // @ts -expect-error incorrect param
89+ expect ( utils . isSupportSubscriptions ( { supportsSubscriptions : ( ) => true } ) ) . toBe ( true ) ;
90+ // @ts -expect-error incorrect param
91+ expect ( utils . isSupportSubscriptions ( { } ) ) . toBe ( false ) ;
92+ } ) ;
93+ } ) ;
7094 describe ( 'providers' , ( ) => {
7195 it ( 'should return providers on instance' , ( ) => {
7296 const manager = new Web3RequestManager ( ) ;
@@ -97,6 +121,11 @@ describe('Web3RequestManager', () => {
97121 } ) ;
98122 } ) ;
99123
124+ it ( 'should unset provider' , ( ) => {
125+ const manager = new Web3RequestManager ( ) ;
126+ manager . setProvider ( undefined ) ;
127+ expect ( manager . provider ) . toBeUndefined ( ) ;
128+ } ) ;
100129 it ( 'should detect and set http provider' , ( ) => {
101130 const providerString = 'http://mydomain.com' ;
102131
@@ -235,10 +264,44 @@ describe('Web3RequestManager', () => {
235264
236265 it ( 'should throw error if no provider is set' , async ( ) => {
237266 const manager = new Web3RequestManager ( ) ;
238-
239267 await expect ( manager . send ( request ) ) . rejects . toThrow ( 'Provider not available' ) ;
240268 } ) ;
241269
270+ it ( 'promise of legacy provider should be resolved' , async ( ) => {
271+ const manager = new Web3RequestManager ( undefined , undefined ) ;
272+ const pr = new Promise ( resolve => {
273+ resolve ( 'test' ) ;
274+ } ) ;
275+ const myProvider = {
276+ request : jest . fn ( ) . mockImplementation ( async ( ) => pr ) ,
277+ } as any ;
278+ manager . setProvider ( myProvider ) ;
279+ await manager . send ( request ) ;
280+ expect ( myProvider . request ) . toHaveBeenCalledTimes ( 1 ) ;
281+ expect ( await pr ) . toBe ( 'test' ) ;
282+ } ) ;
283+ it ( 'Got a "nullish" response from provider' , async ( ) => {
284+ const manager = new Web3RequestManager ( undefined , undefined ) ;
285+ const myProvider = {
286+ send : jest . fn ( ) . mockImplementation ( ( _ , cb : ( error ?: any , data ?: any ) => void ) => {
287+ cb ( undefined , undefined ) ;
288+ } ) ,
289+ } as any ;
290+ manager . setProvider ( myProvider ) ;
291+
292+ await expect ( async ( ) => manager . send ( request ) ) . rejects . toThrow (
293+ 'Got a "nullish" response from provider' ,
294+ ) ;
295+ } ) ;
296+ it ( 'Provider does not have a request or send method to use' , async ( ) => {
297+ const manager = new Web3RequestManager ( undefined , undefined ) ;
298+ const myProvider = { } as any ;
299+ manager . setProvider ( myProvider ) ;
300+
301+ await expect ( async ( ) => manager . send ( request ) ) . rejects . toThrow (
302+ 'Provider does not have a request or send method to use.' ,
303+ ) ;
304+ } ) ;
242305 describe ( 'test rpc errors' , ( ) => {
243306 it ( 'should pass request to provider and reject with a generic rpc error when rpc call specification flag is undefined' , async ( ) => {
244307 const parseErrorResponse = {
0 commit comments