mass_insert 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (129) hide show
  1. data/.gitignore +2 -0
  2. data/.travis.yml +10 -0
  3. data/Gemfile +0 -2
  4. data/README.md +15 -23
  5. data/Rakefile +22 -33
  6. data/lib/mass_insert.rb +11 -7
  7. data/lib/mass_insert/base.rb +22 -58
  8. data/lib/mass_insert/builder/adapters.rb +16 -0
  9. data/lib/mass_insert/builder/adapters/adapter.rb +65 -0
  10. data/lib/mass_insert/builder/adapters/helpers/abstract_query.rb +52 -0
  11. data/lib/mass_insert/builder/adapters/helpers/column_value.rb +90 -0
  12. data/lib/mass_insert/builder/adapters/mysql2_adapter.rb +15 -0
  13. data/lib/mass_insert/builder/adapters/postgresql_adapter.rb +7 -0
  14. data/lib/mass_insert/builder/adapters/sqlite3_adapter.rb +27 -0
  15. data/lib/mass_insert/builder/adapters/sqlserver_adapter.rb +26 -0
  16. data/lib/mass_insert/builder/base.rb +28 -0
  17. data/lib/mass_insert/builder/utilities.rb +13 -0
  18. data/lib/mass_insert/executer.rb +13 -0
  19. data/lib/mass_insert/process.rb +24 -0
  20. data/lib/mass_insert/result.rb +33 -0
  21. data/lib/mass_insert/version.rb +1 -1
  22. data/mass_insert.gemspec +2 -2
  23. data/spec/adapters/column_types/binary_spec.rb +64 -0
  24. data/spec/adapters/column_types/boolean_spec.rb +48 -0
  25. data/spec/adapters/column_types/decimal_spec.rb +59 -0
  26. data/spec/adapters/column_types/integer_spec.rb +59 -0
  27. data/spec/adapters/column_types/string_spec.rb +46 -0
  28. data/spec/{active_record_models → adapters}/model_spec.rb +1 -21
  29. data/spec/{active_record_dummy → dummy}/.gitignore +0 -0
  30. data/spec/{active_record_dummy → dummy}/Gemfile +1 -1
  31. data/spec/{active_record_dummy → dummy}/README.rdoc +0 -0
  32. data/spec/{active_record_dummy → dummy}/Rakefile +0 -0
  33. data/spec/{active_record_dummy → dummy}/app/assets/images/rails.png +0 -0
  34. data/spec/{active_record_dummy → dummy}/app/assets/javascripts/application.js +0 -0
  35. data/spec/{active_record_dummy → dummy}/app/assets/stylesheets/application.css +0 -0
  36. data/spec/{active_record_dummy → dummy}/app/controllers/application_controller.rb +0 -0
  37. data/spec/{active_record_dummy → dummy}/app/helpers/application_helper.rb +0 -0
  38. data/spec/{active_record_dummy → dummy}/app/mailers/.gitkeep +0 -0
  39. data/spec/{active_record_dummy → dummy}/app/models/.gitkeep +0 -0
  40. data/spec/{active_record_dummy → dummy}/app/models/user.rb +0 -0
  41. data/spec/{active_record_dummy → dummy}/app/views/layouts/application.html.erb +0 -0
  42. data/spec/{active_record_dummy → dummy}/config.ru +0 -0
  43. data/spec/{active_record_dummy → dummy}/config/application.rb +0 -0
  44. data/spec/{active_record_dummy → dummy}/config/boot.rb +0 -0
  45. data/spec/{active_record_dummy → dummy}/config/database.yml +3 -8
  46. data/spec/{active_record_dummy → dummy}/config/environment.rb +0 -0
  47. data/spec/{active_record_dummy → dummy}/config/environments/development.rb +0 -0
  48. data/spec/{active_record_dummy → dummy}/config/environments/mysql2.rb +0 -0
  49. data/spec/{active_record_dummy → dummy}/config/environments/postgresql.rb +0 -0
  50. data/spec/{active_record_dummy → dummy}/config/environments/production.rb +0 -0
  51. data/spec/{active_record_dummy → dummy}/config/environments/sqlite3.rb +0 -0
  52. data/spec/{active_record_dummy → dummy}/config/environments/test.rb +0 -0
  53. data/spec/{active_record_dummy → dummy}/config/initializers/backtrace_silencers.rb +0 -0
  54. data/spec/{active_record_dummy → dummy}/config/initializers/inflections.rb +0 -0
  55. data/spec/{active_record_dummy → dummy}/config/initializers/mime_types.rb +0 -0
  56. data/spec/{active_record_dummy → dummy}/config/initializers/secret_token.rb +0 -0
  57. data/spec/{active_record_dummy → dummy}/config/initializers/session_store.rb +0 -0
  58. data/spec/{active_record_dummy → dummy}/config/initializers/wrap_parameters.rb +0 -0
  59. data/spec/{active_record_dummy → dummy}/config/locales/en.yml +0 -0
  60. data/spec/{active_record_dummy → dummy}/config/routes.rb +0 -0
  61. data/spec/{active_record_dummy → dummy}/db/migrate/20130412154541_create_users.rb +0 -0
  62. data/spec/{active_record_dummy → dummy}/db/schema.rb +0 -0
  63. data/spec/{active_record_dummy → dummy}/db/seeds.rb +0 -0
  64. data/spec/{active_record_dummy → dummy}/lib/assets/.gitkeep +0 -0
  65. data/spec/{active_record_dummy → dummy}/lib/tasks/.gitkeep +0 -0
  66. data/spec/{active_record_dummy → dummy}/log/.gitkeep +0 -0
  67. data/spec/{active_record_dummy → dummy}/public/404.html +0 -0
  68. data/spec/{active_record_dummy → dummy}/public/422.html +0 -0
  69. data/spec/{active_record_dummy → dummy}/public/500.html +0 -0
  70. data/spec/{active_record_dummy → dummy}/public/favicon.ico +0 -0
  71. data/spec/{active_record_dummy → dummy}/public/index.html +0 -0
  72. data/spec/{active_record_dummy → dummy}/public/robots.txt +0 -0
  73. data/spec/{active_record_dummy → dummy}/script/rails +0 -0
  74. data/spec/{active_record_dummy → dummy}/vendor/assets/javascripts/.gitkeep +0 -0
  75. data/spec/{active_record_dummy → dummy}/vendor/assets/stylesheets/.gitkeep +0 -0
  76. data/spec/{active_record_dummy → dummy}/vendor/plugins/.gitkeep +0 -0
  77. data/spec/lib/mass_insert/base_spec.rb +40 -0
  78. data/spec/lib/mass_insert/builder/adapters/adapter_spec.rb +129 -0
  79. data/spec/lib/mass_insert/builder/adapters/helpers/abstract_query_spec.rb +130 -0
  80. data/spec/{mass_insert/adapters/adapter_helpers → lib/mass_insert/builder/adapters/helpers}/column_value_spec.rb +42 -94
  81. data/spec/lib/mass_insert/builder/adapters/mysql_adapter_spec.rb +15 -0
  82. data/spec/lib/mass_insert/builder/adapters/postgresql_adapter_spec.rb +9 -0
  83. data/spec/lib/mass_insert/builder/adapters/sqlite3_adapter_spec.rb +52 -0
  84. data/spec/lib/mass_insert/builder/adapters/sqlserver_adapter_spec.rb +38 -0
  85. data/spec/lib/mass_insert/builder/adapters_spec.rb +31 -0
  86. data/spec/lib/mass_insert/builder/base_spec.rb +28 -0
  87. data/spec/lib/mass_insert/builder/utilities_spec.rb +11 -0
  88. data/spec/lib/mass_insert/executer_spec.rb +33 -0
  89. data/spec/lib/mass_insert/process_spec.rb +44 -0
  90. data/spec/lib/mass_insert/result_spec.rb +45 -0
  91. data/spec/lib/mass_insert_spec.rb +35 -0
  92. data/spec/spec_helper.rb +7 -2
  93. data/spec/support/mass_insert_support.rb +12 -0
  94. metadata +160 -163
  95. data/lib/mass_insert/adapters.rb +0 -10
  96. data/lib/mass_insert/adapters/adapter.rb +0 -26
  97. data/lib/mass_insert/adapters/adapter_helpers.rb +0 -11
  98. data/lib/mass_insert/adapters/adapter_helpers/abstract_query.rb +0 -56
  99. data/lib/mass_insert/adapters/adapter_helpers/column_value.rb +0 -110
  100. data/lib/mass_insert/adapters/adapter_helpers/sanitizer.rb +0 -21
  101. data/lib/mass_insert/adapters/adapter_helpers/timestamp.rb +0 -33
  102. data/lib/mass_insert/adapters/mysql2_adapter.rb +0 -13
  103. data/lib/mass_insert/adapters/postgresql_adapter.rb +0 -5
  104. data/lib/mass_insert/adapters/sqlite3_adapter.rb +0 -37
  105. data/lib/mass_insert/adapters/sqlserver_adapter.rb +0 -29
  106. data/lib/mass_insert/process_control.rb +0 -46
  107. data/lib/mass_insert/query_builder.rb +0 -39
  108. data/lib/mass_insert/query_execution.rb +0 -29
  109. data/spec/active_record_models/column_types/binary_spec.rb +0 -60
  110. data/spec/active_record_models/column_types/boolean_spec.rb +0 -52
  111. data/spec/active_record_models/column_types/decimal_spec.rb +0 -49
  112. data/spec/active_record_models/column_types/integer_spec.rb +0 -49
  113. data/spec/active_record_models/column_types/string_spec.rb +0 -50
  114. data/spec/dummy_models/test.rb +0 -5
  115. data/spec/mass_insert/adapters/adapter_helpers/abstract_query_spec.rb +0 -119
  116. data/spec/mass_insert/adapters/adapter_helpers/sanitizer_spec.rb +0 -46
  117. data/spec/mass_insert/adapters/adapter_helpers/timestamp_spec.rb +0 -75
  118. data/spec/mass_insert/adapters/adapter_helpers_spec.rb +0 -24
  119. data/spec/mass_insert/adapters/adapter_spec.rb +0 -79
  120. data/spec/mass_insert/adapters/mysql_adapter_spec.rb +0 -22
  121. data/spec/mass_insert/adapters/postgresql_adapter_spec.rb +0 -11
  122. data/spec/mass_insert/adapters/sqlite3_adapter_spec.rb +0 -84
  123. data/spec/mass_insert/adapters/sqlserver_adapter_spec.rb +0 -61
  124. data/spec/mass_insert/adapters_spec.rb +0 -32
  125. data/spec/mass_insert/base_spec.rb +0 -114
  126. data/spec/mass_insert/process_control_spec.rb +0 -125
  127. data/spec/mass_insert/query_builder_spec.rb +0 -84
  128. data/spec/mass_insert/query_execution_spec.rb +0 -50
  129. data/spec/mass_insert_spec.rb +0 -28
