Sha256: 69f8d29856c03dc9a99d8a8f1d4f38450aadc2cc959401cc0b76addb7eedac7a

Contents?: true

Size: 1.04 KB

Versions: 3

Compression:

Stored size: 1.04 KB

Contents

module Remarkable::Mongoid
  module Matchers
    def validate_uniqueness_of(attr)
      ValidateUniquenessOfMatcher.new(attr)
    end
    
    class ValidateUniquenessOfMatcher
      attr_accessor :attr, :validation_type, :message

      def initialize(attr)
        self.attr = attr.to_sym
      end
      
      def with_message(message)
        self.message = message
        self
      end

      def matches?(subject)
        @subject    = subject
        validations = @subject._validators[attr]
        if validations
          validation = validations.detect { |k| k.class == ::Mongoid::Validations::UniquenessValidator }

          if validation && self.message
            validation.options[:message] == self.message
          else
            validation != nil
          end
        else
          false
        end
      end

      def description
        "validates that :#{attr} is unique"
      end

      def failure_message_for_should
        "\nUniqueness validation failure\nExpected: '#{attr}' to be unique"
      end
      

    end
  end
end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
remarkable_mongoid-0.1.3 lib/remarkable/mongoid/validate_uniqueness_of.rb
remarkable_mongoid-0.1.2 lib/remarkable_mongoid/validate_uniqueness_of.rb
remarkable_mongoid-0.1.1 lib/remarkable_mongoid/validate_uniqueness_of.rb