+++ /dev/null
-require 'abstract_unit'\r
-require 'fixtures/reference_type'\r
-require 'fixtures/reference_code'\r
-\r
-class TestIds < Test::Unit::TestCase\r
- fixtures :reference_types, :reference_codes\r
- \r
- CLASSES = {\r
- :single => {\r
- :class => ReferenceType,\r
- :primary_keys => [:reference_type_id],\r
- },\r
- :dual => { \r
- :class => ReferenceCode,\r
- :primary_keys => [:reference_type_id, :reference_code],\r
- },\r
- :dual_strs => { \r
- :class => ReferenceCode,\r
- :primary_keys => ['reference_type_id', 'reference_code'],\r
- },\r
- }\r
- \r
- def setup\r
- self.class.classes = CLASSES\r
- end\r
- \r
- def test_id\r
- testing_with do\r
- assert_equal @first.id, @first.ids if composite?\r
- end\r
- end\r
- \r
- def test_id_to_s\r
- testing_with do\r
- assert_equal first_id_str, @first.id.to_s\r
- assert_equal first_id_str, "#{@first.id}"\r
- end\r
- end\r
- \r
- def test_ids_to_s\r
- testing_with do\r
- order = @klass.primary_key.is_a?(String) ? @klass.primary_key : @klass.primary_key.join(',')\r
- to_test = @klass.find(:all, :order => order)[0..1].map(&:id)\r
- assert_equal '(1,1),(1,2)', @klass.ids_to_s(to_test) if @key_test == :dual\r
- assert_equal '1,1;1,2', @klass.ids_to_s(to_test, ',', ';', '', '') if @key_test == :dual\r
- end\r
- end\r
- \r
- def test_composite_where_clause\r
- testing_with do\r
- where = 'reference_codes.reference_type_id=1 AND reference_codes.reference_code=2) OR (reference_codes.reference_type_id=2 AND reference_codes.reference_code=2'\r
- assert_equal(where, @klass.composite_where_clause([[1, 2], [2, 2]])) if @key_test == :dual\r
- end\r
- end\r
- \r
- def test_set_ids_string\r
- testing_with do\r
- array = @primary_keys.collect {|key| 5}\r
- expected = composite? ? array.to_composite_keys : array.first\r
- @first.id = expected.to_s\r
- assert_equal expected, @first.id\r
- end\r
- end\r
- \r
- def test_set_ids_array\r
- testing_with do\r
- array = @primary_keys.collect {|key| 5}\r
- expected = composite? ? array.to_composite_keys : array.first\r
- @first.id = expected\r
- assert_equal expected, @first.id\r
- end\r
- end\r
- \r
- def test_set_ids_comp\r
- testing_with do\r
- array = @primary_keys.collect {|key| 5}\r
- expected = composite? ? array.to_composite_keys : array.first\r
- @first.id = expected\r
- assert_equal expected, @first.id\r
- end\r
- end\r
- \r
- def test_primary_keys\r
- testing_with do\r
- if composite?\r
- assert_not_nil @klass.primary_keys\r
- assert_equal @primary_keys.map {|key| key.to_sym}, @klass.primary_keys\r
- assert_equal @klass.primary_keys, @klass.primary_key\r
- else\r
- assert_not_nil @klass.primary_key\r
- assert_equal @primary_keys, [@klass.primary_key.to_sym]\r
- end\r
- assert_equal @primary_keys.join(','), @klass.primary_key.to_s\r
- # Need a :primary_keys should be Array with to_s overridden\r
- end\r
- end\r
-end
\ No newline at end of file