baza 0.0.20 → 0.0.21

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 (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