mirror of
https://github.com/Foundry376/Mailspring.git
synced 2024-12-27 10:33:56 +08:00
68 lines
2.6 KiB
CoffeeScript
68 lines
2.6 KiB
CoffeeScript
StyleManager = require '../src/style-manager'
|
|
|
|
describe "StyleManager", ->
|
|
[manager, addEvents, removeEvents, updateEvents] = []
|
|
|
|
beforeEach ->
|
|
manager = new StyleManager
|
|
addEvents = []
|
|
removeEvents = []
|
|
updateEvents = []
|
|
|
|
manager.onDidAddStyleElement (event) -> addEvents.push(event)
|
|
manager.onDidRemoveStyleElement (event) -> removeEvents.push(event)
|
|
manager.onDidUpdateStyleElement (event) -> updateEvents.push(event)
|
|
|
|
describe "::addStyleSheet(source, params)", ->
|
|
it "adds a stylesheet based on the given source and returns a disposable allowing it to be removed", ->
|
|
disposable = manager.addStyleSheet("a {color: red;}")
|
|
|
|
expect(addEvents.length).toBe 1
|
|
expect(addEvents[0].textContent).toBe "a {color: red;}"
|
|
|
|
styleElements = manager.getStyleElements()
|
|
expect(styleElements.length).toBe 1
|
|
expect(styleElements[0].textContent).toBe "a {color: red;}"
|
|
|
|
disposable.dispose()
|
|
|
|
expect(removeEvents.length).toBe 1
|
|
expect(removeEvents[0].textContent).toBe "a {color: red;}"
|
|
expect(manager.getStyleElements().length).toBe 0
|
|
|
|
describe "when a sourcePath parameter is specified", ->
|
|
it "ensures a maximum of one style element for the given source path, updating a previous if it exists", ->
|
|
disposable1 = manager.addStyleSheet("a {color: red;}", sourcePath: '/foo/bar')
|
|
|
|
expect(addEvents.length).toBe 1
|
|
expect(addEvents[0].getAttribute('source-path')).toBe '/foo/bar'
|
|
|
|
disposable2 = manager.addStyleSheet("a {color: blue;}", sourcePath: '/foo/bar')
|
|
|
|
expect(addEvents.length).toBe 1
|
|
expect(updateEvents.length).toBe 1
|
|
expect(updateEvents[0].getAttribute('source-path')).toBe '/foo/bar'
|
|
expect(updateEvents[0].textContent).toBe "a {color: blue;}"
|
|
|
|
disposable2.dispose()
|
|
addEvents = []
|
|
|
|
manager.addStyleSheet("a {color: yellow;}", sourcePath: '/foo/bar')
|
|
|
|
expect(addEvents.length).toBe 1
|
|
expect(addEvents[0].getAttribute('source-path')).toBe '/foo/bar'
|
|
expect(addEvents[0].textContent).toBe "a {color: yellow;}"
|
|
|
|
describe "when a priority parameter is specified", ->
|
|
it "inserts the style sheet based on the priority", ->
|
|
manager.addStyleSheet("a {color: red}", priority: 1)
|
|
manager.addStyleSheet("a {color: blue}", priority: 0)
|
|
manager.addStyleSheet("a {color: green}", priority: 2)
|
|
manager.addStyleSheet("a {color: yellow}", priority: 1)
|
|
|
|
expect(manager.getStyleElements().map (elt) -> elt.textContent).toEqual [
|
|
"a {color: blue}"
|
|
"a {color: red}"
|
|
"a {color: yellow}"
|
|
"a {color: green}"
|
|
]
|