Sha256: 319d4859c69fd413d0fa4f90abc7d8d133f2799832248e279a6fd543ab763164

Contents?: true

Size: 1.6 KB

Versions: 9

Compression:

Stored size: 1.6 KB

Contents

require_relative 'helper'

describe 'Adapter' do
  supported_by Swift::Adapter::Postgres, Swift::Adapter::Mysql, Swift::Adapter::Sqlite3 do
    describe 'Storing binary objects' do
      before do
        user = Class.new(Swift::Record) do
          store :users
          attribute :id,    Swift::Type::Integer, serial: true, key: true
          attribute :name,  Swift::Type::String
          attribute :image, Swift::Type::IO
        end
        Swift.db.migrate! user
      end

      it 'stores and retrieves an image via prepared statement' do
        Swift.db do |db|
          io = File.open(File.dirname(__FILE__) + '/house-explode.jpg')
          db.prepare('insert into users (name, image) values(?, ?)').execute('test', io)

          blob = db.prepare('select image from users limit 1').execute.first[:image]

          io.rewind
          assert_kind_of StringIO, blob

          data = blob.read
          assert_equal Encoding::ASCII_8BIT, data.encoding
          assert_equal io.read.force_encoding('ASCII-8BIT'), data
        end
      end

      it 'stores and retrieves an image via Adapter#execute' do
        Swift.db do |db|
          io = File.open(File.dirname(__FILE__) + '/house-explode.jpg')
          db.execute('insert into users (name, image) values(?, ?)', 'test', io)

          blob = db.prepare('select image from users limit 1').execute.first[:image]

          io.rewind
          assert_kind_of StringIO, blob

          data = blob.read
          assert_equal Encoding::ASCII_8BIT, data.encoding
          assert_equal io.read.force_encoding('ASCII-8BIT'), data
        end
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
swift-1.2.3 test/test_io.rb
swift-1.2.2 test/test_io.rb
swift-1.2.1 test/test_io.rb
swift-1.2.0 test/test_io.rb
swift-1.1.0 test/test_io.rb
swift-1.0.3 test/test_io.rb
swift-1.0.2 test/test_io.rb
swift-1.0.1 test/test_io.rb
swift-1.0.0 test/test_io.rb