Sha256: c9c54dca0a20dee67a305db57542f1df3b0460d39b8dbf6b8ece6c6cb29cbdf5

Contents?: true

Size: 1.22 KB

Versions: 1

Compression:

Stored size: 1.22 KB

Contents

require 'test_helper'

class CheckingTest < ActiveSupport::TestCase

  test "can definition with model" do
    assert user.can?(:create, Post)
    assert !user.cannot?(:create, Post)
  end

  test "can definition with instance" do
    assert user.can?(:create, post)
    assert !user.cannot?(:create, post)
  end

  test "cannot definition" do
    assert user.cannot?('read', post)
    assert !user.can?('read', post)
  end

  test "ability conditions" do
    assert admin_user.can?(:destroy, post)
    assert user.cannot?(:destroy, post)
  end

  test "ability block" do
    assert user.can?(:edit, post_with_user)
  end

  test "manage action" do
    assert user.can?(:create, User)
    assert user.can?(:read, user)
    assert user.can?(:edit, user)
    assert user.can?(:destroy, user)
  end

  test "all subject" do
    assert user.can?(:touch, post)
    assert user.can?(:touch, user)
  end

  test "undefined definition" do
    assert user.cannot?(:other, post)
    assert user.cannot?(:other, post)
  end

  private

  def post_with_user
    @post_with_user ||= Post.new(user: user)
  end

  def post
    @post ||= Post.new
  end

  def user
    @user ||= User.new
  end

  def admin_user
    @admin_user ||= User.new(admin: true)
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
abilities-0.0.2 test/checking_test.rb