aboutsummaryrefslogblamecommitdiffstats
path: root/activerecord/test/cases/binary_test.rb
blob: f6ac7990d18401aa8deb80cf3253b8bb5190e646 (plain) (tree)
1
2
3
4
5
6
7
8
9
                      
 
                                                              
                                                       
                     
                                    
                         
 
                                           
                                                   
 
                           
                      
                                      
 
                                                                  





                                   
                                                

       
                      


                                 
                                                      
                                         
                   
 
                                    
                                                                                
 
                 
                                                                            
 
                                                                                 
         
       
     
   
require "cases/helper"

# Without using prepared statements, it makes no sense to test
# BLOB data with DB2, because the length of a statement
# is limited to 32KB.
unless current_adapter?(:DB2Adapter)
  require "models/binary"

  class BinaryTest < ActiveRecord::TestCase
    FIXTURES = %w(flowers.jpg example.log test.txt)

    def test_mixed_encoding
      str = "\x80".dup
      str.force_encoding("ASCII-8BIT")

      binary = Binary.new name: "いただきます!", data: str
      binary.save!
      binary.reload
      assert_equal str, binary.data

      name = binary.name

      assert_equal "いただきます!", name
    end

    def test_load_save
      Binary.delete_all

      FIXTURES.each do |filename|
        data = File.read(ASSETS_ROOT + "/#{filename}")
        data.force_encoding("ASCII-8BIT")
        data.freeze

        bin = Binary.new(data: data)
        assert_equal data, bin.data, "Newly assigned data differs from original"

        bin.save!
        assert_equal data, bin.data, "Data differs from original after save"

        assert_equal data, bin.reload.data, "Reloaded data differs from original"
      end
    end
  end
end