mirror of
https://github.com/Foundry376/Mailspring.git
synced 2025-02-01 04:50:59 +08:00
94 lines
3.7 KiB
CoffeeScript
94 lines
3.7 KiB
CoffeeScript
|
React = require 'react'
|
||
|
ComponentRegistry = require '../src/component-registry'
|
||
|
|
||
|
dummy_component = new ComponentRegistry.Component
|
||
|
name: 'dummy-component'
|
||
|
view: ->
|
||
|
role: 'button'
|
||
|
|
||
|
describe 'a Component', ->
|
||
|
it 'should not construct if a name or view is unspecified', ->
|
||
|
expect(-> ComponentRegistry.Component()).toThrow()
|
||
|
|
||
|
it 'should construct if there is both a name and a view', ->
|
||
|
i = ComponentRegistry.Component
|
||
|
name: 'reply-button'
|
||
|
view: ->
|
||
|
expect(i).toBeDefined()
|
||
|
|
||
|
describe 'ComponentRegistry', ->
|
||
|
beforeEach ->
|
||
|
ComponentRegistry._clear()
|
||
|
|
||
|
describe '.register()', ->
|
||
|
it 'throws an exception if passed a non-component', ->
|
||
|
expect(-> ComponentRegistry.register(null)).toThrow()
|
||
|
expect(-> ComponentRegistry.register("cheese")).toThrow()
|
||
|
|
||
|
it 'returns itself', ->
|
||
|
expect(ComponentRegistry.register dummy_component).toBe(ComponentRegistry)
|
||
|
|
||
|
it 'does not allow a component to be registered twice', ->
|
||
|
ComponentRegistry.register dummy_component
|
||
|
expect(-> ComponentRegistry.register dummy_component).toThrow()
|
||
|
|
||
|
describe '.getByName()', ->
|
||
|
it 'should return a component', ->
|
||
|
ComponentRegistry.register dummy_component
|
||
|
expect(ComponentRegistry.getByName dummy_component.name).toEqual dummy_component
|
||
|
|
||
|
it 'should throw an exception if a component is undefined', ->
|
||
|
expect(-> ComponentRegistry.getByName "not actually a name").toThrow()
|
||
|
|
||
|
describe '.findByName()', ->
|
||
|
it 'should return a component', ->
|
||
|
ComponentRegistry.register dummy_component
|
||
|
expect(ComponentRegistry.findByName dummy_component.name).toEqual dummy_component
|
||
|
|
||
|
it 'should return undefined if there is no component', ->
|
||
|
expect(ComponentRegistry.findByName "not actually a name").toBeUndefined()
|
||
|
|
||
|
it 'should return an alternate if there is no component, and an alt', ->
|
||
|
alt = "alt"
|
||
|
expect(ComponentRegistry.findByName "not actually a name", alt).toBe alt
|
||
|
|
||
|
describe '.findViewByName()', ->
|
||
|
it 'should return a component view', ->
|
||
|
ComponentRegistry.register dummy_component
|
||
|
expect(ComponentRegistry.findViewByName dummy_component.name).toEqual dummy_component.view
|
||
|
|
||
|
it 'should return undefined if there is no component', ->
|
||
|
expect(ComponentRegistry.findViewByName "not actually a name").toBeUndefined()
|
||
|
|
||
|
it 'should return an alternate if there is no component, and an alt', ->
|
||
|
alt = "alt"
|
||
|
expect(ComponentRegistry.findViewByName "not actually a name", alt).toBe alt
|
||
|
|
||
|
describe '.findAllByRole()', ->
|
||
|
it 'should return a list of matching components', ->
|
||
|
ComponentRegistry.register dummy_component
|
||
|
expect(ComponentRegistry.findAllByRole 'button').toEqual [dummy_component]
|
||
|
|
||
|
it 'should return an empty list for non-matching components', ->
|
||
|
expect(ComponentRegistry.findAllByRole 'dummy').toEqual []
|
||
|
|
||
|
describe '.findAllViewsByRole()', ->
|
||
|
it 'should return a list of matching components', ->
|
||
|
ComponentRegistry.register dummy_component
|
||
|
expect(ComponentRegistry.findAllViewsByRole 'button').toEqual [dummy_component.view]
|
||
|
|
||
|
it 'should return an empty list for non-matching components', ->
|
||
|
expect(ComponentRegistry.findAllViewsByRole 'dummy').toEqual []
|
||
|
|
||
|
describe '.unregister()', ->
|
||
|
it 'unregisters the component if it exists', ->
|
||
|
ComponentRegistry.register dummy_component
|
||
|
ComponentRegistry.unregister dummy_component.name
|
||
|
expect(ComponentRegistry.findByName dummy_component.name).toBeUndefined()
|
||
|
|
||
|
it 'notifies of an error if an invalid component is unregistered', ->
|
||
|
ComponentRegistry.register dummy_component
|
||
|
unregistered = ComponentRegistry.unregister "something-else"
|
||
|
expect(ComponentRegistry.findByName dummy_component.name).toEqual dummy_component
|
||
|
|