@@ -0,0 +1,130 @@
1
+ require 'spec_helper'
2
+
3
+ describe MassInsert::Builder::Adapters::Helpers::AbstractQuery do
4
+ let!(:subject){ MassInsert::Builder::Adapters::Adapter.new([], {}) }
5
+
6
+ describe "#begin_string" do
7
+ it "returns the basic beginning of the query" do
8
+ subject.stub(:class_name).and_return(User)
9
+ expect(subject.begin_string).to eq("INSERT INTO users ")
10
+ end
11
+ end
12
+
13
+ describe "#string_columns" do
14
+ it "returns the correct columns string" do
15
+ subject.stub(:columns).and_return([:name, :email])
16
+ expect(subject.string_columns).to eq("(name, email) ")
17
+ end
18
+ end
19
+
20
+ describe "#string_values" do
21
+ it "returns the correct values string" do
22
+ subject.stub(:string_rows_values).and_return("rows_values")
23
+ expect(subject.string_values).to eq("VALUES (rows_values);")
24
+ end
25
+ end
26
+
27
+ describe "#string_rows_values" do
28
+ context "when is one value" do
29
+ it "returns the correct string" do
30
+ subject.stub(:string_single_row_values).and_return("row")
31
+ subject.values = [{}]
32
+ expect(subject.string_rows_values).to eq("row")
33
+ end
34
+ end
35
+
36
+ context "when are two or more values" do
37
+ it "returns the correct string" do
38
+ subject.stub(:string_single_row_values).and_return("row")
39
+ subject.values = [{}, {}]
40
+ expect(subject.string_rows_values).to eq("row), (row")
41
+ end
42
+ end
43
+ end
44
+
45
+ describe "#string_single_row_values" do
46
+ before :each do
47
+ subject.stub(:string_single_value).and_return("value")
48
+ end
49
+
50
+ it "returns the correct string" do
51
+ subject.stub(:columns).and_return([:name, :email])
52
+ expect(subject.string_single_row_values({})).to eq("value, value")
53
+ end
54
+
55
+ context "when responds to timestamp attributes" do
56
+ it "calls timestamp_values method" do
57
+ subject.stub(:columns).and_return([:created_at, :updated_at])
58
+ subject.stub(:timestamp_hash).and_return(:test => "test")
59
+ subject.should_receive(:timestamp_hash).exactly(1).times
60
+ subject.string_single_row_values({})
61
+ end
62
+ end
63
+
64
+ context "when not respond to timestamp attributes" do
65
+ it "should returns the correct string" do
66
+ subject.stub(:columns).and_return([:name, :email])
67
+ subject.should_receive(:timestamp_hash).exactly(0).times
68
+ subject.string_single_row_values({})
69
+ end
70
+ end
71
+ end
72
+
73
+ describe "#string_single_value" do
74
+ let(:row){ Hash.new }
75
+ let(:column){ :name }
76
+ let(:column_value_class){ MassInsert::Builder::Adapters::Helpers::ColumnValue }
77
+
78
+ before :each do
79
+ subject.stub(:class_name).and_return(User)
80
+ end
81
+
82
+ it "instances ColumnValue class exactly one time" do
83
+ column_value_class.stub(:new).and_return("column_value_instance")
84
+ column_value_class.new.stub(:build).and_return("column_value")
85
+ column_value_class.should_receive(:new).exactly(1).times
86
+ subject.string_single_value(row, column)
87
+ end
88
+
89
+ it "instances ColumnValue class with the correct params" do
90
+ column_value_class.stub(:new).and_return("column_value_instance")
91
+ column_value_class.new.stub(:build).and_return("column_value")
92
+ column_value_class.should_receive(:new).with(row, column, User)
93
+ subject.string_single_value(row, column)
94
+ end
95
+
96
+ it "calls ColumnValue#build exactly one time" do
97
+ column_value_class.any_instance.should_receive(:build).exactly(1).times
98
+ subject.string_single_value(row, column)
99
+ end
100
+
101
+ it "returns ColumnValue#build method result" do
102
+ column_value_class.any_instance.stub(:build).and_return("column_value1")
103
+ expect(subject.string_single_value(row, column)).to eq("column_value1")
104
+ end
105
+ end
106
+
107
+ describe "#execute" do
108
+ before :each do
109
+ subject.stub(:begin_string).and_return("a")
110
+ subject.stub(:string_columns).and_return("b")
111
+ subject.stub(:string_values).and_return("c")
112
+ end
113
+
114
+ context "when have less or equal values than values_per_insertion" do
115
+ it "generates one query" do
116
+ subject.values = [{}]
117
+ subject.stub(:values_per_insertion).and_return(1)
118
+ expect(subject.execute).to eq(["abc"])
119
+ end
120
+ end
121
+
122
+ context "when have more values than values_per_insertion" do
123
+ it "generates queries according to the slices" do
124
+ subject.values = [{}, {}]
125
+ subject.stub(:values_per_insertion).and_return(1)
126
+ expect(subject.execute).to eq(["abc", "abc"])
127
+ end
128
+ end
129
+ end
130
+ end
@@ -1,33 +1,28 @@
1
- require './spec/spec_helper'
2
- require "./lib/mass_insert"
1
+ require 'spec_helper'
3
2
 
