docbrown/spec/helpers/crayons_helper_spec.rb
2022-01-14 17:14:42 +07:00

47 lines
1.6 KiB
Ruby

require "rails_helper"
RSpec.describe CrayonsHelper, type: :helper do
describe "#crayons_icon_tag" do
let(:icon_tag) { helper.crayons_icon_tag("twitter.svg") }
it "generates an SVG tag" do
expect(icon_tag).to match(%r{\A<svg.*</svg>\n\z}m)
end
it "includes the correct class" do
expect(icon_tag).to match(/class="crayons-icon"/)
end
it "allows disabling color inheritance via the native attribute" do
icon_tag = helper.crayons_icon_tag(:twitter, native: true)
expect(icon_tag).to match(/class="crayons-icon crayons-icon--default"/)
end
it "adds the correct ARIA role" do
expect(icon_tag).to match(/role="img"/)
end
it "works when the .svg suffix is omitted" do
expect(helper.crayons_icon_tag("twitter")).to eq(icon_tag)
end
it "accepts a symbol for the name parameter" do
expect(helper.crayons_icon_tag(:twitter)).to eq(icon_tag)
end
it "allows specifying additional CSS classes" do
icon_tag = helper.crayons_icon_tag("twitter", class: "pointer-events-none")
expect(icon_tag).to match(/class="crayons-icon pointer-events-none"/)
end
it "passes additional keyword arguments to the wrapped tag" do
icon_tag = helper.crayons_icon_tag("twitter", title: "Test")
expect(icon_tag).to match(%r{<title.*>Test</title>})
end
it "allows mixing extra classes and the native option" do
icon_tag = helper.crayons_icon_tag(:twitter, class: "test", native: true)
expect(icon_tag).to match(/class="crayons-icon crayons-icon--default test"/)
end
end
end