diff --git a/spec/shared/models/sanitizable.rb b/spec/shared/models/sanitizable.rb new file mode 100644 index 000000000..542bc8126 --- /dev/null +++ b/spec/shared/models/sanitizable.rb @@ -0,0 +1,51 @@ +shared_examples "sanitizable" do + let(:sanitizable) { build(model_name(described_class)) } + + it "is sanitized" do + sanitizable.description = "" + + sanitizable.valid? + + expect(sanitizable.description).to eq("alert('danger');") + end + + it "is html_safe" do + sanitizable.description = "" + + sanitizable.valid? + + expect(sanitizable.description).to be_html_safe + end + + it "is sanitized using globalize accessors" do + sanitizable.description_en = "" + + sanitizable.valid? + + expect(sanitizable.description_en).to eq("alert('danger');") + end + + it "is html_safe using globalize accessors" do + sanitizable.description_en = "" + + sanitizable.valid? + + expect(sanitizable.description_en).to be_html_safe + end + + describe "#tag_list" do + before do + unless described_class.included_modules.include?(Taggable) + skip "#{described_class} does not have a tag list" + end + end + + it "sanitizes the tag list" do + sanitizable.tag_list = "user_id=1" + + sanitizable.valid? + + expect(sanitizable.tag_list).to eq(["user_id1"]) + end + end +end