swift 0.14.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. data/API.rdoc +14 -14
  2. data/README.md +110 -61
  3. data/Rakefile +2 -5
  4. data/VERSION +1 -1
  5. data/lib/swift/adapter/mysql.rb +30 -0
  6. data/lib/swift/adapter/postgres.rb +27 -0
  7. data/lib/swift/adapter/sql.rb +23 -29
  8. data/lib/swift/adapter/sqlite3.rb +59 -0
  9. data/lib/swift/adapter.rb +129 -70
  10. data/lib/swift/attribute.rb +19 -8
  11. data/lib/swift/eventmachine.rb +49 -0
  12. data/lib/swift/identity_map.rb +7 -7
  13. data/lib/swift/migrations.rb +12 -12
  14. data/lib/swift/{scheme.rb → record.rb} +16 -17
  15. data/lib/swift/result.rb +24 -0
  16. data/lib/swift/statement.rb +25 -0
  17. data/lib/swift/synchrony.rb +38 -0
  18. data/lib/swift/validations.rb +2 -2
  19. data/lib/swift.rb +8 -6
  20. data/swift.gemspec +19 -31
  21. data/test/helper.rb +11 -6
  22. data/test/test_adapter.rb +11 -25
  23. data/test/test_async.rb +9 -12
  24. data/test/test_encoding.rb +2 -2
  25. data/test/test_error.rb +8 -8
  26. data/test/test_io.rb +2 -2
  27. data/test/{test_scheme.rb → test_record.rb} +6 -6
  28. data/test/test_swift.rb +9 -51
  29. data/test/test_timestamps.rb +1 -1
  30. data/test/test_transactions.rb +2 -2
  31. data/test/test_types.rb +3 -3
  32. data/test/test_validations.rb +2 -2
  33. metadata +20 -27
  34. data/ext/adapter.cc +0 -479
  35. data/ext/adapter.h +0 -13
  36. data/ext/adapter_io.cc +0 -62
  37. data/ext/adapter_io.h +0 -24
  38. data/ext/attribute.cc +0 -22
  39. data/ext/attribute.h +0 -8
  40. data/ext/datetime.cc +0 -96
  41. data/ext/datetime.h +0 -12
  42. data/ext/extconf.rb +0 -61
  43. data/ext/query.cc +0 -104
  44. data/ext/query.h +0 -20
  45. data/ext/result.cc +0 -229
  46. data/ext/result.h +0 -27
  47. data/ext/statement.cc +0 -116
  48. data/ext/statement.h +0 -22
  49. data/ext/swift.cc +0 -114
  50. data/ext/swift.h +0 -60
  51. data/lib/swift/db.rb +0 -89
@@ -7,7 +7,7 @@ module Swift
7
7
  end
8
8
  end # Errors
9
9
 
10
- class Scheme
10
+ class Record
11
11
  def self.validations &validations
12
12
  define_method :validate do
13
13
  errors = Errors.new(self)
@@ -23,5 +23,5 @@ module Swift
23
23
  def valid?
24
24
  validate.empty?
25
25
  end
26
- end # Scheme
26
+ end # Record
27
27
  end # Swift
data/lib/swift.rb CHANGED
@@ -8,13 +8,11 @@ unless %r{^1\.9\.[3-9]|^2\.}.match(RUBY_VERSION)
8
8
  end
9
9
 
10
10
  # Extension.
11
- require_relative '../ext/swift'
12
11
  require_relative 'swift/adapter'
13
12
  require_relative 'swift/adapter/sql'
14
13
  require_relative 'swift/attribute'
15
- require_relative 'swift/db'
16
14
  require_relative 'swift/header'
17
- require_relative 'swift/scheme'
15
+ require_relative 'swift/record'
18
16
  require_relative 'swift/type'
19
17
 
20
18
  # A rational rudimentary object relational mapper.
@@ -26,7 +24,7 @@ require_relative 'swift/type'
26
24
  # Swift.trace true # Debugging.
27
25
  # Swift.setup :default, Swift::DB::Postgres, db: 'swift'
28
26
  #
29
- # class User < Swift::Scheme
27
+ # class User < Swift::Record
30
28
  # store :users
31
29
  # attribute :id, Swift::Type::Integer, serial: true, key: true
