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