require 'spec_helper'
describe Prawn::SVG::Elements::Gradient do
let(:document) { Prawn::SVG::Document.new(svg, [800, 600], {width: 800, height: 600}) }
let(:element) { Prawn::SVG::Elements::Gradient.new(document, document.root, [], fake_state) }
before do
allow(element).to receive(:assert_compatible_prawn_version)
element.process
end
describe "object bounding box" do
let(:svg) do
<<-SVG
SVG
end
it "is stored in the document gradients table" do
expect(document.gradients["flag"]).to eq element
end
it "returns correct gradient arguments for an element" do
arguments = element.gradient_arguments(double(bounding_box: [100, 100, 200, 0]))
expect(arguments).to eq(
from: [100.0, 100.0],
to: [120.0, 0.0],
stops: [[0, "ff0000"], [0.25, "ff0000"], [0.5, "ffffff"], [0.75, "0000ff"], [1, "0000ff"]]
)
end
it "returns nil if the element doesn't have a bounding box" do
arguments = element.gradient_arguments(double(bounding_box: nil))
expect(arguments).to be nil
end
end
describe "user space on use" do
let(:svg) do
<<-SVG
SVG
end
it "returns correct gradient arguments for an element" do
arguments = element.gradient_arguments(double)
expect(arguments).to eq(
from: [100.0, 100.0],
to: [200.0, 0.0],
stops: [[0, "ff0000"], [1, "0000ff"]]
)
end
end
end