32
30
  # attribute :name, Swift::Type::String
@@ -99,8 +97,8 @@ module Swift
99
97
  # other_users.execute(32)
100
98
  # end
101
99
  #
102
- # @param [Symbol] name Adapter name.
103
- # @param [Proc] &block Scope this block to the named adapter instead of <tt>:default</tt>.
100
+ # @param [Symbol] name Adapter name.
101
+ # @param [Proc] block Scope this block to the named adapter instead of <tt>:default</tt>.
104
102
  # @return [Swift::Adapter]
105
103
  #--
106
104
  # I pilfered the logic from DM but I don't really understand what is/isn't thread safe.
@@ -131,5 +129,9 @@ module Swift
131
129
  def schema
132
130
  @schema ||= []
133
131
  end
132
+
133
+ def trace io = $stdout, &block
134
+ Swift.db.trace(io, &block)
135
+ end
134
136
  end
135
137
  end # Swift
data/swift.gemspec CHANGED
@@ -4,15 +4,14 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{swift}
8
- s.version = "0.14.0"
7
+ s.name = "swift"
8
+ s.version = "1.0.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{Shane Hanna}, %q{Bharanee 'Barney' Rathna}]
12
- s.date = %q{2012-03-21}
13
- s.description = %q{A rational rudimentary database abstraction.}
14
- s.email = [%q{shane.hanna@gmail.com}, %q{deepfryed@gmail.com}]
15
- s.extensions = [%q{ext/extconf.rb}]
11
+ s.authors = ["Shane Hanna", "Bharanee 'Barney' Rathna"]
12
+ s.date = "2012-08-01"
13
+ s.description = "A rational rudimentary database abstraction."
14
+ s.email = ["shane.hanna@gmail.com", "deepfryed@gmail.com"]
16
15
  s.extra_rdoc_files = [
17
16
  "LICENSE",
18
17
  "README.md"
@@ -23,32 +22,21 @@ Gem::Specification.new do |s|
23
22
  "README.md",
24
23
  "Rakefile",
25
24
  "VERSION",
26
- "ext/adapter.cc",
27
- "ext/adapter.h",
28
- "ext/adapter_io.cc",
29
- "ext/adapter_io.h",
30
- "ext/attribute.cc",
31
- "ext/attribute.h",
32
- "ext/datetime.cc",
33
- "ext/datetime.h",
34
- "ext/extconf.rb",
35
- "ext/query.cc",
36
- "ext/query.h",
37
- "ext/result.cc",
38
- "ext/result.h",
39
- "ext/statement.cc",
40
- "ext/statement.h",
41
- "ext/swift.cc",
42
- "ext/swift.h",
43
25
  "lib/swift.rb",
44
26
  "lib/swift/adapter.rb",
27
+ "lib/swift/adapter/mysql.rb",
28
+ "lib/swift/adapter/postgres.rb",
45
29
  "lib/swift/adapter/sql.rb",
30
+ "lib/swift/adapter/sqlite3.rb",
46
31
  "lib/swift/attribute.rb",
47
- "lib/swift/db.rb",
32
+ "lib/swift/eventmachine.rb",
48
33
  "lib/swift/header.rb",
49
34
  "lib/swift/identity_map.rb",
50
35
  "lib/swift/migrations.rb",
51
- "lib/swift/scheme.rb",
36
+ "lib/swift/record.rb",
37
+ "lib/swift/result.rb",
38
+ "lib/swift/statement.rb",
39
+ "lib/swift/synchrony.rb",
52
40
  "lib/swift/type.rb",
53
41
  "lib/swift/validations.rb",
54
42
  "swift.gemspec",
@@ -62,17 +50,17 @@ Gem::Specification.new do |s|
62
50
  "test/test_error.rb",
63
51
  "test/test_identity_map.rb",
64
52
  "test/test_io.rb",
65
- "test/test_scheme.rb",
53
+ "test/test_record.rb",
66
54
  "test/test_swift.rb",
67
55
  "test/test_timestamps.rb",
68
56
  "test/test_transactions.rb",
69
57
  "test/test_types.rb",
70
58
  "test/test_validations.rb"
71
59
  ]