4
- describe MassInsert::Adapters::AdapterHelpers::ColumnValue do
3
+ describe MassInsert::Builder::Adapters::Helpers::ColumnValue do
5
4
  let(:class_name) { User }
6
5
  let(:row) {{ :name => "name", :age => 10 }}
7
6
  let(:column){ :name }
8
- let!(:subject){ MassInsert::Adapters::AdapterHelpers::ColumnValue.new(row, column, class_name) }
7
+ let!(:subject){ described_class.new(row, column, class_name) }
9
8
 
10
9
  describe "#initialize" do
11
- it "should assign class_name param to class_name attribute" do
10
+ it "sets class_name attribute" do
12
11
  expect(subject.class_name).to eq(class_name)
13
12
  end
14
13
 
15
- it "should assign column param to column attribute" do
14
+ it "sets column attribute" do
16
15
  expect(subject.column).to eq(column)
17
16
  end
18
17
 
19
- it "should assign row param to row attribute" do
18
+ it "sets row attribute" do
20
19
  expect(subject.row).to eq(row)
21
20
  end
22
21
  end
23
22
 
24
23
  describe "#column_type" do
25
- it "should respond to column_type method" do
26
- expect(subject).to respond_to(:column_type)
27
- end
28
-
29
- it "should return symbol :string" do
30
- subject.stub(:class_name).and_return("ClassName")
24
+ it "returns column type symbol" do
25
+ subject.stub(:class_name).and_return(User)
31
26
  subject.class_name.stub(:columns_hash).and_return({"name" => "SomeObject"})
