Sha256: c13d2eb660123bf02bc24e60abd7494bed3994a8899efc2f8b8a02217815acf7

Contents?: true

Size: 1.46 KB

Versions: 3

Compression:

Stored size: 1.46 KB

Contents

require_relative '../../../spec_helper'
require 'data_mapper/validation/resource_extensions'

describe DataMapper::Validation::ResourceExtensions, '#save' do
  before :all do
    class SaveTestResource
      include DataMapper::Resource

      property :id, Serial

      def _persist
        self
      end
    end

    SaveTestResource.finalize
  end

  subject { SaveTestResource.new }

  it 'returns false when #valid? returns false' do
    expect(subject).to receive(:valid?).and_return(false)

    expect(subject.save).to be_false
  end

  it 'calls #validation_rules.assert_valid_context with its #default_validation_context' do
    context_name = :default
    contextual_rule_set = mock(DataMapper::Validation::ContextualRuleSet)
    contextual_rule_set.stub(:current_context)
    subject.stub(:save_self)
    subject.stub(:validation_rules => contextual_rule_set)

    expect(subject).to receive(:default_validation_context).and_return(context_name)
    expect(contextual_rule_set).to receive(:assert_valid_context).with(context_name)

    subject.save
  end

  it 'calls #save_self' do
    expect(subject).to receive(:save_self)

    subject.save
  end

  it 'pushes its default_validation_context on the Context stack' do
    context_name = :default
    allow(subject).to receive(:default_validation_context).and_return(context_name)
    expect(subject).to receive(:_save) do
      expect(DataMapper::Validation::Context.current).to be(context_name)
    end

    subject.save
  end

end

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
sbf-dm-validations-1.4.0 spec/data_mapper/validation/resource_extensions/save_spec.rb
sbf-dm-validations-1.3.0 spec/data_mapper/validation/resource_extensions/save_spec.rb
sbf-dm-validations-1.3.0.beta spec/data_mapper/validation/resource_extensions/save_spec.rb