In this PR (https://github.com/consul/consul/pull/4683) a new syntax was introduced in the component specs to check that the component was not rendering. It seems interesting to add this syntax to the rest of the cases and thus unify the way we check that a component is not rendering.
94 lines
3.0 KiB
Ruby
94 lines
3.0 KiB
Ruby
require "rails_helper"
|
|
|
|
describe Shared::LinkListComponent do
|
|
it "renders nothing with an empty list" do
|
|
render_inline Shared::LinkListComponent.new
|
|
|
|
expect(page.native.inner_html).to be_empty
|
|
end
|
|
|
|
it "returns nothing with a list of nil elements" do
|
|
render_inline Shared::LinkListComponent.new(nil, nil)
|
|
|
|
expect(page.native.inner_html).to be_empty
|
|
end
|
|
|
|
it "generates a list of links" do
|
|
render_inline Shared::LinkListComponent.new(
|
|
["Home", "/"], ["Info", "/info"], class: "menu"
|
|
)
|
|
list = page.find("body").native.inner_html
|
|
|
|
expect(list).to eq '<ul class="menu">' + "\n" +
|
|
'<li><a href="/">Home</a></li>' + "\n" +
|
|
'<li><a href="/info">Info</a></li>' + "\n</ul>\n"
|
|
end
|
|
|
|
it "accepts anchor tags" do
|
|
render_inline Shared::LinkListComponent.new(
|
|
'<a href="/">Home</a>'.html_safe, ["Info", "/info"], class: "menu"
|
|
)
|
|
list = page.find("body").native.inner_html
|
|
|
|
expect(list).to eq '<ul class="menu">' + "\n" +
|
|
'<li><a href="/">Home</a></li>' + "\n" +
|
|
'<li><a href="/info">Info</a></li>' + "\n</ul>\n"
|
|
end
|
|
|
|
it "accepts options for links" do
|
|
render_inline Shared::LinkListComponent.new(
|
|
["Home", "/", class: "root"], ["Info", "/info", id: "info"]
|
|
)
|
|
|
|
expect(page).to have_css "a", count: 2
|
|
expect(page).to have_css "a.root", count: 1, exact_text: "Home"
|
|
expect(page).to have_css "a#info", count: 1, exact_text: "Info"
|
|
end
|
|
|
|
it "ignores nil entries" do
|
|
render_inline Shared::LinkListComponent.new(
|
|
["Home", "/", class: "root"], nil, ["Info", "/info", id: "info"]
|
|
)
|
|
|
|
expect(page).to have_css "li", count: 2
|
|
expect(page).to have_css "a.root", count: 1, exact_text: "Home"
|
|
expect(page).to have_css "a#info", count: 1, exact_text: "Info"
|
|
end
|
|
|
|
it "ignores empty entries" do
|
|
render_inline Shared::LinkListComponent.new(
|
|
["Home", "/", class: "root"], "", ["Info", "/info", id: "info"]
|
|
)
|
|
|
|
expect(page).to have_css "li", count: 2
|
|
expect(page).to have_css "a.root", count: 1, exact_text: "Home"
|
|
expect(page).to have_css "a#info", count: 1, exact_text: "Info"
|
|
end
|
|
|
|
it "accepts an optional condition to check the active element" do
|
|
render_inline Shared::LinkListComponent.new(
|
|
["Home", "/", false],
|
|
["Info", "/info", true],
|
|
["Help", "/help"]
|
|
)
|
|
|
|
expect(page).to have_css "li", count: 3
|
|
expect(page).to have_css "li[aria-current='true']", count: 1, exact_text: "Info"
|
|
end
|
|
|
|
it "allows passing both the active condition and link options" do
|
|
render_inline Shared::LinkListComponent.new(
|
|
["Home", "/", false, class: "root"],
|
|
["Info", "/info", true, id: "info"],
|
|
["Help", "/help", rel: "help"]
|
|
)
|
|
|
|
expect(page).to have_css "li", count: 3
|
|
expect(page).to have_css "li[aria-current='true']", count: 1, exact_text: "Info"
|
|
|
|
expect(page).to have_css "a.root", count: 1, exact_text: "Home"
|
|
expect(page).to have_css "a#info", count: 1, exact_text: "Info"
|
|
expect(page).to have_css "a[rel='help']", count: 1, exact_text: "Help"
|
|
end
|
|
end
|