swift 0.14.0 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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