Sha256: f6cd4443e6e1f1faf72fa0cf6a58623ca12b65a3674bb4a4a4908afa9ae3339c

Contents?: true

Size: 1.05 KB

Versions: 21

Compression:

Stored size: 1.05 KB

Contents

require 'rspec'
require 'cantango'
require 'sourcify'

CanTango.config.adapters.use :compiler, :moneta

describe CanTango::Ability::Cache::Kompiler do
  subject do
    CanTango::Ability::Cache::Kompiler.new
  end

  before(:each) do
    $b = [:a,:b,:c]
    @condition_block = Proc.new { |arg| $b = [1, 2, 3, arg] } 
    @rules = [CanCan::Rule.new(true, :read, :all, nil, @condition_block) ]
  end

  it "should compile! rules" do
    subject.compile!(@rules).first.block.should == "proc { |arg| $b = [1, 2, 3, arg] }"
  end

  # Direct testing doesn't work here because raw_rules.first.eval.to_source raises exception.
  # Sourcify::CannotParseEvalCodeError: Sourcify::CannotParseEvalCodeError
  #
  # I.e. things like eval( (Proc.new{}).to_source ).to_source do not work. 
  # But for our needs basic two operations flow like Proc -> String -> (evaled)Proc is pretty enough
  it "should decompile! rules" do
    compiled_rules = subject.compile!(@rules)
    raw_rules = subject.decompile! compiled_rules
    raw_rules.first.block.call(4)
    $b.should == [1,2,3,4]
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
cantango-0.9.4.7 spec/cantango/ability/cache/kompiler_spec.rb
cantango-0.9.4.6 spec/cantango/ability/cache/kompiler_spec.rb
cantango-0.9.4.5 spec/cantango/ability/cache/kompiler_spec.rb
cantango-0.9.4.3 spec/cantango/ability/cache/kompiler_spec.rb
cantango-0.9.4.2 spec/cantango/ability/cache/kompiler_spec.rb
cantango-0.9.4.1 spec/cantango/ability/cache/kompiler_spec.rb
cantango-0.9.4 spec/cantango/ability/cache/kompiler_spec.rb
cantango-0.9.3.2 spec/cantango/ability/cache/kompiler_spec.rb
cantango-0.8.9.5 spec/cantango/ability/cache/kompiler_spec.rb
cantango-0.8.9.4 spec/cantango/ability/cache/kompiler_spec.rb
cantango-0.8.9.3 spec/cantango/ability/cache/kompiler_spec.rb
cantango-0.8.9.2 spec/cantango/ability/cache/kompiler_spec.rb
cantango-0.8.9.1 spec/cantango/ability/cache/kompiler_spec.rb
cantango-0.8.9 spec/cantango/ability/cache/kompiler_spec.rb
cantango-0.8.8.1 spec/cantango/ability/cache/kompiler_spec.rb
cantango-0.8.8 spec/cantango/ability/cache/kompiler_spec.rb
cantango-0.8.7 spec/cantango/ability/cache/kompiler_spec.rb
cantango-0.8.6.2 spec/cantango/ability/cache/kompiler_spec.rb
cantango-0.8.6.1 spec/cantango/ability/cache/kompiler_spec.rb
cantango-0.8.6 spec/cantango/ability/cache/kompiler_spec.rb