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 47
|
# encoding: utf-8
require File.expand_path(File.join(File.dirname(__FILE__), 'spec_helper'))
require 'data_objects/spec/shared/encoding_spec'
describe DataObjects::Mysql::Connection do
it_should_behave_like 'a driver supporting different encodings'
it_should_behave_like 'returning correctly encoded strings for the default database encoding'
it_should_behave_like 'returning correctly encoded strings for the default internal encoding' unless JRUBY
unless JRUBY
describe 'sets the character set through the URI' do
before do
@utf8mb4_connection = DataObjects::Connection.new("#{CONFIG.scheme}://#{CONFIG.user}:#{CONFIG.pass}@#{CONFIG.host}:#{CONFIG.port}#{CONFIG.database}?encoding=UTF-8-MB4")
end
after { @utf8mb4_connection.close }
it { @utf8mb4_connection.character_set.should == 'UTF-8-MB4' }
describe 'writing a multibyte String' do
it 'should write a multibyte String' do
@command = @utf8mb4_connection.create_command('INSERT INTO users_mb4 (name) VALUES(?)')
expect { @command.execute_non_query("😀") }.not_to raise_error(DataObjects::DataError)
end
end
describe 'reading a String' do
before do
@reader = @utf8mb4_connection.create_command("SELECT name FROM users_mb4").execute_reader
@reader.next!
@values = @reader.values
end
after do
@reader.close
end
it 'should return UTF-8 encoded String' do
@values.first.should be_kind_of(String)
@values.first.encoding.name.should == 'UTF-8'
@values.first.should == "😀"
end
end
end
end
end
|