main
 1describe Scale::SVG do
 2  subject { Scale::SVG.new }
 3
 4  describe "#to_xml" do
 5    it 'produces and empty xml document' do
 6      expected = <<-XML
 7<?xml version="1.0"?>
 8<svg xmlns="http://www.w3.org/2000/svg\" version="1.1" baseProfile="full"/>
 9      XML
10      expect(subject.to_xml).to eql(expected)
11    end
12
13    it 'applies a width' do
14      subject.width = rand(1000)
15      expected = <<-XML
16<?xml version="1.0"?>
17<svg xmlns="http://www.w3.org/2000/svg\" version="1.1" baseProfile="full" width="#{subject.width}"/>
18      XML
19      expect(subject.to_xml).to eql(expected)
20    end
21
22    it 'applies a height' do
23      subject.height = rand(1000)
24      expected = <<-XML
25<?xml version="1.0"?>
26<svg xmlns="http://www.w3.org/2000/svg\" version="1.1" baseProfile="full" height="#{subject.height}"/>
27      XML
28      expect(subject.to_xml).to eql(expected)
29    end
30
31    context "when nesting elements" do
32      it 'produces the correct xml' do
33        subject.add(Scale::Rectangle.new(width: "100%", height: "100%", fill: "red"))
34        expected = <<-XML
35<?xml version="1.0"?>
36<svg xmlns="http://www.w3.org/2000/svg\" version="1.1" baseProfile="full">
37  <rect width="100%" height="100%" fill="red"/>
38</svg>
39        XML
40        expect(subject.to_xml).to eql(expected)
41      end
42    end
43  end
44end