Sha256: 7cc3c24d04c4844da9e951fcf112bea71f9e28a3e0b9d5a394177f2422148436

Contents?: true

Size: 1.16 KB

Versions: 1

Compression:

Stored size: 1.16 KB

Contents

require 'rspec_ext'
require "#{__FILE__.dirname}/helper"

require "crystal/support/callbacks"
require "crystal/support/filters"

describe "Filters" do
  module ARemote
    inherit Crystal::Filters
  end
  
  class FiltersBasic
    inherit ARemote
          
    before :set_user
    
    def action
      'result'
    end

    attr_reader :user
    def set_user
      @user = 'some user'
    end
  end
  
  class FilterInheritance < FiltersBasic
    before :set_model
    
    attr_reader :model
    def set_model
      @model = 'some model'
    end      
  end
  
  class FilterOverrideAction < FiltersBasic
    def action
      'overriden result'
    end
  end
  
  it 'basic' do
    r = FiltersBasic.new
    r.run_callbacks(:action){r.send :action}.should == 'result'
    r.user.should == 'some user'
  end
  
  it 'inheritance' do
    r = FilterInheritance.new
    r.run_callbacks(:action){r.send :action}.should == 'result'
    r.user.should == 'some user'
    r.model.should == 'some model'
  end
  
  it "overriding action" do
    r = FilterOverrideAction.new
    r.run_callbacks(:action){r.send :action}.should == 'overriden result'
    r.user.should == 'some user'
  end
  
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
crystal-0.0.12 spec/support/filters_spec.rb