Sha256: 132c1d9edb6c1f11a06e02edf3eb01398fd146e10dc42342bcc92b4465c7935a

Contents?: true

Size: 1.34 KB

Versions: 2

Compression:

Stored size: 1.34 KB

Contents

require 'spec_helper'
require 'fixtures/models'

class MembershipPermit < CanTango::Permit::Attribute
  class Builder < CanTango::Permit::Attribute::Builder
    attribute :membership
  end

  def self.inherited(base_clazz)
    register base_clazz, :name => attribute_name(base_clazz)
  end

  # attribute :membership
end

class CanTango::Ability::Base
  def subject
    candidate
  end

  def user
    subject
  end
end

class AdminMembershipPermit < MembershipPermit
  protected

  def calc_rules
    can :read, Article
  end
end

class Admin
  def memberships
    [:admin]
  end
end

describe 'Custom Permit registration - Membership' do
  it 'should register :membership as available permit' do
    CanTango.config.permits.registered_for(:membership, :admin).should == AdminMembershipPermit
  end

  it 'should register :membership as available permit type' do
    CanTango.config.permits.types.available.should include(:membership)
  end
  
  before do
    @user     = Admin.new 'kris', 'kris@mail.ru'
    @ability  = CanTango::Ability::Base.new @user
    @permit   = AdminMembershipPermit.new @ability
    @executor = CanTango::Executor::Permit::Base.new @permit
  end

  describe '#execute!' do
    describe 'should define read Article rule' do
      specify do
        @executor.execute!
        @executor.permit.rules.should_not be_empty
      end
    end
  end  
end

Version data entries

2 entries across 1 versions & 1 rubygems

Version Path
cantango-permits-0.1.1 spec/cantango/executor/custom_permit_spec.rb
cantango-permits-0.1.1 spec/cantango/permit/attribute_permit_spec.rb