Sha256: dcd0c87930e7435306591d1f1b72332e01a5aa3e40cfb485700f632c9069ff06

Contents?: true

Size: 1.1 KB

Versions: 4

Compression:

Stored size: 1.1 KB

Contents

require 'spec_helper'

describe RailsAdmin::Config::LazyModel do
  describe '#store' do
    let(:block) { proc { register_instance_option('parameter') } } # an arbitrary instance method we can spy on
    let(:other_block) { proc { register_instance_option('other parameter') } }

    it "doesn't evaluate the block immediately" do
      expect_any_instance_of(RailsAdmin::Config::Model).not_to receive(:register_instance_option)

      RailsAdmin::Config::LazyModel.new(:Team, &block)
    end

    it 'evaluates block when reading' do
      expect_any_instance_of(RailsAdmin::Config::Model).to receive(:register_instance_option).with('parameter')

      lazy_model = RailsAdmin::Config::LazyModel.new(:Team, &block)
      lazy_model.groups # an arbitrary instance method on RailsAdmin::Config::Model to wake up lazy_model
    end

    it 'evaluates config block only once' do
      expect_any_instance_of(RailsAdmin::Config::Model).to receive(:register_instance_option).once.with('parameter')

      lazy_model = RailsAdmin::Config::LazyModel.new(:Team, &block)
      lazy_model.groups
      lazy_model.groups
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
rails_admin-0.6.4 spec/rails_admin/config/lazy_model_spec.rb
rails_admin-0.6.3 spec/rails_admin/config/lazy_model_spec.rb
rails_admin-0.6.2 spec/rails_admin/config/lazy_model_spec.rb
rails_admin-0.6.1 spec/rails_admin/config/lazy_model_spec.rb