32
27
  subject.class_name.columns_hash["name"].stub(:type).and_return(:column_type)
33
28
  expect(subject.column_type).to eq(:column_type)
@@ -35,42 +30,21 @@ describe MassInsert::Adapters::AdapterHelpers::ColumnValue do
35
30
  end
36
31
 
37
32
  describe "#colum_value" do
38
- it "should respond to column_value method" do
39
- expect(subject).to respond_to(:column_value)
40
- end
41
-
42
- it "should return row value to this column" do
33
+ it "returns row value to this column" do
43
34
  expect(subject.column_value).to eq("name")
44
35
  end
45
36
  end
46
37
 
47
- describe "#adapter" do
48
- it "should respond to adapter method" do
49
- expect(subject).to respond_to(:adapter)
50
- end
51
-
52
- it "should return the adapter type" do
53
- config = {"config" => {:adapter => "sql"}}
54
- connection = ActiveRecord::Base.connection
55
- connection.stub(:instance_values).and_return(config)
56
- expect(subject.adapter).to eq("sql")
57
- end
58
- end
59
-
60
38
  describe "#default_value" do
61
- it "should respond to default_value method" do
62
- expect(subject).to respond_to(:default_value)
63
- end
64
-
65
39
  context "when default_db_value is nil" do
66
- it "should return 'null' string" do
40
+ it "returns 'null' string" do
67
41
  subject.stub(:default_db_value).and_return(nil)
