baza 0.0.20 → 0.0.21

Sign up to get free protection for your applications and to get access to all the features.
Files changed (167) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +84 -0
  3. data/.rubocop_todo.yml +17 -135
  4. data/.travis.yml +21 -0
  5. data/Gemfile +10 -7
  6. data/Gemfile.lock +39 -44
  7. data/README.md +61 -3
  8. data/VERSION +1 -1
  9. data/baza.gemspec +146 -98
  10. data/config/best_project_practice_rubocop.yml +8 -0
  11. data/config/best_project_practice_rubocop_todo.yml +6 -0
  12. data/lib/baza.rb +8 -12
  13. data/lib/baza/base_sql_driver.rb +198 -52
  14. data/lib/baza/cloner.rb +1 -0
  15. data/lib/baza/column.rb +26 -0
  16. data/lib/baza/database.rb +19 -3
  17. data/lib/baza/db.rb +69 -271
  18. data/lib/baza/driver.rb +1 -6
  19. data/lib/baza/{drivers → driver}/active_record.rb +65 -21
  20. data/lib/baza/{drivers → driver}/active_record/columns.rb +0 -0
  21. data/lib/baza/driver/active_record/commands.rb +10 -0
  22. data/lib/baza/driver/active_record/databases.rb +10 -0
  23. data/lib/baza/{drivers → driver}/active_record/indexes.rb +0 -0
  24. data/lib/baza/{drivers → driver}/active_record/result.rb +3 -1
  25. data/lib/baza/{drivers → driver}/active_record/tables.rb +0 -0
  26. data/lib/baza/driver/active_record/users.rb +12 -0
  27. data/lib/baza/{drivers → driver}/mysql.rb +9 -26
  28. data/lib/baza/{drivers → driver}/mysql/column.rb +14 -35
  29. data/lib/baza/{drivers → driver}/mysql/columns.rb +9 -12
  30. data/lib/baza/driver/mysql/commands.rb +39 -0
  31. data/lib/baza/driver/mysql/database.rb +64 -0
  32. data/lib/baza/driver/mysql/databases.rb +63 -0
  33. data/lib/baza/{drivers → driver}/mysql/index.rb +0 -0
  34. data/lib/baza/{drivers → driver}/mysql/indexes.rb +0 -0
  35. data/lib/baza/{drivers → driver}/mysql/result.rb +15 -7
  36. data/lib/baza/{drivers → driver}/mysql/sqlspecs.rb +0 -0
  37. data/lib/baza/{drivers → driver}/mysql/table.rb +27 -43
  38. data/lib/baza/{drivers → driver}/mysql/tables.rb +5 -34
  39. data/lib/baza/{drivers → driver}/mysql/unbuffered_result.rb +8 -2
  40. data/lib/baza/driver/mysql/user.rb +22 -0
  41. data/lib/baza/driver/mysql/users.rb +39 -0
  42. data/lib/baza/{drivers → driver}/mysql2.rb +19 -49
  43. data/lib/baza/{drivers → driver}/mysql2/column.rb +0 -0
  44. data/lib/baza/{drivers → driver}/mysql2/columns.rb +0 -0
  45. data/lib/baza/driver/mysql2/commands.rb +2 -0
  46. data/lib/baza/{drivers → driver}/mysql2/database.rb +0 -0
  47. data/lib/baza/{drivers → driver}/mysql2/databases.rb +0 -0
  48. data/lib/baza/{drivers → driver}/mysql2/index.rb +0 -0
  49. data/lib/baza/{drivers → driver}/mysql2/indexes.rb +0 -0
  50. data/lib/baza/{drivers → driver}/mysql2/result.rb +3 -1
  51. data/lib/baza/{drivers → driver}/mysql2/table.rb +0 -0
  52. data/lib/baza/{drivers → driver}/mysql2/tables.rb +0 -0
  53. data/lib/baza/driver/mysql2/user.rb +2 -0
  54. data/lib/baza/driver/mysql2/users.rb +2 -0
  55. data/lib/baza/{drivers → driver}/mysql_java.rb +60 -38
  56. data/lib/baza/{drivers → driver}/mysql_java/column.rb +0 -0
  57. data/lib/baza/{drivers → driver}/mysql_java/columns.rb +0 -0
  58. data/lib/baza/driver/mysql_java/commands.rb +2 -0
  59. data/lib/baza/driver/mysql_java/database.rb +2 -0
  60. data/lib/baza/driver/mysql_java/databases.rb +2 -0
  61. data/lib/baza/{drivers → driver}/mysql_java/index.rb +0 -0
  62. data/lib/baza/{drivers → driver}/mysql_java/indexes.rb +0 -0
  63. data/lib/baza/{drivers → driver}/mysql_java/table.rb +0 -0
  64. data/lib/baza/{drivers → driver}/mysql_java/tables.rb +0 -0
  65. data/lib/baza/driver/mysql_java/user.rb +2 -0
  66. data/lib/baza/driver/mysql_java/users.rb +2 -0
  67. data/lib/baza/driver/pg.rb +80 -0
  68. data/lib/baza/driver/pg/column.rb +125 -0
  69. data/lib/baza/driver/pg/columns.rb +37 -0
  70. data/lib/baza/driver/pg/commands.rb +35 -0
  71. data/lib/baza/driver/pg/create_index_sql_creator.rb +51 -0
  72. data/lib/baza/driver/pg/database.rb +89 -0
  73. data/lib/baza/driver/pg/databases.rb +79 -0
  74. data/lib/baza/driver/pg/index.rb +35 -0
  75. data/lib/baza/driver/pg/indexes.rb +5 -0
  76. data/lib/baza/driver/pg/result.rb +139 -0
  77. data/lib/baza/driver/pg/table.rb +184 -0
  78. data/lib/baza/driver/pg/tables.rb +45 -0
  79. data/lib/baza/{drivers → driver}/sqlite3.rb +6 -24
  80. data/lib/baza/{drivers → driver}/sqlite3/column.rb +22 -24
  81. data/lib/baza/{drivers → driver}/sqlite3/columns.rb +6 -6
  82. data/lib/baza/driver/sqlite3/commands.rb +28 -0
  83. data/lib/baza/{drivers → driver}/sqlite3/database.rb +0 -0
  84. data/lib/baza/{drivers → driver}/sqlite3/databases.rb +0 -1
  85. data/lib/baza/{drivers → driver}/sqlite3/index.rb +0 -0
  86. data/lib/baza/{drivers → driver}/sqlite3/indexes.rb +0 -0
  87. data/lib/baza/{drivers → driver}/sqlite3/result.rb +14 -6
  88. data/lib/baza/{drivers → driver}/sqlite3/sqlspecs.rb +0 -0
  89. data/lib/baza/{drivers → driver}/sqlite3/table.rb +25 -16
  90. data/lib/baza/{drivers → driver}/sqlite3/tables.rb +5 -6
  91. data/lib/baza/{drivers → driver}/sqlite3/unbuffered_result.rb +8 -2
  92. data/lib/baza/{drivers → driver}/sqlite3_java.rb +13 -23
  93. data/lib/baza/{drivers → driver}/sqlite3_java/column.rb +0 -0
  94. data/lib/baza/{drivers → driver}/sqlite3_java/columns.rb +0 -0
  95. data/lib/baza/driver/sqlite3_java/commands.rb +2 -0
  96. data/lib/baza/{drivers → driver}/sqlite3_java/database.rb +0 -0
  97. data/lib/baza/{drivers → driver}/sqlite3_java/index.rb +0 -0
  98. data/lib/baza/{drivers → driver}/sqlite3_java/indexes.rb +0 -0
  99. data/lib/baza/{drivers → driver}/sqlite3_java/table.rb +0 -0
  100. data/lib/baza/{drivers → driver}/sqlite3_java/tables.rb +0 -0
  101. data/lib/baza/{drivers → driver}/sqlite3_java/unbuffered_result.rb +14 -9
  102. data/lib/baza/{drivers → driver}/sqlite3_rhodes.rb +6 -24
  103. data/lib/baza/errors.rb +2 -0
  104. data/lib/baza/idquery.rb +15 -8
  105. data/lib/baza/index.rb +7 -0
  106. data/lib/baza/jdbc_driver.rb +4 -16
  107. data/lib/baza/jdbc_result.rb +20 -12
  108. data/lib/baza/mysql_base_driver.rb +7 -7
  109. data/lib/baza/query_buffer.rb +20 -19
  110. data/lib/baza/row.rb +16 -16
  111. data/lib/baza/sql_queries.rb +3 -0
  112. data/lib/baza/sql_queries/generic_insert.rb +81 -0
  113. data/lib/baza/sql_queries/generic_update.rb +31 -0
  114. data/lib/baza/sql_queries/mysql_upsert.rb +52 -0
  115. data/lib/baza/sql_queries/mysql_upsert_duplicate_key.rb +57 -0
  116. data/lib/baza/sql_queries/non_atomic_upsert.rb +25 -0
  117. data/lib/baza/sql_queries/postgres_upsert_duplicate_key.rb +118 -0
  118. data/lib/baza/sql_queries/select.rb +170 -0
  119. data/lib/baza/sql_queries/sqlite_upsert_duplicate_key.rb +99 -0
  120. data/lib/baza/table.rb +35 -8
  121. data/spec/active_record/models/user.rb +3 -0
  122. data/spec/{cloner_spec.rb → baza/cloner_spec.rb} +0 -0
  123. data/spec/drivers/active_record_mysql2_spec.rb +5 -3
  124. data/spec/drivers/active_record_mysql_spec.rb +2 -1
  125. data/spec/drivers/active_record_pg_spec.rb +20 -0
  126. data/spec/drivers/active_record_sqlite3_spec.rb +2 -1
  127. data/spec/drivers/mysql2_spec.rb +1 -1
  128. data/spec/drivers/mysql_spec.rb +10 -10
  129. data/spec/drivers/pg_spec.rb +18 -0
  130. data/spec/drivers/sqlite3_spec.rb +7 -8
  131. data/spec/info_active_record_example.rb +1 -1
  132. data/spec/{info_active_record_mysql2.rb → info_active_record_mysql2_example.rb} +3 -2
  133. data/spec/info_active_record_mysql2_travis.rb +35 -0
  134. data/spec/{info_active_record_mysql.rb → info_active_record_mysql_example.rb} +5 -4
  135. data/spec/info_active_record_mysql_travis.rb +36 -0
  136. data/spec/info_active_record_pg_example.rb +36 -0
  137. data/spec/info_active_record_pg_travis.rb +34 -0
  138. data/spec/info_active_record_sqlite3.rb +1 -1
  139. data/spec/info_mysql2_example.rb +1 -3
  140. data/spec/{info_mysql2_shippable.rb → info_mysql2_travis.rb} +2 -4
  141. data/spec/info_mysql_example.rb +1 -3
  142. data/spec/{info_mysql_shippable.rb → info_mysql_travis.rb} +2 -4
  143. data/spec/info_pg_example.rb +22 -0
  144. data/spec/info_pg_travis.rb +20 -0
  145. data/spec/info_sqlite3.rb +1 -3
  146. data/spec/spec_helper.rb +1 -1
  147. data/spec/support/driver_active_record_collection.rb +62 -0
  148. data/spec/support/driver_collection.rb +136 -121
  149. data/spec/support/driver_columns_collection.rb +19 -10
  150. data/spec/support/driver_databases_collection.rb +23 -1
  151. data/spec/support/driver_indexes_collection.rb +2 -2
  152. data/spec/support/driver_tables_collection.rb +24 -4
  153. data/spec/support/driver_users_collection.rb +53 -0
  154. metadata +185 -104
  155. data/lib/baza/drivers/mysql/database.rb +0 -28
  156. data/lib/baza/drivers/mysql/databases.rb +0 -35
  157. data/lib/baza/drivers/mysql_java/database.rb +0 -2
  158. data/lib/baza/drivers/mysql_java/databases.rb +0 -2
  159. data/lib/baza/model.rb +0 -875
  160. data/lib/baza/model_custom.rb +0 -155
  161. data/lib/baza/model_handler.rb +0 -910
  162. data/lib/baza/model_handler_sqlhelper.rb +0 -484
  163. data/lib/baza/revision.rb +0 -383
  164. data/shippable.yml +0 -17
  165. data/spec/info_active_record_mysql2_shippable.rb +0 -34
  166. data/spec/info_active_record_mysql_shippable.rb +0 -34
  167. data/spec/model_handler_spec.rb +0 -431
