Sha256: daa4a529ba5c678046bd9327e2f0980aa4b63902510c9a470a97a258f3d44820

Contents?: true

Size: 1.05 KB

Versions: 1

Compression:

Stored size: 1.05 KB

Contents

require 'spec_helper'

describe ActiveModel::Serializer::CanCan::Abilities do
  let(:user) { User.first }
  let(:category) { Category.first }

  class MockAbility
    include CanCan::Ability
    def initialize(user)
      can :manage, Category
      cannot :read, Category
    end
  end

  describe '.abilities' do
    let(:serializer) do
      Class.new(ActiveModel::Serializer) do
        attributes :id
        abilities :restful, :foo
        def current_ability
          MockAbility.new(nil)
        end

        def can_foo?
          true
        end
      end
    end

    let(:category_serializer) { serializer.new(category, scope: user) }

    context 'serializable_hash' do
      subject { category_serializer.serializable_hash }
      its(:keys) { should eq [:id, :abilities] }
    end

    context 'abilities key' do
      subject { category_serializer.serializable_hash[:abilities] }
      its([:restful]) { should be_nil }
      its([:update]) { should be_true }
      its([:show]) { should be_false }
      its([:foo]) { should be_true }
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
active_model_serializers-cancan-0.0.2 spec/active_model_serializers/cancan/abilities_spec.rb