68
42
  expect(subject.default_value).to eq("null")
69
43
  end
70
44
  end
71
45
 
72
46
  context "when default_db_value is not nil" do
73
- it "should return the correct value" do
47
+ it "returns the correct value" do
74
48
  subject.stub(:default_db_value).and_return("default_value")
75
49
  expect(subject.default_value).to eq("default_value")
76
50
  end
@@ -78,12 +52,8 @@ describe MassInsert::Adapters::AdapterHelpers::ColumnValue do
78
52
  end
79
53
 
80
54
  describe "#default_db_value" do
81
- it "should respond to default_db_value method" do
82
- expect(subject).to respond_to(:default_db_value)
83
- end
84
-
85
- it "should return the default database value" do
86
- subject.stub(:class_name).and_return("ClassName")
55
+ it "returns the default database value" do
56
+ subject.stub(:class_name).and_return(User)
87
57
  subject.class_name.stub(:columns_hash).and_return({"name" => "SomeObject"})
88
58
  subject.class_name.columns_hash["name"].stub(:default).and_return(:default_db_value)
89
59
  expect(subject.default_db_value).to eq(:default_db_value)
@@ -91,12 +61,8 @@ describe MassInsert::Adapters::AdapterHelpers::ColumnValue do
91
61
  end
92
62
 
93
63
  describe "#build" do
94
- it "should respond to build method" do
95
- expect(subject).to respond_to(:build)
96
- end
97
-
98
64
  context "when column_value is nil" do
99
- it "should return the default value" do
65
+ it "returns the default value" do
100
66
  subject.stub(:column_value).and_return(nil)
101
67
  subject.stub(:default_value).and_return("default_value")
102
68
  expect(subject.build).to eq("default_value")
@@ -104,7 +70,7 @@ describe MassInsert::Adapters::AdapterHelpers::ColumnValue do
104
70
  end
105
71
 
106
72
  context "when column_value is not nil" do
107
- it "should call a method according to column type" do
73
+ it "calls a method according to column type" do
108
74
  subject.stub(:column_type).and_return("string")
109
75
  subject.stub(:column_value_string).and_return("column_value_string")
