import { describe, expect, it } from 'vitest'; import { resolveInstallBannerState, shouldShowInstallBanner } from './installBanner'; describe('resolveInstallBannerState', () => { it('returns null when already installed', () => { expect(resolveInstallBannerState({ isInstalled: true, isStandalone: false, canInstall: true, isIos: true })).toBeNull(); }); it('returns null when running in standalone mode', () => { expect(resolveInstallBannerState({ isInstalled: false, isStandalone: true, canInstall: true, isIos: true })).toBeNull(); }); it('returns prompt when install prompt is available', () => { expect(resolveInstallBannerState({ isInstalled: false, isStandalone: false, canInstall: true, isIos: false })).toEqual({ variant: 'prompt' }); }); it('returns ios when on iOS without prompt', () => { expect(resolveInstallBannerState({ isInstalled: false, isStandalone: false, canInstall: false, isIos: true })).toEqual({ variant: 'ios' }); }); it('returns null when no install option exists', () => { expect(resolveInstallBannerState({ isInstalled: false, isStandalone: false, canInstall: false, isIos: false })).toBeNull(); }); }); describe('shouldShowInstallBanner', () => { it('returns null when dismissed', () => { const result = shouldShowInstallBanner( { isInstalled: false, isStandalone: false, canInstall: true, isIos: true }, true, ); expect(result).toBeNull(); }); it('returns state when not dismissed', () => { const result = shouldShowInstallBanner( { isInstalled: false, isStandalone: false, canInstall: true, isIos: false }, false, ); expect(result).toEqual({ variant: 'prompt' }); }); });