Sha256: 8eefb79237c73dd482c3b2f423e04b1cf0c61aae89ef46034fa5a29fadd00671

Contents?: true

Size: 1.94 KB

Versions: 27

Compression:

Stored size: 1.94 KB

Contents

# frozen_string_literal: true
# encoding: utf-8

require "spec_helper"

describe Mongoid::Validatable::FormatValidator do

  describe "#validate_each" do

    let(:product) do
      Product.new
    end

    context "when the field is not localized" do

      let(:validator) do
        described_class.new(attributes: [:brand_name], with: /\A[a-z]*\z/i)
      end

      context "when the value is valid" do

        before do
          validator.validate_each(product, :brand_name, "Apple")
        end

        it "adds no errors" do
          expect(product.errors[:brand_name]).to be_empty
        end
      end

      context "when the value is invalid" do

        before do
          validator.validate_each(product, :brand_name, "123")
        end

        it "adds errors" do
          expect(product.errors[:brand_name]).to eq(["is invalid"])
        end
      end
    end

    context "when the field is localized" do

      let(:validator) do
        described_class.new(attributes: [:website], with: URI.regexp)
      end

      context "when the localized value is valid" do

        before do
          validator.validate_each(product, :website, { "en" => "http://www.apple.com" })
        end

        it "adds no errors" do
          expect(product.errors[:website]).to be_empty
        end
      end

      context "when one of the localized values is invalid" do

        before do
          validator.validate_each(
            product,
            :website, { "en" => "http://www.apple.com", "fr" => "not_a_website" }
          )
        end

        it "adds errors" do
          expect(product.errors[:website]).to eq(["is invalid"])
        end
      end

      context "when the localized value is invalid" do

        before do
          validator.validate_each(product, :website, { "en" => "not_a_website" })
        end

        it "adds errors" do
          expect(product.errors[:website]).to eq(["is invalid"])
        end
      end
    end
  end
end

Version data entries

27 entries across 27 versions & 2 rubygems

Version Path
mongoid-7.3.5 spec/mongoid/validatable/format_spec.rb
mongoid-7.3.4 spec/mongoid/validatable/format_spec.rb
mongoid-7.1.11 spec/mongoid/validatable/format_spec.rb
mongoid-7.2.6 spec/mongoid/validatable/format_spec.rb
mongoid-7.3.3 spec/mongoid/validatable/format_spec.rb
mongoid-7.3.2 spec/mongoid/validatable/format_spec.rb
mongoid-7.2.5 spec/mongoid/validatable/format_spec.rb
mongoid-7.1.10 spec/mongoid/validatable/format_spec.rb
mongoid-7.1.9 spec/mongoid/validatable/format_spec.rb
mongoid-7.2.4 spec/mongoid/validatable/format_spec.rb
mongoid-7.3.1 spec/mongoid/validatable/format_spec.rb
tdiary-5.1.6 vendor/bundle/ruby/2.7.0/gems/mongoid-7.1.7/spec/mongoid/validatable/format_spec.rb
mongoid-7.3.0 spec/mongoid/validatable/format_spec.rb
mongoid-7.2.3 spec/mongoid/validatable/format_spec.rb
mongoid-7.1.8 spec/mongoid/validatable/format_spec.rb
mongoid-7.2.2 spec/mongoid/validatable/format_spec.rb
mongoid-7.2.1 spec/mongoid/validatable/format_spec.rb
mongoid-7.1.7 spec/mongoid/validatable/format_spec.rb
mongoid-7.2.0 spec/mongoid/validatable/format_spec.rb
mongoid-7.1.6 spec/mongoid/validatable/format_spec.rb