discourse/spec/lib/validators/url_validator_spec.rb

36 lines
939 B
Ruby

# frozen_string_literal: true
RSpec.describe UrlValidator do
subject(:validate) { validator.validate_each(record, :website, record.website) }
let(:record) { Fabricate.build(:user_profile, user: Fabricate.build(:user)) }
let(:validator) { described_class.new(attributes: :website) }
[
"http://https://google.com",
"http://google/",
"ftp://ftp.google.com",
"http:///what.is.this",
"http://meta.discourse.org TEST",
].each do |invalid_url|
it "#{invalid_url} should not be valid" do
record.website = invalid_url
validate
expect(record.errors[:website]).to be_present
end
end
%w[
http://discourse.productions
https://google.com
http://xn--nw2a.xn--j6w193g/
http://見.香港/
].each do |valid_url|
it "#{valid_url} should be valid" do
record.website = valid_url
validate
expect(record.errors[:website]).to_not be_present
end
end
end