mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-11-12 04:25:31 +08:00
64 lines
2.4 KiB
CoffeeScript
64 lines
2.4 KiB
CoffeeScript
|
ExtensionRegistry = require '../src/extension-registry'
|
||
|
|
||
|
class TestExtension
|
||
|
@name: 'TestExtension'
|
||
|
|
||
|
describe 'ExtensionRegistry', ->
|
||
|
beforeEach ->
|
||
|
@originalAdapters = ExtensionRegistry._deprecationAdapters
|
||
|
@registry = new ExtensionRegistry.Registry('Test')
|
||
|
spyOn @registry, 'triggerDebounced'
|
||
|
|
||
|
describe 'Registry', ->
|
||
|
it 'has trigger and listen to defined', ->
|
||
|
expect(@registry.trigger).toBeDefined()
|
||
|
expect(@registry.listen).toBeDefined()
|
||
|
expect(@registry.listenTo).toBeDefined()
|
||
|
|
||
|
describe 'register', ->
|
||
|
it 'throws an exception if extension not passed', ->
|
||
|
expect(=> @registry.register(null)).toThrow()
|
||
|
|
||
|
it 'throws an exception if extension does not have a name', ->
|
||
|
expect(=> @registry.register({})).toThrow()
|
||
|
|
||
|
it 'throws an exception if extension is array', ->
|
||
|
expect(=> @registry.register([])).toThrow()
|
||
|
|
||
|
it 'throws an exception if extension is string', ->
|
||
|
expect(=> @registry.register('')).toThrow()
|
||
|
|
||
|
it 'returns itself', ->
|
||
|
expect(@registry.register(TestExtension)).toBe(@registry)
|
||
|
|
||
|
it 'registers extension and triggers', ->
|
||
|
@registry.register(TestExtension)
|
||
|
expect(@registry.extensions().length).toEqual 1
|
||
|
expect(@registry.triggerDebounced).toHaveBeenCalled()
|
||
|
|
||
|
it 'does not add extensions with the same name', ->
|
||
|
expect(@registry.extensions().length).toEqual 0
|
||
|
@registry.register(TestExtension)
|
||
|
expect(@registry.extensions().length).toEqual 1
|
||
|
@registry.register({name: 'TestExtension'})
|
||
|
expect(@registry.extensions().length).toEqual 1
|
||
|
|
||
|
it 'calls deprecationAdapters if present for a role', ->
|
||
|
adapterSpy = jasmine.createSpy('adapterSpy').andCallFake (ext) -> ext
|
||
|
@registry = new ExtensionRegistry.Registry('Test', adapterSpy)
|
||
|
spyOn @registry, 'triggerDebounced'
|
||
|
@registry.register(TestExtension)
|
||
|
expect(adapterSpy.calls.length).toEqual 1
|
||
|
|
||
|
describe 'unregister', ->
|
||
|
it 'unregisters the extension if it exists', ->
|
||
|
@registry.register(TestExtension)
|
||
|
@registry.unregister(TestExtension)
|
||
|
expect(@registry.extensions().length).toEqual 0
|
||
|
|
||
|
it 'throws if invalid extension passed', ->
|
||
|
expect( => @registry.unregister('Test')).toThrow()
|
||
|
expect( => @registry.unregister(null)).toThrow()
|
||
|
expect( => @registry.unregister([])).toThrow()
|
||
|
expect( => @registry.unregister({})).toThrow()
|