Sha256: 18200a562e95472cb299290a765a25dd537275477403cf26b3f992f86c1c3d79

Contents?: true

Size: 1.94 KB

Versions: 7

Compression:

Stored size: 1.94 KB

Contents

require 'abstract_unit'

class TestAttributes < ActiveSupport::TestCase
  fixtures :reference_types, :reference_codes, :products, :tariffs, :product_tariffs
  
  CLASSES = {
    :single => {
      :class => ReferenceType,
      :primary_keys => :reference_type_id,
    },
    :dual   => { 
      :class => ReferenceCode,
      :primary_keys => [:reference_type_id, :reference_code],
    },
  }
  
  def setup
    self.class.classes = CLASSES
  end
  
  def test_brackets
    testing_with do
      @first.attributes.each_pair do |attr_name, value|
        assert_equal value, @first[attr_name]
      end
    end
  end

  def test_brackets_primary_key
    testing_with do
      assert_equal(@first.id, @first[@primary_keys])
      assert_equal(@first.id, @first[@first.class.primary_key])
    end
  end

  def test_brackets_assignment
    testing_with do
      @first.attributes.each_pair do |attr_name, value|
        @first[attr_name]= !value.nil? ? value * 2 : '1'
        assert_equal !value.nil? ? value * 2 : '1', @first[attr_name]
      end
    end
  end
    
  def test_brackets_foreign_key_assignment
    flat = tariffs(:flat)
    second_free = tariffs(:free)
    second_free_fk = [:tariff_id, :tariff_start_date]

    second_free[key = second_free_fk] = flat.id
    compare_indexes(flat, flat.class.primary_key, second_free, second_free_fk)
    assert_equal flat.id, second_free[key]

    second_free[key = second_free_fk.to_composite_keys] = flat.id
    assert_equal flat.id, second_free[key]
    compare_indexes(flat, flat.class.primary_key, second_free, second_free_fk)

    second_free[key = second_free_fk.to_composite_keys.to_s] = flat.id
    assert_equal flat.id, second_free[key]
    compare_indexes(flat, flat.class.primary_key, second_free, second_free_fk)
  end
  
  private

  def compare_indexes(obj1, indexes1, obj2, indexes2)
    indexes1.length.times do |key_index|
      assert_equal(obj1[indexes1[key_index].to_s], obj2[indexes2[key_index].to_s])
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
composite_primary_keys-4.0.0.beta7 test/test_attributes.rb
composite_primary_keys-4.0.0.beta6 test/test_attributes.rb
composite_primary_keys-4.0.0.beta5 test/test_attributes.rb
composite_primary_keys-4.0.0.beta4 test/test_attributes.rb
composite_primary_keys-4.0.0.beta3 test/test_attributes.rb
composite_primary_keys-4.0.0.beta2 test/test_attributes.rb
composite_primary_keys-4.0.0.beta1 test/test_attributes.rb