11// Mock NetworkDetector before any imports
2+ const mockHasConnectivity = jest . fn ( ( ) => Promise . resolve ( true ) ) ;
23jest . mock ( '../../lib/api/network-detector' , ( ) => ( {
34 NetworkDetector : {
4- hasConnectivity : jest . fn ( ( ) => Promise . resolve ( true ) ) ,
5+ hasConnectivity : mockHasConnectivity ,
56 } ,
67} ) ) ;
78
@@ -28,11 +29,14 @@ const BASIC_NOTICE = {
2829beforeEach ( ( ) => {
2930 nock . cleanAll ( ) ;
3031 jest . clearAllMocks ( ) ;
32+ // Reset to default connectivity = true
33+ mockHasConnectivity . mockResolvedValue ( true ) ;
3134} ) ;
3235
3336describe ( 'cdk notices' , ( ) => {
34- test ( 'will fail on dns error' , async ( ) => {
35- // GIVEN
37+ test ( 'will fail when no connectivity (dns error scenario)' , async ( ) => {
38+ // GIVEN - NetworkDetector will return false by default, simulating no connectivity
39+ // This test represents what used to be a DNS error but now gets caught by connectivity check
3640 nock ( NOTICES_URL )
3741 . get ( NOTICES_PATH )
3842 . replyWithError ( 'DNS resolution failed' ) ;
@@ -41,29 +45,43 @@ describe('cdk notices', () => {
4145 try {
4246 await exec ( [ 'notices' ] ) ;
4347 } catch ( error : any ) {
44- // THEN
48+ // THEN - Now expects connectivity error instead of DNS error
4549 await expect ( error . message ) . toMatch ( 'Failed to load CDK notices' ) ;
46- await expect ( error . cause . message ) . toMatch ( 'DNS resolution failed ' ) ;
50+ await expect ( error . cause . message ) . toMatch ( 'No internet connectivity detected ' ) ;
4751 }
4852 } ) ;
4953
50- test ( 'will fail on timeout' , async ( ) => {
51- // GIVEN
54+ test ( 'will fail when no connectivity (timeout scenario)' , async ( ) => {
55+ // GIVEN - NetworkDetector will return false by default, simulating no connectivity
56+ // This test represents what used to be a timeout but now gets caught by connectivity check
5257 nock ( NOTICES_URL )
5358 . get ( NOTICES_PATH )
5459 . delayConnection ( 3500 )
5560 . reply ( 200 , {
5661 notices : [ BASIC_NOTICE ] ,
5762 } ) ;
5863
59- // WHEN
64+ expect . assertions ( 2 ) ;
65+ try {
66+ await exec ( [ 'notices' ] ) ;
67+ } catch ( error : any ) {
68+ // THEN - Now expects connectivity error instead of timeout error
69+ await expect ( error . message ) . toMatch ( 'Failed to load CDK notices' ) ;
70+ await expect ( error . cause . message ) . toMatch ( 'No internet connectivity detected' ) ;
71+ }
72+ } ) ;
73+
74+ test ( 'will fail when no connectivity' , async ( ) => {
75+ // GIVEN - explicitly mock no connectivity
76+ mockHasConnectivity . mockResolvedValue ( false ) ;
77+
6078 expect . assertions ( 2 ) ;
6179 try {
6280 await exec ( [ 'notices' ] ) ;
6381 } catch ( error : any ) {
6482 // THEN
6583 await expect ( error . message ) . toMatch ( 'Failed to load CDK notices' ) ;
66- await expect ( error . cause . message ) . toMatch ( 'Request timed out ' ) ;
84+ await expect ( error . cause . message ) . toMatch ( 'No internet connectivity detected ' ) ;
6785 }
6886 } ) ;
6987} ) ;
0 commit comments