@ -17,9 +17,11 @@ import io.mockk.coVerify
import io.mockk.every
import io.mockk.just
import io.mockk.mockk
import io.mockk.mockkConstructor
import io.mockk.runs
import io.mockk.slot
import io.mockk.spyk
import io.mockk.unmockkConstructor
import io.mockk.verify
import io.mockk.verifyOrder
import mozilla.appservices.places.BookmarkRoot
@ -87,6 +89,16 @@ class BookmarkControllerTest {
0 ,
listOf ( item , item , childItem , subfolder ) ,
)
private val largeTree = BookmarkNode (
BookmarkNodeType . FOLDER ,
" 123 " ,
null ,
0u ,
" Mobile " ,
null ,
0 ,
List ( WARN _OPEN _ALL _SIZE ) { item } ,
)
private val root = BookmarkNode (
BookmarkNodeType . FOLDER ,
BookmarkRoot . Root . id ,
@ -193,7 +205,7 @@ class BookmarkControllerTest {
fun `handleBookmarkExpand should refresh and change the active bookmark node` ( ) = runTestOnMain {
var loadBookmarkNodeInvoked = false
createController (
loadBookmarkNode = {
loadBookmarkNode = { _ : String , _ : Boolean ->
loadBookmarkNodeInvoked = true
tree
} ,
@ -358,6 +370,91 @@ class BookmarkControllerTest {
}
}
@Test
fun `WHEN handle opening folder bookmarks THEN all bookmarks in folder is opened in normal tabs` ( ) {
var showTabTrayInvoked = false
createController (
showTabTray = {
showTabTrayInvoked = true
} ,
loadBookmarkNode = { guid : String , _ : Boolean ->
fun recurseFind ( item : BookmarkNode , guid : String ) : BookmarkNode ? {
if ( item . guid == guid ) {
return item
} else {
item . children ?. iterator ( ) ?. forEach {
val res = recurseFind ( it , guid )
if ( res != null ) {
return res
}
}
return null
}
}
recurseFind ( tree , guid )
} ,
) . handleOpeningFolderBookmarks ( tree , BrowsingMode . Normal )
assertTrue ( showTabTrayInvoked )
verifyOrder {
addNewTabUseCase . invoke ( item . url !! , private = false )
addNewTabUseCase . invoke ( item . url !! , private = false )
addNewTabUseCase . invoke ( childItem . url !! , private = false )
homeActivity . browsingModeManager . mode = BrowsingMode . Normal
}
}
@Test
fun `WHEN handle opening folder bookmarks in private tabs THEN all bookmarks in folder is opened in private tabs` ( ) {
var showTabTrayInvoked = false
createController (
showTabTray = {
showTabTrayInvoked = true
} ,
loadBookmarkNode = { guid : String , _ : Boolean ->
fun recurseFind ( item : BookmarkNode , guid : String ) : BookmarkNode ? {
if ( item . guid == guid ) {
return item
} else {
item . children ?. iterator ( ) ?. forEach {
val res = recurseFind ( it , guid )
if ( res != null ) {
return res
}
}
return null
}
}
recurseFind ( tree , guid )
} ,
) . handleOpeningFolderBookmarks ( tree , BrowsingMode . Private )
assertTrue ( showTabTrayInvoked )
verifyOrder {
addNewTabUseCase . invoke ( item . url !! , private = true )
addNewTabUseCase . invoke ( item . url !! , private = true )
addNewTabUseCase . invoke ( childItem . url !! , private = true )
homeActivity . browsingModeManager . mode = BrowsingMode . Private
}
}
@Test
fun `WHEN handle opening folder bookmarks with more than max items THEN warning is invoked` ( ) {
var warningInvoked = false
mockkConstructor ( DefaultBookmarkController :: class )
createController (
loadBookmarkNode = { _ : String , _ : Boolean ->
largeTree
} ,
warnLargeOpenAll = { _ : Int , _ : ( ) -> Unit -> warningInvoked = true } ,
) . handleOpeningFolderBookmarks ( tree , BrowsingMode . Normal )
unmockkConstructor ( DefaultBookmarkController :: class )
assertTrue ( warningInvoked )
}
@Test
fun `handleBookmarkDeletion for an item should properly call a passed in delegate` ( ) {
var deleteBookmarkNodesInvoked = false
@ -426,11 +523,12 @@ class BookmarkControllerTest {
@Suppress ( " LongParameterList " )
private fun createController (
loadBookmarkNode : suspend ( String ) -> BookmarkNode ? = { _ -> null } ,
loadBookmarkNode : suspend ( String , Boolean ) -> BookmarkNode ? = { _ , _ -> null } ,
showSnackbar : ( String ) -> Unit = { _ -> } ,
deleteBookmarkNodes : ( Set < BookmarkNode > , BookmarkRemoveType ) -> Unit = { _ , _ -> } ,
deleteBookmarkFolder : ( Set < BookmarkNode > ) -> Unit = { _ -> } ,
showTabTray : ( ) -> Unit = { } ,
warnLargeOpenAll : ( Int , ( ) -> Unit ) -> Unit = { _ : Int , _ : ( ) -> Unit -> } ,
) : BookmarkController {
return DefaultBookmarkController (
activity = homeActivity ,
@ -445,6 +543,7 @@ class BookmarkControllerTest {
deleteBookmarkNodes = deleteBookmarkNodes ,
deleteBookmarkFolder = deleteBookmarkFolder ,
showTabTray = showTabTray ,
warnLargeOpenAll = warnLargeOpenAll ,
settings = settings ,
)
}