# coding: utf-8 require 'spec_helper' require 'riak' describe 'Encoding and Riak Search', integration: true, search_config: true do let(:bucket_type){ test_client.bucket_type 'yokozuna' } let(:utf8_encoding){ Encoding.find 'utf-8' } let(:utf8_string){ "\xF0\x9F\x9A\xB4こんにちはสวัสดี" } let(:random_utf8_string){ utf8_string + random_key } let(:utf8_bucket){ bucket_type.bucket random_utf8_string } let(:binary_encoding){ Encoding.find 'binary' } let(:binary_string){ "\xff\xff".force_encoding('binary') } let(:random_binary_string){ binary_string + random_key } let(:binary_bucket){ bucket_type.bucket random_binary_string } describe 'with utf-8 strings' do it 'creates schemas' do schema = nil expect do schema = Riak::Search::Schema.new test_client, random_utf8_string end.to_not raise_error expect(schema).to be_a Riak::Search::Schema expect{ schema.create! schema_xml random_utf8_string }.to_not raise_error schema2 = Riak::Search::Schema.new test_client, random_utf8_string expect(schema2).to be_exists end it 'refuses to create indexes' do index = nil expect do index = Riak::Search::Index.new test_client, random_utf8_string end.to_not raise_error expect(index).to be_a Riak::Search::Index expect{ index.create! }.to raise_error /Invalid character/ end it 'queries non-weird indexes' do create_index props = Riak::BucketProperties.new utf8_bucket props['search_index'] = index_name props.store wait_until do props.reload props['search_index'] == index_name end robj = utf8_bucket.new random_utf8_string robj.content_type = 'text/plain' robj.raw_data = <