Sha256: f9363b1f09bce7dba943546a1b2066e4a783773faefa2c554fa1ea6f0811e266

Contents?: true

Size: 1.45 KB

Versions: 8

Compression:

Stored size: 1.45 KB

Contents

require "spec_helper"
require "shamu/attributes"

describe Shamu::Attributes::Validation do
  let( :klass ) do
    Class.new do
      include Shamu::Attributes
      include Shamu::Attributes::Assignment
      include Shamu::Attributes::Validation

      attribute :name, presence: true

      def self.name
        "Example"
      end
    end
  end

  it "forwards unused options to .validates method" do
    TestClass = Class.new do
      include Shamu::Attributes
      include Shamu::Attributes::Validation
    end

    expect( TestClass ).to receive( :validates ).with( :name, presence: true )
    class TestClass
      attribute :name, on: :user, presence: true
    end
  end

  it "doesn't clear errors on call to valid?" do
    instance = klass.new( {} )
    instance.validate
    expect( instance ).not_to be_valid

    instance.name = "Something"
    expect( instance ).not_to be_valid
  end

  it "validates methods on validate" do
    instance = klass.new( {} )
    instance.validate

    expect( instance.errors ).to have_key :name
  end

  it "validates on first call to valid?" do
    instance = klass.new( {} )
    expect( instance ).to receive( :validate ).once.and_call_original
    instance.valid?
    instance.valid?
  end

  it "supports shamu validators with simple hash names" do
    nested = Class.new( klass ) do
      attribute :nested, valid: true
    end

    expect( nested.validators ).to include Shamu::Attributes::Validators::ValidValidator
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
shamu-0.0.24 spec/lib/shamu/attributes/validation_spec.rb
shamu-0.0.21 spec/lib/shamu/attributes/validation_spec.rb
shamu-0.0.20 spec/lib/shamu/attributes/validation_spec.rb
shamu-0.0.19 spec/lib/shamu/attributes/validation_spec.rb
shamu-0.0.18 spec/lib/shamu/attributes/validation_spec.rb
shamu-0.0.17 spec/lib/shamu/attributes/validation_spec.rb
shamu-0.0.15 spec/lib/shamu/attributes/validation_spec.rb
shamu-0.0.14 spec/lib/shamu/attributes/validation_spec.rb