summaryrefslogtreecommitdiff
path: root/spec/validators/js_regex_validator_spec.rb
blob: d34ab78b44f540a399378d5366a1b860eff33c2f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# frozen_string_literal: true

require 'spec_helper'

RSpec.describe JsRegexValidator do
  describe '#validates_each' do
    using RSpec::Parameterized::TableSyntax

    let(:validator) { described_class.new(attributes: [:user_default_internal_regex]) }
    let(:application_setting) { build(:application_setting, user_default_external: true) }

    where(:user_default_internal_regex, :result) do
      nil            | []
      ''             | []
      '(?#comment)'  | ['Regex Pattern (?#comment) can not be expressed in Javascript']
      '(?(a)b|c)'    | ['invalid conditional pattern: /(?(a)b|c)/i']
    end

    with_them do
      it 'generates correct errors' do
        validator.validate_each(application_setting, :user_default_internal_regex, user_default_internal_regex)

        expect(application_setting.errors[:user_default_internal_regex]).to eq result
      end
    end
  end
end