mirror of
https://github.com/atom/atom.git
synced 2026-04-06 03:02:13 -04:00
Focusable objects have ::focus and ::blur methods and a ::focused property. Focusable objects can be assigned a ::focusContext, and the ::focused property will only be true for at most one object with the same context.
37 lines
1.1 KiB
CoffeeScript
37 lines
1.1 KiB
CoffeeScript
{Model} = require 'theorist'
|
|
Focusable = require '../src/focusable'
|
|
FocusContext = require '../src/focus-context'
|
|
|
|
describe "Focusable mixin", ->
|
|
it "ensures that only a single model is focused for a given focus manager", ->
|
|
class Item extends Model
|
|
Focusable.includeInto(this)
|
|
|
|
focusContext = new FocusContext
|
|
item1 = new Item({focusContext})
|
|
item2 = new Item({focusContext})
|
|
item3 = new Item({focusContext})
|
|
|
|
expect(focusContext.focusedObject).toBe null
|
|
expect(item1.focused).toBe false
|
|
expect(item2.focused).toBe false
|
|
expect(item3.focused).toBe false
|
|
|
|
item1.focus()
|
|
expect(focusContext.focusedObject).toBe item1
|
|
expect(item1.focused).toBe true
|
|
expect(item2.focused).toBe false
|
|
expect(item3.focused).toBe false
|
|
|
|
item2.focus()
|
|
expect(focusContext.focusedObject).toBe item2
|
|
expect(item1.focused).toBe false
|
|
expect(item2.focused).toBe true
|
|
expect(item3.focused).toBe false
|
|
|
|
item2.blur()
|
|
expect(focusContext.focusedObject).toBe null
|
|
expect(item1.focused).toBe false
|
|
expect(item2.focused).toBe false
|
|
expect(item3.focused).toBe false
|