import { BehaviorSubject } from 'rxjs' ; import type { PublicMethodsOf } from '@osd/utility-types' ; import { ChromeBadge , ChromeBrand , ChromeBreadcrumb , ChromeService , InternalChromeStart } from './' ; const createStartContractMock = ( ) => { const startContract = { getHeaderComponent : jest . fn ( ) , navLinks : { getNavLinks$ : jest . fn ( ) , has : jest . fn ( ) , get : jest . fn ( ) , getAll : jest . fn ( ) , showOnly : jest . fn ( ) , update : jest . fn ( ) , enableForcedAppSwitcherNavigation : jest . fn ( ) , getForceAppSwitcherNavigation$ : jest . fn ( ) , } , recentlyAccessed : { add : jest . fn ( ) , get : jest . fn ( ) , get$ : jest . fn ( ) , } , docTitle : { change : jest . fn ( ) , reset : jest . fn ( ) , } , navControls : { registerLeft : jest . fn ( ) , registerCenter : jest . fn ( ) , registerRight : jest . fn ( ) , getLeft$ : jest . fn ( ) , getCenter$ : jest . fn ( ) , getRight$ : jest . fn ( ) , } , setAppTitle : jest . fn ( ) , setBrand : jest . fn ( ) , getBrand$ : jest . fn ( ) , setIsVisible : jest . fn ( ) , getIsVisible$ : jest . fn ( ) , addApplicationClass : jest . fn ( ) , removeApplicationClass : jest . fn ( ) , getApplicationClasses$ : jest . fn ( ) , getBadge$ : jest . fn ( ) , setBadge : jest . fn ( ) , getBreadcrumbs$ : jest . fn ( ) , setBreadcrumbs : jest . fn ( ) , getHelpExtension$ : jest . fn ( ) , setHelpExtension : jest . fn ( ) , setHelpSupportUrl : jest . fn ( ) , getIsNavDrawerLocked$ : jest . fn ( ) , getCustomNavLink$ : jest . fn ( ) , setCustomNavLink : jest . fn ( ) , } ; startContract . navLinks . getAll . mockReturnValue ( [ ] ) ; startContract . getBrand$ . mockReturnValue ( new BehaviorSubject ( { } as ChromeBrand ) ) ; startContract . getIsVisible$ . mockReturnValue ( new BehaviorSubject ( false ) ) ; startContract . getApplicationClasses$ . mockReturnValue ( new BehaviorSubject ( [ 'class-name' ] ) ) ; startContract . getBadge$ . mockReturnValue ( new BehaviorSubject ( { } as ChromeBadge ) ) ; startContract . getBreadcrumbs$ . mockReturnValue ( new BehaviorSubject ( [ { } as ChromeBreadcrumb ] ) ) ; startContract . getCustomNavLink$ . mockReturnValue ( new BehaviorSubject ( undefined ) ) ; startContract . getHelpExtension$ . mockReturnValue ( new BehaviorSubject ( undefined ) ) ; startContract . getIsNavDrawerLocked$ . mockReturnValue ( new BehaviorSubject ( false ) ) ; return startContract ; } ; type ChromeServiceContract = PublicMethodsOf < ChromeService > ; const createMock = ( ) => { const mocked = { start : jest . fn ( ) , stop : jest . fn ( ) , } ; mocked . start . mockResolvedValue ( createStartContractMock ( ) ) ; return mocked ; } ; export const chromeServiceMock = { create : createMock , createStartContract : createStartContractMock , } ;