Sha256: 2542ec46ecc283de543e4d8b95554651a3f96a071a975218ee1b80fa4ccdb5b8

Contents?: true

Size: 1.68 KB

Versions: 4

Compression:

Stored size: 1.68 KB

Contents

require 'tempfile'
require_relative 'helper'

describe 'Swift' do
  supported_by Swift::DB::Sqlite3 do
    describe 'Trace' do
      before do
        Swift.trace(false)
        @file = Tempfile.new('swift-test')
      end

      after do
        @file.unlink
      end

      it 'should trace commands' do
        sql = 'create table users (id integer, name text)'
        Swift.trace(true, @file)
        Swift.db.execute(sql)

        log = @file.rewind && @file.read
        assert_match sql, log
      end

      it 'should trace commands in block form' do
        sql1 = 'create table users (id integer, name text)'
        sql2 = 'drop table users'

        res = Swift.trace(true, @file) { Swift.db.execute(sql1) && 'foobar' }
        assert_equal 'foobar', res

        Swift.db.execute(sql2)

        log = @file.rewind && @file.read
        assert_match sql1, log
        refute_match sql2, log
      end

      it 'should trace commands in block form and preserve state' do
        sql1 = 'create table users (id integer, name text)'
        sql2 = 'drop table users'

        Swift.trace(true, @file)

        Swift.trace(false) do
          Swift.db.execute(sql1)
        end

        Swift.db.execute(sql2)

        log = @file.rewind && @file.read
        refute_match sql1, log
        assert_match sql2, log
      end

      it 'should cascade exceptions in block form trace' do
        sql1 = 'create table users (id integer, name text)'

        assert_raises(RuntimeError) do
          Swift.trace(true, @file) do
            Swift.db.execute(sql1)
            raise "foo"
          end
        end

        log = @file.rewind && @file.read
        assert_match sql1, log
      end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
swift-0.14.0 test/test_swift.rb
swift-0.13.0 test/test_swift.rb
swift-0.12.0 test/test_swift.rb
swift-0.11.0 test/test_swift.rb