require File.expand_path('../abstract_unit', __FILE__) 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 tested_at_least_on_attribute = false testing_with do @first.attributes.each_pair do |attr_name, value| next if value.nil? assert_equal value, @first[attr_name] tested_at_least_on_attribute = true end end assert tested_at_least_on_attribute 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| next if attr_name == @first.class.primary_key @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 tarrif = tariffs(:flat) product_tariff = product_tariffs(:first_flat) compare_indexes(tarrif, tarrif.class.primary_key, product_tariff, [:tariff_id, :tariff_start_date]) end def test_has_attribute tariff = tariffs(:flat) assert(tariff.has_attribute?([:tariff_id, :start_date])) assert(tariff.has_attribute?(['tariff_id', 'start_date'])) end def test_has__attribute tariff = tariffs(:flat) assert(tariff._has_attribute?(['tariff_id', 'start_date'])) end private def compare_indexes(obj1, indexes1, obj2, indexes2) indexes1.length.times do |key_index| key1 = indexes1[key_index] key2 = indexes2[key_index] assert_equal(obj1[key1], obj2[key2]) end end end