aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/cases/binary_test.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/test/cases/binary_test.rb')
-rw-r--r--activerecord/test/cases/binary_test.rb46
1 files changed, 46 insertions, 0 deletions
diff --git a/activerecord/test/cases/binary_test.rb b/activerecord/test/cases/binary_test.rb
new file mode 100644
index 0000000000..d5376ece69
--- /dev/null
+++ b/activerecord/test/cases/binary_test.rb
@@ -0,0 +1,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".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