aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/binary_test.rb
blob: 58abdb47f716ed0305a7b86030114354d6286319 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
# frozen_string_literal: true

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"
      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