diff options
| author | Zog | 2018-01-17 15:49:39 +0100 |
|---|---|---|
| committer | Zog | 2018-01-25 17:18:00 +0100 |
| commit | ef62577ec90a0eb06c831052b6ab8aea8ade405f (patch) | |
| tree | c24c4deb965f3bb66835749aec1948eb06191d67 /spec | |
| parent | 69d1f47e21fea3c151eabafcdd9051d9d10e92a3 (diff) | |
| download | chouette-core-ef62577ec90a0eb06c831052b6ab8aea8ade405f.tar.bz2 | |
Refs #5586; Add more specs on AF83::Decorator::Link
Diffstat (limited to 'spec')
| -rw-r--r-- | spec/lib/af83/decorator/decorator_link_spec.rb | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/spec/lib/af83/decorator/decorator_link_spec.rb b/spec/lib/af83/decorator/decorator_link_spec.rb new file mode 100644 index 000000000..356dcc527 --- /dev/null +++ b/spec/lib/af83/decorator/decorator_link_spec.rb @@ -0,0 +1,75 @@ +RSpec.describe AF83::Decorator::Link, type: :decorator do + describe "#complete?" do + context "on a imcomplete link" do + it "should be false" do + expect(AF83::Decorator::Link.new.complete?).to be_falsy + expect(AF83::Decorator::Link.new(content: "foo").complete?).to be_falsy + expect(AF83::Decorator::Link.new(href: "foo").complete?).to be_falsy + end + end + + context "on a complete link" do + it "should be true" do + expect(AF83::Decorator::Link.new(href: "foo", content: "foo").complete?).to be_truthy + end + end + end + + describe "#class" do + let(:link){ + AF83::Decorator::Link.new(href: "foo", content: "foo", class: "initial_class") + } + + it "should override exisiting class" do + expect(link.html_options[:class]).to eq "initial_class" + link.class "new_class" + expect(link.html_options[:class]).to eq "new_class" + link.class = "another_class" + expect(link.html_options[:class]).to eq "another_class" + end + end + + describe "#extra_class" do + let(:link){ + AF83::Decorator::Link.new(href: "foo", content: "foo", class: "initial_class") + } + + it "should add to exisiting class" do + expect(link.html_options[:class]).to eq "initial_class" + link.extra_class "new_class" + expect(link.html_options[:class]).to eq "initial_class new_class" + link.extra_class = "another_class" + expect(link.html_options[:class]).to eq "initial_class new_class another_class" + end + end + + describe "#type" do + + let(:link){ + AF83::Decorator::Link.new(href: "foo", content: "foo") + } + + let(:context){ + Class.new do + def h + Class.new do + def link_to *args + HTMLElement.new(:a, 'foo', {}).to_html + end + end.new + end + end.new + } + + it "should allow for buttons" do + link.type = :button + expect(link.to_html).to match /\<button.*\<\/button\>/ + end + + it "should fallback to <a>" do + link.type = :spaghetti + link.bind_to_context context, :show + expect(link.to_html).to match /\<a.*\<\/a\>/ + end + end +end |
