@@ -159,7 +159,40 @@ final class AuthenticationManagerTests: XCTestCase {
159159 // Given
160160 let manager = AuthenticationManager ( )
161161 let testSite = " http://test.com "
162- let siteInfo = WordPressComSiteInfo ( remote: [ " isWordPress " : true , " hasJetpack " : false , " urlAfterRedirects " : testSite] )
162+ let siteInfo = siteInfo ( url: testSite,
163+ exists: true ,
164+ hasWordPress: true ,
165+ isWordPressCom: false ,
166+ hasJetpack: false ,
167+ isJetpackActive: false ,
168+ isJetpackConnected: false )
169+ let wpcomCredentials = WordPressComCredentials ( authToken: " abc " , isJetpackLogin: false , multifactor: false , siteURL: testSite)
170+ let credentials = AuthenticatorCredentials ( wpcom: wpcomCredentials, wporg: nil )
171+ let navigationController = UINavigationController ( )
172+
173+ // When
174+ manager. shouldPresentUsernamePasswordController ( for: siteInfo, onCompletion: { _ in } )
175+ manager. presentLoginEpilogue ( in: navigationController, for: credentials, onDismiss: { } )
176+ waitUntil {
177+ navigationController. viewControllers. isNotEmpty
178+ }
179+
180+ // Then
181+ let rootController = navigationController. viewControllers. first
182+ XCTAssertTrue ( rootController is ULErrorViewController )
183+ }
184+
185+ func test_it_shows_error_upon_login_epilogue_if_the_site_has_active_jetpack_but_not_connected( ) {
186+ // Given
187+ let manager = AuthenticationManager ( )
188+ let testSite = " http://test.com "
189+ let siteInfo = siteInfo ( url: testSite,
190+ exists: true ,
191+ hasWordPress: true ,
192+ isWordPressCom: false ,
193+ hasJetpack: true ,
194+ isJetpackActive: true ,
195+ isJetpackConnected: false )
163196 let wpcomCredentials = WordPressComCredentials ( authToken: " abc " , isJetpackLogin: false , multifactor: false , siteURL: testSite)
164197 let credentials = AuthenticatorCredentials ( wpcom: wpcomCredentials, wporg: nil )
165198 let navigationController = UINavigationController ( )
@@ -366,10 +399,28 @@ final class AuthenticationManagerTests: XCTestCase {
366399 XCTAssertTrue ( topController is ULErrorViewController )
367400 }
368401
402+ func test_troubleshootSite_displays_error_screen_if_site_is_self_hosted_with_jetpack_not_connected( ) {
403+ // Given
404+ let navigationController = UINavigationController ( )
405+ let siteInfo = siteInfo ( exists: true , hasWordPress: true , isWordPressCom: false , hasJetpack: true , isJetpackActive: true , isJetpackConnected: false )
406+ let storage = MockStorageManager ( )
407+ let manager = AuthenticationManager ( storageManager: storage)
408+
409+ // When
410+ manager. troubleshootSite ( siteInfo, in: navigationController)
411+
412+ // Then
413+ waitUntil {
414+ navigationController. viewControllers. isNotEmpty
415+ }
416+ let topController = navigationController. topViewController
417+ XCTAssertTrue ( topController is ULErrorViewController )
418+ }
419+
369420 func test_troubleshootSite_displays_account_mismatch_screen_if_site_is_self_hosted_with_jetpack( ) {
370421 // Given
371422 let navigationController = UINavigationController ( )
372- let siteInfo = siteInfo ( exists: true , hasWordPress: true , isWordPressCom: false , hasJetpack: true )
423+ let siteInfo = siteInfo ( exists: true , hasWordPress: true , isWordPressCom: false , hasJetpack: true , isJetpackActive : true , isJetpackConnected : true )
373424 let storage = MockStorageManager ( )
374425 let manager = AuthenticationManager ( storageManager: storage)
375426
@@ -386,12 +437,19 @@ final class AuthenticationManagerTests: XCTestCase {
386437}
387438
388439private extension AuthenticationManagerTests {
389- func siteInfo( exists: Bool = false , hasWordPress: Bool = false , isWordPressCom: Bool = false , hasJetpack: Bool = false ) -> WordPressComSiteInfo {
390- WordPressComSiteInfo ( remote: [ " exists " : exists,
440+ func siteInfo( url: String = " " ,
441+ exists: Bool = false ,
442+ hasWordPress: Bool = false ,
443+ isWordPressCom: Bool = false ,
444+ hasJetpack: Bool = false ,
445+ isJetpackActive: Bool = false ,
446+ isJetpackConnected: Bool = false ) -> WordPressComSiteInfo {
447+ WordPressComSiteInfo ( remote: [ " urlAfterRedirects " : url,
448+ " exists " : exists,
391449 " isWordPress " : hasWordPress,
392450 " hasJetpack " : hasJetpack,
393- " isJetpackActive " : hasJetpack ,
394- " isJetpackConnected " : hasJetpack ,
451+ " isJetpackActive " : isJetpackActive ,
452+ " isJetpackConnected " : isJetpackConnected ,
395453 " isWordPressDotCom " : isWordPressCom] )
396454 }
397455}
0 commit comments