1 # frozen_string_literal: true
5 class SvgHelperTest < ActionView::TestCase
7 svg = legend_svg_tag("width" => 60, "height" => 40, "fill" => "green")
8 expected = <<~HTML.gsub(/\n\s*/, "")
9 <svg width="60" height="40">
10 <rect width="100%" height="100%" fill="green" />
13 assert_dom_equal expected, svg
16 def test_legend_border
17 svg = legend_svg_tag("width" => 60, "height" => 40, "border" => "red")
18 expected = <<~HTML.gsub(/\n\s*/, "")
19 <svg width="60" height="40">
20 <rect x="0.5" y="0.5" width="59" height="39" fill="none" stroke="red" />
23 assert_dom_equal expected, svg
26 def test_legend_border_width
27 svg = legend_svg_tag("width" => 60, "height" => 40, "border" => "red", "border-width" => 3)
28 expected = <<~HTML.gsub(/\n\s*/, "")
29 <svg width="60" height="40">
30 <rect x="1.5" y="1.5" width="57" height="37" fill="none" stroke="red" stroke-width="3" />
33 assert_dom_equal expected, svg
36 def test_legend_border_with_integer_coords
37 svg = legend_svg_tag("width" => 60, "height" => 40, "border" => "red", "border-width" => 2)
38 expected = <<~HTML.gsub(/\n\s*/, "")
39 <svg width="60" height="40">
40 <rect x="1" y="1" width="58" height="38" fill="none" stroke="red" stroke-width="2" />
43 assert_dom_equal expected, svg
46 def test_legend_border_fractional_width
47 svg = legend_svg_tag("width" => 60, "height" => 40, "border" => "red", "border-width" => 1.5)
48 expected = <<~HTML.gsub(/\n\s*/, "")
49 <svg width="60" height="40">
50 <rect x="0.75" y="0.75" width="58.5" height="38.5" fill="none" stroke="red" stroke-width="1.5" />
53 assert_dom_equal expected, svg
57 svg = legend_svg_tag("width" => 80, "height" => 15, "line" => "blue")
58 expected = <<~HTML.gsub(/\n\s*/, "")
59 <svg width="80" height="15">
60 <path d="M0,7.5 H80" stroke="blue" />
63 assert_dom_equal expected, svg
66 def test_legend_line_width
67 svg = legend_svg_tag("width" => 80, "height" => 15, "line" => "blue", "line-width" => 3)
68 expected = <<~HTML.gsub(/\n\s*/, "")
69 <svg width="80" height="15">
70 <path d="M0,7.5 H80" stroke="blue" stroke-width="3" />
73 assert_dom_equal expected, svg
76 def test_legend_line_with_integer_coords
77 svg = legend_svg_tag("width" => 80, "height" => 20, "line" => "blue")
78 expected = <<~HTML.gsub(/\n\s*/, "")
79 <svg width="80" height="20">
80 <path d="M0,10 H80" stroke="blue" />
83 assert_dom_equal expected, svg
86 def test_legend_casing
87 svg = legend_svg_tag("width" => 80, "height" => 20, "casing" => "yellow")
88 expected = <<~HTML.gsub(/\n\s*/, "")
89 <svg width="80" height="20">
90 <path d="M0,0.5 H80 M0,19.5 H80" stroke="yellow" />
93 assert_dom_equal expected, svg
96 def test_legend_casing_width
97 svg = legend_svg_tag("width" => 80, "height" => 20, "casing" => "yellow", "casing-width" => 5)
98 expected = <<~HTML.gsub(/\n\s*/, "")
99 <svg width="80" height="20">
100 <path d="M0,2.5 H80 M0,17.5 H80" stroke="yellow" stroke-width="5" />
103 assert_dom_equal expected, svg
106 def test_legend_casing_with_integer_coords
107 svg = legend_svg_tag("width" => 80, "height" => 20, "casing" => "yellow", "casing-width" => 2)
108 expected = <<~HTML.gsub(/\n\s*/, "")
109 <svg width="80" height="20">
110 <path d="M0,1 H80 M0,19 H80" stroke="yellow" stroke-width="2" />
113 assert_dom_equal expected, svg