@@ -0,0 +1,170 @@
1
+ class Baza::SqlQueries::Select
2
+ def initialize(args)
3
+ @db = args.fetch(:db)
4
+ @selects = []
5
+ @froms = []
6
+ @joins = []
7
+ @wheres = []
8
+ @groups = []
9
+ @orders = []
10
+ end
11
+
12
+ def select(arg)
13
+ @selects << arg
14
+ self
15
+ end
16
+
17
+ def from(arg)
18
+ @froms << arg
19
+ self
20
+ end
21
+
22
+ def join(arg)
23
+ @joins << arg
24
+ self
25
+ end
26
+
27
+ def where(*args)
28
+ @wheres << args
29
+ self
30
+ end
31
+
32
+ def group(arg)
33
+ @groups << arg
34
+ self
35
+ end
36
+
37
+ def order(arg)
38
+ @orders << arg
39
+ self
40
+ end
41
+
42
+ def limit(limit)
43
+ @limit = limit
44
+ self
45
+ end
46
+
47
+ def offset(offset)
48
+ @offset = offset
49
+ self
50
+ end
51
+
52
+ def to_sql
53
+ "#{select_sql} #{from_sql} #{where_sql} #{group_sql} #{limit_sql}"
54
+ end
55
+
56
+ def to_a
57
+ each.to_a
58
+ end
59
+
60
+ def each(&blk)
61
+ query(&blk)
62
+ end
63
+
64
+ def each_row
65
+ query do |data|
66
+ yield Baza::Row.new(
67
+ db: @db,
68
+ table: first_from,
69
+ data: data
70
+ )
71
+ end
72
+ end
73
+
74
+ def to_enum
75
+ Enumerator.new do |yielder|
76
+ query do |data|
77
+ yielder << data
78
+ end
79
+ end
80
+ end
81
+
82
+ def query(&blk)
83
+ @db.query(to_sql, &blk)
84
+ end
85
+
86
+ private
87
+
88
+ def select_sql
89
+ sql = "SELECT"
90
+
91
+ if @selects.empty?
92
+ sql << " *"
93
+ else
94
+ first = true
95
+ @selects.each do |select|
96
+ sql << "," unless first
97
+ first = false if first
98
+
99
+ if select.is_a?(Symbol)
100
+ select << " #{@db.sep_col}#{@db.escape_column(select)}#{@db.sep_col}"
101
+ else
102
+ select << @db.sqlval(select)
103
+ end
104
+ end
105
+ end
106
+
107
+ sql
108
+ end
109
+
110
+ def from_sql
111
+ sql = "FROM"
112
+
113
+ first = true
114
+ @froms.each do |from|
115
+ sql << "," unless first
116
+ first = false if first
117
+ sql << " #{@db.sep_table}#{@db.escape_table(from)}#{@db.sep_table}"
118
+ end
119
+
120
+ sql
121
+ end
122
+
123
+ def first_from
124
+ @first_from ||= @froms.first
125
+ end
126
+
127
+ def where_sql
128
+ return if @wheres.empty?
129
+
130
+ sql = " WHERE"
131
+
132
+ first = true
133
+ @wheres.each do |args|
134
+ where = args.shift
135
+
136
+ sql << " AND " unless first
137
+ first = false if first
138
+
139
+ if where.is_a?(Hash)
140
+ where.each do |key, value|
141
+ sql << "#{@db.sep_col}#{@db.escape_column(key)}#{@db.sep_col} = #{@db.sqlval(value)}"
142
+ end
143
+ elsif where.is_a?(String)
144
+ sql_arg = where.clone
145
+ args.each do |arg|
146
+ sql_arg.sub!("?", @db.sqlval(arg))
147
+ end
148
+
149
+ sql << sql_arg
150
+ else
151
+ raise "Dont know what to do with that argument: #{where}"
152
+ end
153
+ end
154
+
155
+ sql
156
+ end
157
+
158
+ def group_sql
159
+ return if @groups.empty?
160
+ end
161
+
162
+ def limit_sql
163
+ if @limit
164
+ sql = "LIMIT #{@db.sqlval(@limit)}"
165
+ sql << ", #{@db.sqlval(@offset)}" if @offset
166
+ end
167
+
168
+ sql
169
+ end
170
+ end
@@ -0,0 +1,99 @@
1
+ class Baza::SqlQueries::SqliteUpsertDuplicateKey
2
+ def initialize(args)
3
+ @db = args.fetch(:db)
4
+ @table_name = args.fetch(:table_name)
5
+ @updates = StringCases.stringify_keys(args.fetch(:updates))
6
+ @terms = StringCases.stringify_keys(args.fetch(:terms))
7
+ @return_id = args[:return_id]
8
+ end
9
+
10
+ def execute
11
+ return insert_or_handle_duplicate if @terms.empty?
12
+
13
+ @db.transaction do
14
+ @db.query(insert_sql)
15
+ @db.query(update_sql)
16
+
17
+ if @return_id
18
+ data = @db.single(@table_name, @terms)
19
+ raise "Couldn't find the updated data" unless data
20
+ return data.fetch(primary_column).to_i
21
+ end
22
+ end
23
+ end
24
+
25
+ private
26
+
27
+ def primary_column
28
+ @primary_column ||= @db.tables[@table_name.to_s].columns.find(&:primarykey?).name.to_sym
29
+ end
30
+
31
+ def insert_or_handle_duplicate
32
+ @db.insert(@table_name, @updates)
33
+ return @db.last_id if @return_id
34
+ rescue => e
35
+ if (match = e.message.match(/UNIQUE constraint failed: #{Regexp.escape(@table_name)}\.(.+?)(:|\Z|\))/))
36
+ column_name = match[1]
37
+ elsif (match = e.message.match(/column (.+?) is not unique/))
38
+ column_name = match[1]
39
+ else
40
+ raise e
41
+ end
42
+
43
+ conflicting_value = @updates.fetch(column_name)
44
+ @db.update(@table_name, @updates, column_name => conflicting_value)
45
+
46
+ if @return_id
47
+ data = @db.single(@table_name, column_name => conflicting_value)
48
+ raise "Couldn't find the updated data" unless data
49
+ return data.fetch(primary_column).to_i
50
+ end
51
+ end
52
+
53
+ def insert_sql
54
+ sql = "INSERT OR IGNORE INTO #{@db.sep_table}#{@db.escape_table(@table_name)}#{@db.sep_table} ("
55
+
56
+ combined_data = @updates.merge(@terms)
57
+
58
+ first = true
59
+ combined_data.each_key do |column_name|
60
+ sql << ", " unless first
61
+ first = false if first
62
+ sql << "#{@db.sep_col}#{@db.escape_column(column_name)}#{@db.sep_col}"
63
+ end
64
+
65
+ sql << ") VALUES ("
66
+
67
+ first = true
68
+ combined_data.each_value do |value|
69
+ sql << ", " unless first
70
+ first = false if first
71
+ sql << @db.sqlval(value).to_s
72
+ end
73
+
74
+ sql << ")"
75
+ sql
76
+ end
77
+
78
+ def update_sql
79
+ sql = "UPDATE OR IGNORE #{@db.sep_table}#{@db.escape_table(@table_name)}#{@db.sep_table} SET "
80
+
81
+ first = true
82
+ @updates.each do |key, value|
83
+ sql << ", " unless first
84
+ first = false if first
85
+ sql << "#{@db.sep_col}#{@db.escape_column(key)}#{@db.sep_col} = #{@db.sqlval(value)}"
86
+ end
87
+
88
+ sql << " WHERE "
89
+
90
+ first = true
91
+ @terms.each do |key, value|
92
+ sql << " AND " unless first
93
+ first = false if first
94
+ sql << "#{@db.sep_col}#{@db.escape_column(key)}#{@db.sep_col} = #{@db.sqlval(value)}"
95
+ end
96
+
97
+ sql
98
+ end
99
+ end
@@ -1,4 +1,5 @@
1
1
  class Baza::Table
2
+ include Comparable
2
3
  include Baza::DatabaseModelFunctionality
3
4
 
4
5
  attr_reader :db
@@ -24,17 +25,43 @@ class Baza::Table
24
25
  end
25
26
 
26
27
  def row(id)
27
- data = rows({id: id}, limit: 1).fetch
28
- raise Baza::Errors::RowNotFound unless data
29
-
30
- Baza::Row.new(
31
- db: db,
32
- table: name,
33
- data: data
34
- )
28
+ row = rows({id: id}, limit: 1).first
29
+ raise Baza::Errors::RowNotFound unless row
30
+ row
35
31
  end
36
32
 
37
33
  def to_param
38
34
  name
39
35
  end
36
+
37
+ def insert(data, args = {})
38
+ @db.insert(name, data, args)
39
+ end
40
+
41
+ def upsert_duplicate_key(data, terms = {}, args = {})
42
+ @db.upsert_duplicate_key(name, data, terms, args)
43
+ end
44
+
45
+ def rows_count
46
+ sql = "SELECT COUNT(*) AS count FROM #{@db.sep_table}#{@db.escape_table(name)}#{@db.sep_table}"
47
+ @db.query(sql).fetch.fetch(:count).to_i
48
+ end
49
+
50
+ def truncate
51
+ @db.query("TRUNCATE #{@db.sep_table}#{@db.escape_table(name)}#{@db.sep_table}")
52
+ self
53
+ end
54
+
55
+ def <=>(other)
56
+ return false unless other.is_a?(Baza::Table)
57
+ return false unless other.db.opts.fetch(:db) == db.opts.fetch(:db)
58
+ other.name <=> name
59
+ end
60
+
61
+ def create_columns(col_arr)
62
+ col_arr.each do |col_data|
63
+ sql = "ALTER TABLE #{db.sep_col}#{name}#{db.sep_col} ADD COLUMN #{@db.columns.data_sql(col_data)};"
64
+ @db.query(sql)
65
+ end
66
+ end
40
67
  end
@@ -0,0 +1,3 @@
1
+ class User < ActiveRecord::Base
2
+ validates_presence_of :email
3
+ end
@@ -1,9 +1,9 @@
1
- require "spec_helper"
2
-
3
1
  unless RUBY_PLATFORM == "java"
2
+ require "spec_helper"
3
+ Baza.load_driver("active_record")
4
+
4
5
  describe Baza::Driver::ActiveRecord do
5
6
  let(:constant) do
6
- name = described_class.name.split("::").last
7
7
  const_name = "InfoActiveRecordMysql2"
8
8
  require "#{File.dirname(__FILE__)}/../#{StringCases.camel_to_snake(const_name)}"
9
9
  raise "Constant was not defined: '#{const_name}'." unless Baza.const_defined?(const_name)
@@ -14,5 +14,7 @@ unless RUBY_PLATFORM == "java"
14
14
  it_should_behave_like "a baza tables driver"
15
15
  it_should_behave_like "a baza columns driver"
16
16
  it_should_behave_like "a baza indexes driver"
17
+ it_should_behave_like "a baza users driver"
18
+ it_should_behave_like "an active record driver"
17
19
  end
18
20
  end
@@ -2,7 +2,6 @@ require "spec_helper"
2
2
 
3
3
  describe Baza::Driver::ActiveRecord do
4
4
  let(:constant) do
5
- name = described_class.name.split("::").last
6
5
  const_name = "InfoActiveRecordMysql"
7
6
  require "#{File.dirname(__FILE__)}/../#{StringCases.camel_to_snake(const_name)}"
8
7
  raise "Constant was not defined: '#{const_name}'." unless Baza.const_defined?(const_name)
@@ -13,4 +12,6 @@ describe Baza::Driver::ActiveRecord do
13
12
  it_should_behave_like "a baza tables driver"
14
13
  it_should_behave_like "a baza columns driver"
15
14
  it_should_behave_like "a baza indexes driver"
15
+ it_should_behave_like "a baza users driver"
16
+ it_should_behave_like "an active record driver"
16
17
  end
@@ -0,0 +1,20 @@
1
+ require "spec_helper"
2
+
3
+ unless RUBY_PLATFORM == "java"
4
+ Baza.load_driver("active_record")
5
+
6
+ describe Baza::Driver::ActiveRecord do
7
+ let(:constant) do
8
+ const_name = "InfoActiveRecordPg"
9
+ require "#{File.dirname(__FILE__)}/../#{StringCases.camel_to_snake(const_name)}"
10
+ raise "Constant was not defined: '#{const_name}'." unless Baza.const_defined?(const_name)
11
+ Baza.const_get(const_name)
12
+ end
13
+
14
+ it_behaves_like "a baza driver"
15
+ it_should_behave_like "a baza tables driver"
16
+ it_should_behave_like "a baza columns driver"
17
+ it_should_behave_like "a baza indexes driver"
18
+ it_should_behave_like "an active record driver"
19
+ end
20
+ end
@@ -1,8 +1,8 @@
1
1
  require "spec_helper"
2
+ require_relative "../../lib/baza/driver/active_record"
2
3
 
3
4
  describe Baza::Driver::ActiveRecord do
4
5
  let(:constant) do
5
- name = described_class.name.split("::").last
6
6
  const_name = "InfoActiveRecordSqlite3"
7
7
  require "#{File.dirname(__FILE__)}/../#{StringCases.camel_to_snake(const_name)}"
8
8
  raise "Constant was not defined: '#{const_name}'." unless Baza.const_defined?(const_name)
@@ -13,4 +13,5 @@ describe Baza::Driver::ActiveRecord do
13
13
  it_should_behave_like "a baza tables driver"
14
14
  it_should_behave_like "a baza columns driver"
15
15
  it_should_behave_like "a baza indexes driver"
16
+ it_should_behave_like "an active record driver"
16
17
  end
@@ -2,7 +2,6 @@ require "spec_helper"
2
2
 
3
3
  describe Baza::Driver::Mysql2 do
4
4
  let(:constant) do
5
- name = described_class.name.split("::").last
6
5
  const_name = "InfoMysql2"
7
6
  require "#{File.dirname(__FILE__)}/../#{StringCases.camel_to_snake(const_name)}"
8
7
  raise "Constant was not defined: '#{const_name}'." unless Baza.const_defined?(const_name)
@@ -14,4 +13,5 @@ describe Baza::Driver::Mysql2 do
14
13
  it_should_behave_like "a baza tables driver"
15
14
  it_should_behave_like "a baza columns driver"
16
15
  it_should_behave_like "a baza indexes driver"
16
+ it_should_behave_like "a baza users driver"
17
17
  end
@@ -2,7 +2,6 @@ require "spec_helper"
2
2
 
3
3
  describe Baza.const_get(:Driver).const_get(:Mysql) do
4
4
  let(:constant) do
5
- name = described_class.name.split("::").last
6
5
  const_name = "InfoMysql"
7
6
  require "#{File.dirname(__FILE__)}/../#{StringCases.camel_to_snake(const_name)}"
8
7
  raise "Constant was not defined: '#{const_name}'." unless Baza.const_defined?(const_name)
@@ -14,6 +13,7 @@ describe Baza.const_get(:Driver).const_get(:Mysql) do
14
13
  it_should_behave_like "a baza tables driver"
15
14
  it_should_behave_like "a baza columns driver"
16
15
  it_should_behave_like "a baza indexes driver"
16
+ it_should_behave_like "a baza users driver"
17
17
 
18
18
  it "should dump to sqlite3" do
19
19
  require "info_sqlite3"
@@ -29,25 +29,25 @@ describe Baza.const_get(:Driver).const_get(:Mysql) do
29
29
 
30
30
  begin
31
31
  db1.tables.create(:test_table, columns: [
32
- {name: :id, type: :int, autoincr: true, primarykey: true},
33
- {name: :name, type: :varchar, maxlength: 100}
34
- ])
32
+ {name: :id, type: :int, autoincr: true, primarykey: true},
33
+ {name: :name, type: :varchar, maxlength: 100}
34
+ ])
35
35
  test_table = db1.tables[:test_table]
36
36
 
37
37
 
38
38
  db1.copy_to(db2)
39
39
 
40
40
  table_sqlite = db2.tables[:test_table]
41
- table_sqlite.columns.length.should eq test_table.columns.length
41
+ expect(table_sqlite.columns.length).to eq test_table.columns.length
42
42
 
43
43
  col_id_sqlite = table_sqlite.column(:id)
44
- col_id_sqlite.type.should eq :int
45
- col_id_sqlite.autoincr?.should eq true
46
- col_id_sqlite.primarykey?.should eq true
44
+ expect(col_id_sqlite.type).to eq :int
45
+ expect(col_id_sqlite.autoincr?).to eq true
46
+ expect(col_id_sqlite.primarykey?).to eq true
47
47
 
48
48
  col_name_sqlite = table_sqlite.column(:name)
49
- col_name_sqlite.type.should eq :varchar
50
- col_name_sqlite.maxlength.to_i.should eq 100
49
+ expect(col_name_sqlite.type).to eq :varchar
50
+ expect(col_name_sqlite.maxlength.to_i).to eq 100
51
51
  ensure
52
52
  driver1.after
53
53
  driver2.after