Files
orca/mobile/src/browser/mobile-browser-address-sync.test.ts

55 lines
1.6 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import { resolveMobileBrowserAddressSync } from './mobile-browser-address-sync'
describe('resolveMobileBrowserAddressSync', () => {
it('syncs the tab URL when the input is not focused', () => {
const result = resolveMobileBrowserAddressSync(
{ focused: false, url: 'https://old.example/' },
{ focused: false, url: 'https://new.example/' }
)
expect(result).toEqual({
nextState: { focused: false, url: 'https://new.example/' },
shouldSyncValue: true
})
})
it('defers tab URL sync while the user is editing', () => {
const result = resolveMobileBrowserAddressSync(
{ focused: false, url: 'https://old.example/' },
{ focused: true, url: 'https://new.example/' }
)
expect(result).toEqual({
nextState: { focused: true, url: 'https://new.example/' },
shouldSyncValue: false
})
})
it('syncs the latest tab URL when editing ends', () => {
const result = resolveMobileBrowserAddressSync(
{ focused: true, url: 'https://new.example/' },
{ focused: false, url: 'https://new.example/' }
)
expect(result).toEqual({
nextState: { focused: false, url: 'https://new.example/' },
shouldSyncValue: true
})
})
it('preserves externally updated address text when focus and tab URL are unchanged', () => {
const previous = { focused: false, url: 'https://new.example/' }
const result = resolveMobileBrowserAddressSync(previous, {
focused: false,
url: 'https://new.example/'
})
expect(result).toEqual({
nextState: previous,
shouldSyncValue: false
})
})
})