# frozen_string_literal: true RSpec.describe "catalog/_constraints_element.html.erb" do describe "for simple display" do before do render partial: "catalog/constraints_element", locals: { label: "my label", value: "my value" } end it "renders label and value" do expect(rendered).to have_selector("span.applied-filter.constraint") do |s| expect(s).to have_css("span.constraint-value") expect(s).not_to have_css("a.constraint-value") expect(s).to have_selector "span.filter-name", content: "my label" expect(s).to have_selector "span.filter-value", content: "my value" end end end describe "with remove link" do before do render partial: "catalog/constraints_element", locals: { label: "my label", value: "my value", options: { remove: "http://remove" } } end it "includes remove link" do expect(rendered).to have_selector("span.applied-filter") do |s| expect(s).to have_selector(".remove[href='http://remove']") end end it "has an accessible remove label" do expect(rendered).to have_selector(".remove") do |s| expect(s).to have_content("Remove constraint my label: my value") end end end describe "with custom classes" do before do render partial: "catalog/constraints_element", locals: { label: "my label", value: "my value", options: { classes: %w[class1 class2] } } end it "includes them" do expect(rendered).to have_selector("span.applied-filter.constraint.class1.class2") end end describe "with no escaping" do before do render(partial: "catalog/constraints_element", locals: { label: "<span class='custom_label'>my label</span>".html_safe, value: "<span class='custom_value'>my value</span>".html_safe }) end it "does not escape key and value" do expect(rendered).to have_selector("span.applied-filter.constraint span.filter-name span.custom_label") expect(rendered).to have_selector("span.applied-filter.constraint span.filter-value span.custom_value") end end end