Sha256: 7c4c68c17a3a422fe018a525926282a06c4de11764220992db398beedc3c9643

Contents?: true

Size: 1017 Bytes

Versions: 1

Compression:

Stored size: 1017 Bytes

Contents

require 'test_helper'

class User < TestBaseModel
  ROLE = {
    user: 1,
    admin: 2,
  }

  include AttrEnumAccessor
  attr_enum_accessor :role, with: ROLE
end

class AttrEnumAccessorTest < ActiveSupport::TestCase
  test "role_to_value" do
    assert_equal 1, User.role_to_value(:user)
    assert_equal 2, User.role_to_value(:admin)
  end

  test "accessors" do
    u = User.new
    u.role = :admin
    assert_equal :admin, u.role
    assert_equal 2, u.read_attribute(:role_value)

    u.write_attribute(:role_value, 1)
    assert_equal :user, u.role
  end

  test "raise error on invalid value" do
    begin
      u = User.new
      u.role = :unknown
      assert false, "should have thrown error"
    rescue ArgumentError => ex
      assert_equal "Invalid role `unknown`", ex.to_s
    end
  end

  test "where helper" do
    User.where_role(:admin)
    assert_equal User.where_options, { role_value: 2 }

    User.where_role([:user, :admin])
    assert_equal User.where_options, { role_value: [1, 2] }
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
attr_enum_accessor-1.0.0 test/attr_enum_accessor_test.rb