Sha256: 7643feef8581011969a87ec0d92ecbddaaf818dc8aaffa1541608196ac88b5dc

Contents?: true

Size: 1.73 KB

Versions: 1

Compression:

Stored size: 1.73 KB

Contents

require 'spec_helper'

describe AktionTestRails::Matchers::FactoryGirl::Validation do
  include described_class
  include AktionTestRails::Support::Rails::ModelBuilder

  after(:each) do
    FactoryGirl.factories.clear
  end

  it "accepts a valid factory" do
    define_model :user, :name => :string
    FactoryGirl.define do
      factory :user do
        name "Name"
      end
    end

    User.new.should have_valid_factory(:user)
  end

  it 'provides a description for one liners' do
    have_valid_factory(:user).description.should == "has a valid factory named :user"
  end

  context "when the factory does not exist" do
    before(:each) { define_model :user }

    it "does not accept the factory" do
      User.new.should_not have_valid_factory(:user)
    end

    it "says that the factory does not exist" do
      matcher = have_valid_factory(:user).tap{|m| m.matches?(User.new)}
      matcher.failure_message.should == <<-MSG.strip_heredoc
        Expected :user to be a valid factory.

        No factory by the name :user found
      MSG
    end
  end

  context 'when the factory has validation errors' do
    before(:each) do
      define_model :user, :name => :string do
        validates_presence_of :name
      end
      FactoryGirl.define do
        factory :user do
          name nil
        end
      end
    end

    it "does not accept the factory" do
      User.new.should_not have_valid_factory(:user)
    end

    it "should detail validation errors with the factory" do
      matcher = have_valid_factory(:user).tap{|m| m.matches?(User.new)}
      matcher.failure_message.should == <<-MSG.strip_heredoc
        Expected :user to be a valid factory.
        
        Failed Validations:
          Name can't be blank
      MSG
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
aktion_test_rails-0.3.0 spec/matchers/factory_girl/validation_spec.rb