Sha256: 6276bcd2fc05a5c71e2cd5e49d078704c8dbaceee76cc1f8f2636bc6a1c8d7c9

Contents?: true

Size: 1.66 KB

Versions: 10

Compression:

Stored size: 1.66 KB

Contents

require 'test_helper'

class ObjectBackedTest < MiniTest::Unit::TestCase
  def setup
    reload_db :genders => true    
  end

  def test_how_working_with_object_backed_columns_work
    # simple object -> not db backed instance
    simple_obj = Class.new do
      attr_accessor :name
      def initialize(name)
        @name = name
      end  
    end
        
    # create new class by using simple_obj
    with_object = anonymous_dummy do
      as_enum :gender, { simple_obj.new('Male') => 0, simple_obj.new('Female') => 1 }      
    end
        
    d = with_object.where(:name => 'Anna').first
    
    assert_same simple_obj, d.gender.class
    assert_equal 'Female', d.gender.name
    assert_same true, d.female?
    assert_same false, d.male?
    assert_same 0, with_object.male    
  end
  
  def test_db_backed_objects
    # using method described in 'Advanced Rails Recipes - Recipe 61: Look Up Constant Data Efficiently'
    # "cache" as defined in ARR#61
    genders = Gender.all
    # works without mapping... .map { |g| [g, g.id] }
    
    # use cached array of values
    with_db_obj = anonymous_dummy do
      as_enum :gender, genders
    end
    
    d = with_db_obj.where(:name => 'Bella').first
    
    assert_respond_to with_db_obj, :female
    assert_respond_to with_db_obj, :male
    assert_equal 0, with_db_obj.male
  end
  
  def test_that_accesing_keys_and_values_of_each_enumeration_value_works_as_expected

    with_db_obj = anonymous_dummy do
      as_enum :gender, Gender.all.to_a
    end
    
    assert_same 0, with_db_obj.male
    assert_equal @male.id, with_db_obj.male(true).id
    
    assert_same :male, Dummy.male(true)
    assert_same 0, Dummy.male
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
simple_enum-1.6.9 test/object_backed_test.rb
simple_enum-1.6.8 test/object_backed_test.rb
simple_enum-1.6.7 test/object_backed_test.rb
simple_enum-1.6.5 test/object_backed_test.rb
simple_enum-1.6.4 test/object_backed_test.rb
simple_enum-1.6.3 test/object_backed_test.rb
simple_enum-1.6.2 test/object_backed_test.rb
simple_enum-1.6.1 test/object_backed_test.rb
simple_enum-1.5.1 test/object_backed_test.rb
simple_enum-1.5.0 test/object_backed_test.rb