72
- s.homepage = %q{http://github.com/shanna/swift}
73
- s.require_paths = [%q{lib}]
74
- s.rubygems_version = %q{1.8.2}
75
- s.summary = %q{A rational rudimentary database abstraction.}
60
+ s.homepage = "http://github.com/shanna/swift"
61
+ s.require_paths = ["lib"]
62
+ s.rubygems_version = "1.8.23"
63
+ s.summary = "A rational rudimentary database abstraction."
76
64
 
77
65
  if s.respond_to? :specification_version then
78
66
  s.specification_version = 3
data/test/helper.rb CHANGED
@@ -1,19 +1,26 @@
1
1
  $:.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
2
  $:.unshift(File.join(File.dirname(__FILE__), '..', 'test'))
3
3
 
4
- require 'minitest/spec'
5
- require 'minitest/unit'
4
+ require 'bundler/setup'
5
+
6
+ require 'etc'
7
+ require 'minitest/autorun'
6
8
  require 'minitest_teardown_hack'
7
9
  require 'swift'
10
+ require 'swift/adapter/mysql'
11
+ require 'swift/adapter/postgres'
12
+ require 'swift/adapter/sqlite3'
8
13
  require 'swift/migrations'
9
- require 'etc'
10
14
 
11
15
  class MiniTest::Spec
12
16
  def self.supported_by *adapters, &block
13
- adapter_defaults = { Swift::DB::Sqlite3 => { db: ':memory:' } }
17
+ adapter_defaults = { Swift::Adapter::Sqlite3 => { db: ':memory:' } }
14
18
  connection_defaults = { db: 'swift_test', user: Etc.getlogin, host: '127.0.0.1' }
15
19
  adapters.each do |adapter|
16
20
  begin
21
+ #next if Swift::Adapter::Sqlite3 == adapter
22
+ #next if Swift::Adapter::Mysql == adapter
23
+ #next if Swift::Adapter::Postgres == adapter
17
24
  Swift.setup :default, adapter, connection_defaults.merge(adapter_defaults.fetch(adapter, {}))
18
25
  rescue => error
19
26
  warn "Unable to setup 'swift_test' db for #{adapter}, #{error.message}. Skipping..."
@@ -32,5 +39,3 @@ class MiniTest::Spec
32
39
  end
33
40
  end
34
41
  end
35
-
36
- MiniTest::Unit.autorun
data/test/test_adapter.rb CHANGED
@@ -2,13 +2,13 @@ require_relative 'helper'
2
2
  require 'stringio'
3
3
 
4
4
  describe 'Adapter' do
5
- supported_by Swift::DB::Postgres, Swift::DB::Mysql, Swift::DB::Sqlite3 do
5
+ supported_by Swift::Adapter::Postgres, Swift::Adapter::Mysql, Swift::Adapter::Sqlite3 do
6
6
  describe 'db' do
7
7
  before do
8
8
  @db = Swift.db
9
9
  @db.execute('drop table if exists users')
10
10
  serial = case @db
11
- when Swift::DB::Sqlite3 then 'integer primary key'
11
+ when Swift::Adapter::Sqlite3 then 'integer primary key'
12
12
  else 'serial'
13
13
  end
14
14
  @db.execute %Q{create table users(id #{serial}, name text, email text, created_at timestamp)}
@@ -20,12 +20,6 @@ describe 'Adapter' do
20
20
  end
21
21
  end
22
22
 
23
- it 'reconnects to db' do
24
- Swift.trace true, open('/dev/null', 'w')
25
- assert_block { @db.reconnect }
26
- Swift.trace false
27
- end
28
-
29
23
  it 'records closed state' do
30
24
  assert !Swift.db.closed?
31
25
  Swift.db.close
@@ -43,9 +37,9 @@ describe 'Adapter' do
43
37
  end
44
38
 
45
39
  describe 'prepared statements' do
46
- it 'executes via Statement#new' do
40
+ it 'executes via Adapter#prepare' do
47
41
  result = []
48
- Swift::Statement.new(@db, 'select count(*) as n from users').execute {|r| result << r[:n] }
42
+ @db.prepare('select count(*) as n from users').execute.each {|r| result << r[:n] }
49
43
  assert_kind_of Fixnum, result[0]
50
44
  end
51
45
 
@@ -53,12 +47,6 @@ describe 'Adapter' do
53
47
  assert @db.prepare(%q{insert into users (name) values ('Apple Arthurton')}).execute
54
48
  end
55
49
 
56
- it 'returns the command' do
57
- sql = 'select * from users where id = ?'
58
- assert_equal sql, @db.prepare(sql).command
59
- assert_equal sql, @db.prepare(sql).to_s
60
- end
61
-
62
50
  it 'executes with bind values' do
63
51
  assert @db.prepare(%q{insert into users (name) values (?)}).execute('Apple Arthurton')
64
52
  end
@@ -71,12 +59,11 @@ describe 'Adapter' do
71
59
 
72
60
  it 'has insert_id' do
73
61
  sql = case @db
74
- when Swift::DB::Postgres then %q{insert into users (name) values (?) returning id}
62
+ when Swift::Adapter::Postgres then %q{insert into users (name) values (?) returning id}
75
63
  else %q{insert into users (name) values (?)}
76
64
  end
77
65
  statement = @db.prepare(sql)
78
66
  assert 1, statement.execute('Connie Arthurton').insert_id
79
- assert 1, statement.insert_id # caches insert_id, just interface compatibility with dbic++
80
67
  end
81
68
  end
82
69
 
@@ -111,8 +98,8 @@ describe 'Adapter' do
111
98
  @db.execute('select * from users') {|r| assert_kind_of Hash, r }
112
99
  end
113
100
 
114
- it 'returns a result set on Adapter#results' do
115
- assert_kind_of Swift::Result, @db.execute('select * from users')
101
+ it 'returns a result set on Adapter#execute' do
102
+ assert_respond_to @db.execute('select * from users'), :each
116
103
  end
117
104
 
118
105
  it 'returns fields' do
@@ -131,16 +118,15 @@ describe 'Adapter' do
131
118
  end
132
119
  end
133
120
 
134
-
135
- describe 'bulk writes!' do
121
+ describe 'bulk writes' do
136
122
  it 'writes from an IO object' do
137
123
  data = StringIO.new "Sally Arthurton\tsally@local\nJonas Arthurton\tjonas@local\n"
138
- assert_equal 2, @db.write('users', %w{name email}, data)
124
+ assert_equal 2, @db.write('users', %w{name email}, data).affected_rows
139
125
  end
140
126
 
141
127
  it 'writes from a string' do
142
128
  data = "Sally Arthurton\tsally@local\nJonas Arthurton\tjonas@local\n"
143
- assert_equal 2, @db.write('users', %w{name email}, data)
129
+ assert_equal 2, @db.write('users', %w{name email}, data).affected_rows
144
130
  end
145
131
 
146
132
  it 'writes with no columns specified' do
@@ -148,7 +134,7 @@ describe 'Adapter' do
148
134
  data = "1\tSally Arthurton\tsally@local\t#{ts}\n"
149
135
  row = {id: 1, name: 'Sally Arthurton', email: 'sally@local', created_at: ts}
150
136
 
151
- assert_equal 1, @db.write('users', [], data)
137
+ assert_equal 1, @db.write('users', data).affected_rows
152
138
  assert_equal row, @db.execute('select * from users limit 1').first
153
139
  end
154
140
  end
data/test/test_async.rb CHANGED
@@ -1,26 +1,23 @@
1
1
  require_relative 'helper'
2
2
 
3
3
  describe 'Adapter' do
4
- supported_by Swift::DB::Postgres do
4
+ supported_by Swift::Adapter::Postgres, Swift::Adapter::Mysql do
5
5
  describe 'async operations' do
6
6
  it 'can runs queries async' do
7
7
  rows = []
8
- pool = 3.times.map.with_index {|n| Swift.setup n, Swift::DB::Postgres, db: 'swift' }
9
-
10
- Thread.new do
11
- pool[0].async_execute('select pg_sleep(0.3), 1 as query_id') {|row| rows << row[:query_id]}
12
- end
13
-
14
- Thread.new do
15
- pool[1].async_execute('select pg_sleep(0.2), 2 as query_id') {|row| rows << row[:query_id]}
8
+ pool = 3.times.map.with_index {|n| Swift.setup n, Swift.db.class, db: 'swift_test' }
9
+ func = case Swift.db
10
+ when Swift::Adapter::Mysql then 'sleep'
11
+ when Swift::Adapter::Postgres then 'pg_sleep'
16
12
  end
17
13
 
18
- Thread.new do
19
- pool[2].async_execute('select pg_sleep(0.1), 3 as query_id') {|row| rows << row[:query_id]}
14
+ 3.times do |n|
15
+ Thread.new do
16
+ pool[n].query("select #{func}(#{(3 - n) / 10.0}), #{n + 1} as query_id") {|row| rows << row[:query_id]}
17
+ end
20
18
  end
21
19
 
22
20
  Thread.list.reject {|thread| Thread.current == thread}.each(&:join)
23
-
24
21
  assert_equal [3, 2, 1], rows
25
22
  end
26
23
  end
@@ -1,7 +1,7 @@
1
1
  require_relative 'helper'
2
2
 
3
3
  describe 'Adapter' do
4
- supported_by Swift::DB::Postgres, Swift::DB::Mysql, Swift::DB::Sqlite3 do
4
+ supported_by Swift::Adapter::Postgres, Swift::Adapter::Mysql, Swift::Adapter::Sqlite3 do
5
5
  describe 'character encoding' do
6
6
  before do
7
7
  Swift.db do |db|
@@ -9,7 +9,7 @@ describe 'Adapter' do
9
9
  db.execute %q{create table users(name text)}
10
10
 
11
11
  # Mysql on debian at least doesn't default to utf8.
12
- if db.kind_of? Swift::DB::Mysql
12
+ if db.kind_of? Swift::Adapter::Mysql
13
13
  db.execute %q{alter table users default character set utf8}
14
14
  db.execute %q{alter table users change name name text charset utf8}
15
15
  end
data/test/test_error.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require_relative 'helper'
2
2
 
3
3
  describe 'Error' do
4
- supported_by Swift::DB::Postgres, Swift::DB::Mysql, Swift::DB::Sqlite3 do
4
+ supported_by Swift::Adapter::Postgres, Swift::Adapter::Mysql, Swift::Adapter::Sqlite3 do
5
5
  describe 'prepare' do
6
6
  before do
7
7
  Swift.db do |db|
@@ -11,20 +11,20 @@ describe 'Error' do
11
11
  end
12
12
 
13
13
  it 'throws a runtime error on invalid sql' do
14
- assert_raises(SwiftRuntimeError) do
14
+ assert_raises(Swift::RuntimeError) do
15
15
  Swift.db.prepare('garble garble garble')
16
16
  end
17
17
  end
18
18
 
19
19
  it 'throws a runtime error on invalid bind parameters' do
20
- assert_raises(SwiftRuntimeError) do
20
+ assert_raises(Swift::ArgumentError) do
21
21
  Swift.db.prepare('select * from users where id > ?').execute
22
22
  end
23
23
  end
24
24
  end
25
25
  end
26
26
 
27
- supported_by Swift::DB::Postgres do
27
+ supported_by Swift::Adapter::Postgres do
28
28
  describe 'execute' do
29
29
  before do
30
30
  Swift.db do |db|
@@ -39,10 +39,10 @@ describe 'Error' do
39
39
 
40
40
  Swift.db.close
41
41
 
42
- assert_raises(SwiftConnectionError) { select1.execute }
43
- assert_raises(SwiftConnectionError) { select2.execute(1) }
44
- assert_raises(SwiftConnectionError) { Swift.db.execute("select * from users") }
45
- assert_raises(SwiftConnectionError) { Swift.db.execute("select * from users where id > ?", 1) }
42
+ assert_raises(Swift::ConnectionError) { select1.execute }
43
+ assert_raises(Swift::ConnectionError) { select2.execute(1) }
44
+ assert_raises(Swift::ConnectionError) { Swift.db.execute("select * from users") }
45
+ assert_raises(Swift::ConnectionError) { Swift.db.execute("select * from users where id > ?", 1) }
46
46
  end
47
47
  end
48
48
  end
data/test/test_io.rb CHANGED
@@ -1,10 +1,10 @@
1
1
  require_relative 'helper'
2
2
 
3
3
  describe 'Adapter' do
4
- supported_by Swift::DB::Postgres, Swift::DB::Mysql, Swift::DB::Sqlite3 do
4
+ supported_by Swift::Adapter::Postgres, Swift::Adapter::Mysql, Swift::Adapter::Sqlite3 do
5
5
  describe 'Storing binary objects' do
6
6
  before do
7
- user = Class.new(Swift::Scheme) do
7
+ user = Class.new(Swift::Record) do
8
8
  store :users
9
9
  attribute :id, Swift::Type::Integer, serial: true, key: true
10
10
  attribute :name, Swift::Type::String
@@ -1,8 +1,8 @@
1
1
  require_relative 'helper'
2
2
 
3
- describe 'scheme' do
3
+ describe 'record' do
4
4
  before do
5
- @user = Class.new(Swift::Scheme) do
5
+ @user = Class.new(Swift::Record) do
6
6
  store :users
7
7
  attribute :id, Swift::Type::Integer, serial: true, key: true
8
8
  attribute :name, Swift::Type::String, default: "dave"
@@ -57,13 +57,13 @@ describe 'scheme' do
57
57
  end
58
58
  end
59
59
 
60
- supported_by Swift::DB::Postgres, Swift::DB::Mysql, Swift::DB::Sqlite3 do
60
+ supported_by Swift::Adapter::Postgres, Swift::Adapter::Mysql, Swift::Adapter::Sqlite3 do
61
61
  describe 'adapter operations' do
62
62
  before do
63
63
  Swift.db.migrate! @user
64
64
  end
65
65
 
66
- it 'should return scheme instance when given scheme in #execute' do
66
+ it 'should return record instance when given record in #execute' do
67
67
  user = @user.create
68
68
  assert_equal 1, Swift.db.execute(@user, 'select * from users').first.id
69
69
  end
@@ -77,12 +77,12 @@ describe 'scheme' do
77
77
  end
78
78
 
79
79
  it 'adapter should barf when trying to delete an invalid instance' do
80
- assert_raises(ArgumentError) { Swift.db.delete @user, {id: nil, name: 'foo'} }
80
+ assert_raises(Swift::ArgumentError) { Swift.db.delete @user, {id: nil, name: 'foo'} }
81
81
  end
82
82
 
83
83
  it 'should not update without valid keys' do
84
84
  user = @user.new
85
- assert_raises(ArgumentError) { user.update(name: 'dave') }
85
+ assert_raises(Swift::ArgumentError) { user.update(name: 'dave') }
86
86
  end
87
87
 
88
88
  it 'should update with valid keys' do
data/test/test_swift.rb CHANGED
@@ -1,70 +1,28 @@
1
- require 'tempfile'
2
1
  require_relative 'helper'
3
2
 
4
3
  describe 'Swift' do
5
- supported_by Swift::DB::Sqlite3 do
4
+ supported_by Swift::Adapter::Sqlite3 do
6
5
  describe 'Trace' do
7
- before do
8
- Swift.trace(false)
9
- @file = Tempfile.new('swift-test')
10
- end
11
-
12
- after do
13
- @file.unlink
14
- end
15
-
16
6
  it 'should trace commands' do
17
7
  sql = 'create table users (id integer, name text)'
18
- Swift.trace(true, @file)
19
- Swift.db.execute(sql)
20
-
21
- log = @file.rewind && @file.read
22
- assert_match sql, log
23
- end
24
-
25
- it 'should trace commands in block form' do
26
- sql1 = 'create table users (id integer, name text)'
27
- sql2 = 'drop table users'
28
-
29
- res = Swift.trace(true, @file) { Swift.db.execute(sql1) && 'foobar' }
30
- assert_equal 'foobar', res
8
+ io = StringIO.new
31
9
 
32
- Swift.db.execute(sql2)
33
-
34
- log = @file.rewind && @file.read
35
- assert_match sql1, log
36
- refute_match sql2, log
37
- end
38
-
39
- it 'should trace commands in block form and preserve state' do
40
- sql1 = 'create table users (id integer, name text)'
41
- sql2 = 'drop table users'
42
-
43
- Swift.trace(true, @file)
44
-
45
- Swift.trace(false) do
46
- Swift.db.execute(sql1)
10
+ Swift.trace(io) do
11
+ Swift.db.execute(sql)
47
12
  end
48
13
 
49
- Swift.db.execute(sql2)
50
-
51
- log = @file.rewind && @file.read
52
- refute_match sql1, log
53
- assert_match sql2, log
14
+ assert_match sql, io.rewind && io.read
54
15
  end
55
16
 
56
- it 'should cascade exceptions in block form trace' do
57
- sql1 = 'create table users (id integer, name text)'
17
+ it 'should cascade exceptions in trace' do
18
+ sql = 'create table users (id integer, name text)'
58
19
 
59
20
  assert_raises(RuntimeError) do
60
- Swift.trace(true, @file) do
61
- Swift.db.execute(sql1)
21
+ Swift.trace(StringIO.new) do
22
+ Swift.db.execute(sql)
62
23
  raise "foo"
63
24
  end
64
25
  end
65
-
66
- log = @file.rewind && @file.read
67
- assert_match sql1, log
68
26
  end
69
27
  end
70
28
  end
@@ -1,7 +1,7 @@
1
1
  require_relative 'helper'
2
2
 
3
3
  describe 'Adapter' do
4
- supported_by Swift::DB::Postgres do
4
+ supported_by Swift::Adapter::Postgres do
5
5
  %w(America/Chicago Australia/Melbourne).each do |timezone|
6
6
  describe 'time parsing in %s' % timezone do
7
7
  before do
@@ -1,7 +1,7 @@
1
1
  require_relative 'helper'
2
2
 
3
3
  describe 'Adapter' do
4
- supported_by Swift::DB::Postgres, Swift::DB::Mysql, Swift::DB::Sqlite3 do
4
+ supported_by Swift::Adapter::Postgres, Swift::Adapter::Mysql, Swift::Adapter::Sqlite3 do
5
5
  describe 'transactions' do
6
6
  before do
7
7
  @name = 'test1 - transaction 1'
@@ -10,7 +10,7 @@ describe 'Adapter' do
10
10
  @db.execute %q{create table users(name text, created_at timestamp)}
11
11
 
12
12
  # In case of MyISAM default.
13
- @db.kind_of?(Swift::DB::Mysql) && @db.execute('alter table users engine=innodb')
13
+ @db.kind_of?(Swift::Adapter::Mysql) && @db.execute('alter table users engine=innodb')
14
14
 
15
15
  @sth = @db.prepare('select count(*) as c from users where name = ?')
16
16
  end
data/test/test_types.rb CHANGED
@@ -1,13 +1,13 @@
1
1
  require_relative 'helper'
2
2
 
3
3
  describe 'Adapter' do
4
- supported_by Swift::DB::Postgres, Swift::DB::Mysql, Swift::DB::Sqlite3 do
4
+ supported_by Swift::Adapter::Postgres, Swift::Adapter::Mysql, Swift::Adapter::Sqlite3 do
5
5
  describe 'typecasting' do
6
6
  before do
7
7
  @db = Swift.db
8
8
  @db.execute %q{drop table if exists users}
9
9
  serial = case @db
10
- when Swift::DB::Sqlite3 then 'integer primary key'
10
+ when Swift::Adapter::Sqlite3 then 'integer primary key'
11
11
  else 'serial'
12
12
  end
13
13
  @db.execute %Q{
@@ -40,7 +40,7 @@ describe 'Adapter' do
40
40
  assert_kind_of DateTime, result[:updated]
41
41
 
42
42
  assert_equal dt, result[:updated].strftime('%F %T')
43
- assert_equal 65000, result[:updated].to_time.usec unless @db.kind_of?(Swift::DB::Mysql)
43
+ assert_equal 65000, result[:updated].to_time.usec unless @db.kind_of?(Swift::Adapter::Mysql)
44
44
  end
45
45
  end
46
46
  end
@@ -3,7 +3,7 @@ require 'swift/validations'
3
3
 
4
4
  describe 'validations' do
5
5
  before do
6
- @user = Class.new(Swift::Scheme) do
6
+ @user = Class.new(Swift::Record) do
7
7
  store :users
8
8
  attribute :id, Swift::Type::Integer, serial: true, key: true
9
9
  attribute :name, Swift::Type::String
@@ -40,7 +40,7 @@ describe 'validations' do
40
40
 
41
41
  describe 'errors' do
42
42
  it 'has relation' do
43
- assert_kind_of Swift::Scheme, @user.new.validate.relation
43
+ assert_kind_of Swift::Record, @user.new.validate.relation
44
44
  end
45
45
  end
46
46
  end