aboutsummaryrefslogtreecommitdiffstats
path: root/spec
diff options
context:
space:
mode:
Diffstat (limited to 'spec')
-rw-r--r--spec/spec/elements/ClipPath.js2
-rw-r--r--spec/spec/elements/Gradient.js83
-rw-r--r--spec/spec/gradient.js86
3 files changed, 127 insertions, 44 deletions
diff --git a/spec/spec/elements/ClipPath.js b/spec/spec/elements/ClipPath.js
index 6ed6bfe..a476884 100644
--- a/spec/spec/elements/ClipPath.js
+++ b/spec/spec/elements/ClipPath.js
@@ -32,7 +32,7 @@ describe('ClipPath.js', () => {
})
})
- describe('target()', () => {
+ describe('targets()', () => {
it('gets all targets of this clipPath', () => {
const canvas = SVG().addTo(container)
const clip = canvas.clip()
diff --git a/spec/spec/elements/Gradient.js b/spec/spec/elements/Gradient.js
new file mode 100644
index 0000000..13e58a7
--- /dev/null
+++ b/spec/spec/elements/Gradient.js
@@ -0,0 +1,83 @@
+/* globals describe, expect, it, spyOn, jasmine, container */
+
+import { Gradient, SVG, Container } from '../../../src/main.js'
+
+const { any, objectContaining, createSpy } = jasmine
+
+describe('Gradient.js', () => {
+ describe('()', () => {
+ it('creates a new object of type LinearGradient', () => {
+ const gradient = new Gradient('linear')
+ expect(gradient).toEqual(any(Gradient))
+ expect(gradient.type).toBe('linearGradient')
+ })
+
+ it('creates a new object of type RadialGradient', () => {
+ const gradient = new Gradient('radial')
+ expect(gradient).toEqual(any(Gradient))
+ expect(gradient.type).toBe('radialGradient')
+ })
+
+ it('sets passed attributes on the element', () => {
+ expect(new Gradient('linear', { id: 'foo' }).id()).toBe('foo')
+ })
+ })
+
+ describe('attr()', () => {
+ it('relays to parents attr method for any call except transformation', () => {
+ const gradient = new Gradient('linear')
+ const spy = spyOn(Container.prototype, 'attr')
+ gradient.attr(1, 2, 3)
+ gradient.attr('transform', 2, 3)
+
+ expect(spy).toHaveBeenCalledWith(1, 2, 3)
+ expect(spy).toHaveBeenCalledWith('gradientTransform', 2, 3)
+ })
+ })
+
+ describe('bbox()', () => {
+ it('returns an empty box', () => {
+ expect(new Gradient('linear').bbox().isNulled()).toBe(true)
+ })
+ })
+
+ describe('targets()', () => {
+ it('gets all targets of this gradient', () => {
+ const canvas = SVG().addTo(container)
+ const gradient = canvas.gradient('linear')
+ const rect = canvas.rect(100, 100).fill(gradient)
+ expect(gradient.targets()).toEqual([ rect ])
+ })
+ })
+
+ describe('toString()', () => {
+ it('calls url() and returns the result', () => {
+ const gradient = new Gradient('linear')
+ expect(gradient.toString()).toBe(gradient.url())
+ })
+ })
+
+ describe('update()', () => {
+ it('clears the element', () => {
+ const gradient = new Gradient('linear')
+ gradient.stop(0.1, '#fff')
+ expect(gradient.update().children()).toEqual([])
+ })
+
+ it('executes a function in the context of the gradient', () => {
+ const gradient = new Gradient('linear')
+ const spy = createSpy('gradient')
+ gradient.update(spy)
+ expect(spy.calls.all()).toEqual([
+ objectContaining({ object: gradient, args: [ gradient ] })
+ ])
+ })
+ })
+
+ describe('url()', () => {
+ it('returns url(#id)', () => {
+ const gradient = new Gradient('linear').id('foo')
+ expect(gradient.url()).toBe('url("#foo")')
+ })
+ })
+})
diff --git a/spec/spec/gradient.js b/spec/spec/gradient.js
index cab9142..7280a98 100644
--- a/spec/spec/gradient.js
+++ b/spec/spec/gradient.js
@@ -1,101 +1,101 @@
-describe('Gradient', function() {
+describe('Gradient', function () {
var rect, gradient
- beforeEach(function() {
- rect = draw.rect(100,100)
- gradient = draw.gradient('linear', function(add) {
+ beforeEach(function () {
+ rect = draw.rect(100, 100)
+ gradient = draw.gradient('linear', function (add) {
add.stop({ offset: 0, color: '#333', opacity: 1 })
add.stop({ offset: 1, color: '#fff', opacity: 1 })
})
- radial = draw.gradient('radial', function(add) {
+ radial = draw.gradient('radial', function (add) {
add.stop({ offset: 0, color: '#333', opacity: 1 })
add.stop({ offset: 1, color: '#fff', opacity: 1 })
})
})
- afterEach(function() {
+ afterEach(function () {
rect.remove()
gradient.remove()
})
- it('is an instance of SVG.Gradient', function() {
+ it('is an instance of SVG.Gradient', function () {
expect(gradient instanceof SVG.Gradient).toBe(true)
})
- it('allows creation of a new gradient without block', function() {
+ it('allows creation of a new gradient without block', function () {
gradient = draw.gradient('linear')
expect(gradient.children().length).toBe(0)
})
- describe('url()', function() {
- it('returns the id of the gradient wrapped in url()', function() {
- expect(gradient.url()).toBe('url(#' + gradient.id() + ')')
+ describe('url()', function () {
+ it('returns the id of the gradient wrapped in url()', function () {
+ expect(gradient.url()).toBe('url("#' + gradient.id() + '")')
})
})
-
- describe('from()', function() {
- it('sets fx and fy attribute for radial gradients', function() {
+
+ describe('from()', function () {
+ it('sets fx and fy attribute for radial gradients', function () {
radial.from(7, 10)
expect(radial.attr('fx')).toBe(7)
expect(radial.attr('fy')).toBe(10)
})
- it('sets x1 and y1 attribute for linear gradients', function() {
+ it('sets x1 and y1 attribute for linear gradients', function () {
gradient.from(7, 10)
expect(gradient.attr('x1')).toBe(7)
expect(gradient.attr('y1')).toBe(10)
})
})
-
- describe('to()', function() {
- it('sets cx and cy attribute for radial gradients', function() {
+
+ describe('to()', function () {
+ it('sets cx and cy attribute for radial gradients', function () {
radial.to(75, 105)
expect(radial.attr('cx')).toBe(75)
expect(radial.attr('cy')).toBe(105)
})
- it('sets x2 and y2 attribute for linear gradients', function() {
+ it('sets x2 and y2 attribute for linear gradients', function () {
gradient.to(75, 105)
expect(gradient.attr('x2')).toBe(75)
expect(gradient.attr('y2')).toBe(105)
})
})
- describe('attr()', function() {
- it('will catch transform attribues and convert them to gradientTransform', function() {
- expect(gradient.translate(100,100).attr('gradientTransform')).toBe('matrix(1,0,0,1,100,100)')
+ describe('attr()', function () {
+ it('will catch transform attribues and convert them to gradientTransform', function () {
+ expect(gradient.translate(100, 100).attr('gradientTransform')).toBe('matrix(1,0,0,1,100,100)')
})
})
- describe('toString()', function() {
- it('returns the id of the gradient wrapped in url()', function() {
- expect(gradient + '').toBe('url(#' + gradient.id() + ')')
+ describe('toString()', function () {
+ it('returns the id of the gradient wrapped in url()', function () {
+ expect(gradient + '').toBe('url("#' + gradient.id() + '")')
})
- it('is called when instance is passed as an attribute value', function() {
+ it('is called when instance is passed as an attribute value', function () {
rect.attr('fill', gradient)
- expect(rect.attr('fill')).toBe('url(#' + gradient.id() + ')')
+ expect(rect.attr('fill')).toBe('url("#' + gradient.id() + '")')
})
})
- describe('input values', function() {
+ describe('input values', function () {
var s1, s2
- it('accepts floats', function() {
- gradient = draw.gradient('linear', function(add) {
+ it('accepts floats', function () {
+ gradient = draw.gradient('linear', function (add) {
s1 = add.stop({ offset: 0.12, color: '#333', opacity: 1 })
s2 = add.stop({ offset: 0.93, color: '#fff', opacity: 1 })
})
expect(s1.attr('offset')).toBe(0.12)
expect(s2.attr('offset')).toBe(0.93)
})
- it('accepts string floats', function() {
- gradient = draw.gradient('linear', function(add) {
+ it('accepts string floats', function () {
+ gradient = draw.gradient('linear', function (add) {
s1 = add.stop({ offset: '0.13', color: '#333', opacity: 1 })
s2 = add.stop({ offset: '0.92', color: '#fff', opacity: 1 })
})
expect(s1.attr('offset')).toBe(0.13)
expect(s2.attr('offset')).toBe(0.92)
})
- it('accept percentages', function() {
- gradient = draw.gradient('linear', function(add) {
+ it('accept percentages', function () {
+ gradient = draw.gradient('linear', function (add) {
s1 = add.stop({ offset: '14%', color: '#333', opacity: 1 })
s2 = add.stop({ offset: '91%', color: '#fff', opacity: 1 })
})
@@ -104,23 +104,23 @@ describe('Gradient', function() {
})
})
- describe('update()', function() {
+ describe('update()', function () {
- it('removes all existing children first', function() {
- gradient = draw.gradient('linear', function(add) {
+ it('removes all existing children first', function () {
+ gradient = draw.gradient('linear', function (add) {
s1 = add.stop({ offset: 0.12, color: '#333', opacity: 1 })
s2 = add.stop({ offset: 0.93, color: '#fff', opacity: 1 })
})
expect(gradient.children().length).toBe(2)
- gradient.update(function(add) {
+ gradient.update(function (add) {
s1 = add.stop({ offset: 0.33, color: '#666', opacity: 1 })
s2 = add.stop({ offset: 1, color: '#000', opacity: 1 })
})
expect(gradient.children().length).toBe(2)
})
- it('accepts multiple aruments on fixed positions', function() {
- gradient = draw.gradient('linear', function(add) {
+ it('accepts multiple aruments on fixed positions', function () {
+ gradient = draw.gradient('linear', function (add) {
s1 = add.stop(0.11, '#333')
s2 = add.stop(0.94, '#fff', 0.5)
})
@@ -134,10 +134,10 @@ describe('Gradient', function() {
})
- describe('get()', function() {
+ describe('get()', function () {
- it('returns the stop at a given index', function() {
- gradient = draw.gradient('linear', function(add) {
+ it('returns the stop at a given index', function () {
+ gradient = draw.gradient('linear', function (add) {
s1 = add.stop({ offset: 0.12, color: '#333', opacity: 1 })
s2 = add.stop({ offset: 0.93, color: '#fff', opacity: 1 })
})