summaryrefslogtreecommitdiffstats
path: root/debian/missing-sources/epoch/tests/unit/core/css.coffee
diff options
context:
space:
mode:
Diffstat (limited to 'debian/missing-sources/epoch/tests/unit/core/css.coffee')
-rw-r--r--debian/missing-sources/epoch/tests/unit/core/css.coffee85
1 files changed, 85 insertions, 0 deletions
diff --git a/debian/missing-sources/epoch/tests/unit/core/css.coffee b/debian/missing-sources/epoch/tests/unit/core/css.coffee
new file mode 100644
index 0000000..00cce68
--- /dev/null
+++ b/debian/missing-sources/epoch/tests/unit/core/css.coffee
@@ -0,0 +1,85 @@
+describe 'Epoch.QueryCSS', ->
+ styleMap =
+ '#container rect':
+ 'fill': 'blue'
+ 'stroke': 'red'
+ 'stroke-width': '5px'
+ '#container rect.a':
+ 'fill': 'green'
+ 'stroke': 'yellow'
+ 'stroke-width': '1px'
+ 'rect#byid':
+ 'fill': 'purple'
+ 'stroke': '#94105A'
+ 'stroke-width': '15px'
+ 'body.alt-color rect#byid':
+ 'fill': '#abcdef1'
+ 'stroke': '#48419A'
+ 'stroke-width': '2em'
+
+ [container, svg, styleTag] = [null, null, null]
+
+ makeStyleSheet = ->
+ cssStatements = []
+ for selector, rules of styleMap
+ cssStatements.push (selector + "{" + ("#{k}: #{v}" for k, v of rules).join(';') + "}")
+ css = cssStatements.join('\n')
+ styleTag = addStyleSheet(css)
+
+ makeContainer = ->
+ container = d3.select(doc.body).append('div')
+ .attr('id', 'container')
+ svg = container.append('svg')
+ .attr('width', 10)
+ .attr('height', 10)
+
+ assertStyles = (object, selector) ->
+ unless object?
+ assert(false, "Object contains no styles")
+
+ unless (mapping = styleMap[selector])?
+ assert(false, "Could not find styles with selector: #{selector}")
+
+ for key, value of mapping
+ assert.equal object[key], value, "Style mismatch on rule '#{key}'"
+
+ before (done) ->
+ makeStyleSheet()
+ makeContainer()
+ done()
+
+ after (done) ->
+ doc.head.removeChild(styleTag)
+ doc.body.removeChild(container.node())
+ done()
+
+ describe 'getStyles', ->
+ it 'should find styles for an svg element', ->
+ styles = Epoch.QueryCSS.getStyles('rect', container)
+ assertStyles styles, '#container rect'
+
+ it 'should find styles using a specific class name', ->
+ styles = Epoch.QueryCSS.getStyles('rect.a', container)
+ assertStyles styles, '#container rect.a'
+
+ it 'should find styles using an id', ->
+ styles = Epoch.QueryCSS.getStyles('rect#byid', container)
+ assertStyles styles, 'rect#byid'
+
+ describe 'purge', ->
+ before (done) ->
+ d3.select(doc.body).attr('class', 'alt-color')
+ done()
+
+ after (done) ->
+ d3.select(doc.body).attr('class', null)
+ done()
+
+ it 'should find cached styles before a purge', ->
+ styles = Epoch.QueryCSS.getStyles('rect#byid', container)
+ assertStyles styles, 'rect#byid'
+
+ it 'should find new styles after purging the cache', ->
+ Epoch.QueryCSS.purge()
+ styles = Epoch.QueryCSS.getStyles('rect#byid', container)
+ assertStyles styles, 'body.alt-color rect#byid'