110
76
  expect(subject.build).to eq("column_value_string")
@@ -124,11 +90,7 @@ describe MassInsert::Adapters::AdapterHelpers::ColumnValue do
124
90
  method = :"column_value_#{column_type}"
125
91
 
126
92
  describe "##{method.to_s}" do
127
- it "should respond to #{method.to_s} method" do
128
- expect(subject).to respond_to(method)
129
- end
130
-
131
- it "should return the column value" do
93
+ it "returns the column value" do
132
94
  subject.stub(:column_value).and_return("name")
133
95
  expect(subject.send(method)).to eq("'name'")
134
96
  end
@@ -136,19 +98,15 @@ describe MassInsert::Adapters::AdapterHelpers::ColumnValue do
136
98
  end
137
99
 
138
100
  describe "#column_value_integer" do
139
- it "should respond to column_value_integer method" do
140
- expect(subject).to respond_to(:column_value_integer)
141
- end
142
-
143
101
  context "when is a integer value" do
144
- it "should return the same integer value" do
102
+ it "returns the same integer value" do
145
103
  subject.stub(:column_value).and_return(20)
146
104
  expect(subject.column_value_integer).to eq("20")
147
105
  end
148
106
  end
149
107
 
150
108
  context "when is not a integer value" do
151
- it "should convert it to integer value" do
109
+ it "converts it to integer value" do
152
110
  subject.stub(:column_value).and_return("name")
153
111
  expect(subject.column_value_integer).to eq("0")
154
112
  end
@@ -159,19 +117,15 @@ describe MassInsert::Adapters::AdapterHelpers::ColumnValue do
159
117
  method = :"column_value_#{column_type}"
160
118
 
161
119
  describe "##{method.to_s}" do
162
- it "should respond to #{method.to_s} method" do
163
- expect(subject).to respond_to(method)
164
- end
165
-
166
120
  context "when is a decimal value" do
167
- it "should return the same decimal value" do
121
+ it "returns the same decimal value" do
168
122
  subject.stub(:column_value).and_return(20.5)
169
123
  expect(subject.send(method)).to eq("20.5")
170
124
  end
171
125
  end
172
126
 
173
127
  context "when is not a decimal value" do
174
- it "should convert it to decimal value" do
128
+ it "converts it to decimal value" do
175
129
  subject.stub(:column_value).and_return("name")
176
130
  expect(subject.send(method)).to eq("0.0")
177
131
  end
@@ -180,12 +134,8 @@ describe MassInsert::Adapters::AdapterHelpers::ColumnValue do
180
134
  end
181
135
 
182
136
  describe "#column_value_boolean" do
183
- it "should respond to column_value_boolean method" do
184
- expect(subject).to respond_to(:column_value_boolean)
185
- end
186
-
187
- it "should call a method according to database adapter" do
188
- subject.stub(:adapter).and_return("mysql2")
137
+ it "calls a method according to database adapter" do
138
+ MassInsert::Builder::Utilities.stub(:adapter).and_return("mysql2")
189
139
  subject.stub(:mysql2_column_value_boolean).and_return("boolean_value")
190
140
  expect(subject.column_value_boolean).to eq("boolean_value")
191
141
  end
@@ -194,24 +144,19 @@ describe MassInsert::Adapters::AdapterHelpers::ColumnValue do
194
144
  [
195
145
  :mysql2,
196
146
  :postgresql,
197
- :sqlserver,
198
147
  ].each do |adapter|
199
148
  method = :"#{adapter}_column_value_boolean"
200
149
 
201
150
  describe "##{method.to_s}" do
202
- it "should respond to #{method.to_s} method" do
203
- expect(subject).to respond_to(method)
204
- end
205
-
206
- context "when column_value method return true value" do
207
- it "should return true string" do
151
+ context "when column_value method return true" do
152
+ it "returns true string" do
208
153
  subject.stub(:column_value).and_return(true)
209
154
  expect(subject.send(method)).to eq("true")
210
155
  end
211
156
  end
212
157
 
213
- context "when column_value method return false value" do
214
- it "should return false string" do
158
+ context "when column_value method return false" do
159
+ it "returns false string" do
215
160
  subject.stub(:column_value).and_return(false)
216
161
  expect(subject.send(method)).to eq("false")
217
162
  end
@@ -219,22 +164,25 @@ describe MassInsert::Adapters::AdapterHelpers::ColumnValue do
219
164
  end
220
165
  end
221
166
 
222
- describe "#sqlite3_column_value_boolean" do
223
- it "should respond to sqlite3_column_value_boolean method" do
224
- expect(subject).to respond_to(:sqlite3_column_value_boolean)
225
- end
167
+ [
168
+ :sqlite3,
169
+ :sqlserver,
170
+ ].each do |adapter|
171
+ method = :"#{adapter}_column_value_boolean"
226
172
 
227
- context "when column_value method return true value" do
228
- it "should return true string" do
229
- subject.stub(:column_value).and_return(true)
230
- expect(subject.sqlite3_column_value_boolean).to eq("1")
173
+ describe "##{method.to_s}" do
174
+ context "when column_value method return true" do
175
+ it "returns true string" do
176
+ subject.stub(:column_value).and_return(true)
177
+ expect(subject.send(method)).to eq("1")
178
+ end
231
179
  end
232
- end
233
180
 
234
- context "when column_value method return false value" do
235
- it "should return false string" do
236
- subject.stub(:column_value).and_return(false)
237
- expect(subject.sqlite3_column_value_boolean).to eq("0")
181
+ context "when column_value method return false" do
182
+ it "returns false string" do
183
+ subject.stub(:column_value).and_return(false)
184
+ expect(subject.send(method)).to eq("0")
185
+ end
238
186
  end
239
187
  end
240
188
  end
@@ -0,0 +1,15 @@
1
+ require 'spec_helper'
2
+
3
+ describe MassInsert::Builder::Adapters::Mysql2Adapter do
4
+ let!(:subject){ described_class.new([], {}) }
5
+
6
+ it "inherits from Adapter class" do
7
+ expect(described_class < MassInsert::Builder::Adapters::Adapter).to be_true
8
+ end
9
+
10
+ describe "#timestamp_format" do
11
+ it "returns format string" do
12
+ expect(subject.timestamp_format).to eq("%Y-%m-%d %H:%M:%S")
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,9 @@
1
+ require 'spec_helper'
2
+
3
+ describe MassInsert::Builder::Adapters::PostgreSQLAdapter do
4
+ let!(:subject){ described_class.new([], {}) }
5
+
6
+ it "inherits from Adapter class" do
7
+ expect(described_class < MassInsert::Builder::Adapters::Adapter).to be_true
8
+ end
9
+ end
@@ -0,0 +1,52 @@
1
+ require 'spec_helper'
2
+
3
+ describe MassInsert::Builder::Adapters::SQLite3Adapter do
4
+ let!(:subject){ described_class.new([], {}) }
5
+
6
+ it "inherits from Adapter class" do
7
+ expect(described_class < MassInsert::Builder::Adapters::Adapter).to be_true
8
+ end
9
+
10
+ describe "#values_per_insertion" do
11
+ context "when each_slice option isn't false" do
12
+ it "returns each_slice option value" do
13
+ subject.options.merge!(each_slice: 10)
14
+ expect(subject.values_per_insertion).to eq(10)
15
+ end
16
+ end
17
+
18
+ context "when each_slice option is false" do
19
+ it "returns 500" do
20
+ subject.options.merge!(each_slice: false)
21
+ expect(subject.values_per_insertion).to eq(500)
22
+ end
23
+ end
24
+ end
25
+
26
+ describe "#string_values" do
27
+ it "returns the correct values string" do
28
+ subject.stub(:string_rows_values).and_return("rows_values")
29
+ expect(subject.string_values).to eq("SELECT rows_values;")
30
+ end
31
+ end
32
+
33
+ describe "#string_rows_values" do
34
+ before :each do
35
+ subject.stub(:string_single_row_values).and_return("row_values")
36
+ end
37
+
38
+ context "when is one value" do
39
+ it "returns the correct string" do
40
+ subject.values = [{}]
41
+ expect(subject.string_rows_values).to eq("row_values")
42
+ end
43
+ end
44
+
45
+ context "when are two values" do
46
+ it "returns the correct string" do
47
+ subject.values = [{}, {}]
48
+ expect(subject.string_rows_values).to eq("row_values UNION SELECT row_values")
49
+ end
50
+ end
51
+ end
52
+ end