mass_insert 0.1.1 → 0.1.2
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.
- data/.gitignore +2 -0
- data/.travis.yml +10 -0
- data/Gemfile +0 -2
- data/README.md +15 -23
- data/Rakefile +22 -33
- data/lib/mass_insert.rb +11 -7
- data/lib/mass_insert/base.rb +22 -58
- data/lib/mass_insert/builder/adapters.rb +16 -0
- data/lib/mass_insert/builder/adapters/adapter.rb +65 -0
- data/lib/mass_insert/builder/adapters/helpers/abstract_query.rb +52 -0
- data/lib/mass_insert/builder/adapters/helpers/column_value.rb +90 -0
- data/lib/mass_insert/builder/adapters/mysql2_adapter.rb +15 -0
- data/lib/mass_insert/builder/adapters/postgresql_adapter.rb +7 -0
- data/lib/mass_insert/builder/adapters/sqlite3_adapter.rb +27 -0
- data/lib/mass_insert/builder/adapters/sqlserver_adapter.rb +26 -0
- data/lib/mass_insert/builder/base.rb +28 -0
- data/lib/mass_insert/builder/utilities.rb +13 -0
- data/lib/mass_insert/executer.rb +13 -0
- data/lib/mass_insert/process.rb +24 -0
- data/lib/mass_insert/result.rb +33 -0
- data/lib/mass_insert/version.rb +1 -1
- data/mass_insert.gemspec +2 -2
- data/spec/adapters/column_types/binary_spec.rb +64 -0
- data/spec/adapters/column_types/boolean_spec.rb +48 -0
- data/spec/adapters/column_types/decimal_spec.rb +59 -0
- data/spec/adapters/column_types/integer_spec.rb +59 -0
- data/spec/adapters/column_types/string_spec.rb +46 -0
- data/spec/{active_record_models → adapters}/model_spec.rb +1 -21
- data/spec/{active_record_dummy → dummy}/.gitignore +0 -0
- data/spec/{active_record_dummy → dummy}/Gemfile +1 -1
- data/spec/{active_record_dummy → dummy}/README.rdoc +0 -0
- data/spec/{active_record_dummy → dummy}/Rakefile +0 -0
- data/spec/{active_record_dummy → dummy}/app/assets/images/rails.png +0 -0
- data/spec/{active_record_dummy → dummy}/app/assets/javascripts/application.js +0 -0
- data/spec/{active_record_dummy → dummy}/app/assets/stylesheets/application.css +0 -0
- data/spec/{active_record_dummy → dummy}/app/controllers/application_controller.rb +0 -0
- data/spec/{active_record_dummy → dummy}/app/helpers/application_helper.rb +0 -0
- data/spec/{active_record_dummy → dummy}/app/mailers/.gitkeep +0 -0
- data/spec/{active_record_dummy → dummy}/app/models/.gitkeep +0 -0
- data/spec/{active_record_dummy → dummy}/app/models/user.rb +0 -0
- data/spec/{active_record_dummy → dummy}/app/views/layouts/application.html.erb +0 -0
- data/spec/{active_record_dummy → dummy}/config.ru +0 -0
- data/spec/{active_record_dummy → dummy}/config/application.rb +0 -0
- data/spec/{active_record_dummy → dummy}/config/boot.rb +0 -0
- data/spec/{active_record_dummy → dummy}/config/database.yml +3 -8
- data/spec/{active_record_dummy → dummy}/config/environment.rb +0 -0
- data/spec/{active_record_dummy → dummy}/config/environments/development.rb +0 -0
- data/spec/{active_record_dummy → dummy}/config/environments/mysql2.rb +0 -0
- data/spec/{active_record_dummy → dummy}/config/environments/postgresql.rb +0 -0
- data/spec/{active_record_dummy → dummy}/config/environments/production.rb +0 -0
- data/spec/{active_record_dummy → dummy}/config/environments/sqlite3.rb +0 -0
- data/spec/{active_record_dummy → dummy}/config/environments/test.rb +0 -0
- data/spec/{active_record_dummy → dummy}/config/initializers/backtrace_silencers.rb +0 -0
- data/spec/{active_record_dummy → dummy}/config/initializers/inflections.rb +0 -0
- data/spec/{active_record_dummy → dummy}/config/initializers/mime_types.rb +0 -0
- data/spec/{active_record_dummy → dummy}/config/initializers/secret_token.rb +0 -0
- data/spec/{active_record_dummy → dummy}/config/initializers/session_store.rb +0 -0
- data/spec/{active_record_dummy → dummy}/config/initializers/wrap_parameters.rb +0 -0
- data/spec/{active_record_dummy → dummy}/config/locales/en.yml +0 -0
- data/spec/{active_record_dummy → dummy}/config/routes.rb +0 -0
- data/spec/{active_record_dummy → dummy}/db/migrate/20130412154541_create_users.rb +0 -0
- data/spec/{active_record_dummy → dummy}/db/schema.rb +0 -0
- data/spec/{active_record_dummy → dummy}/db/seeds.rb +0 -0
- data/spec/{active_record_dummy → dummy}/lib/assets/.gitkeep +0 -0
- data/spec/{active_record_dummy → dummy}/lib/tasks/.gitkeep +0 -0
- data/spec/{active_record_dummy → dummy}/log/.gitkeep +0 -0
- data/spec/{active_record_dummy → dummy}/public/404.html +0 -0
- data/spec/{active_record_dummy → dummy}/public/422.html +0 -0
- data/spec/{active_record_dummy → dummy}/public/500.html +0 -0
- data/spec/{active_record_dummy → dummy}/public/favicon.ico +0 -0
- data/spec/{active_record_dummy → dummy}/public/index.html +0 -0
- data/spec/{active_record_dummy → dummy}/public/robots.txt +0 -0
- data/spec/{active_record_dummy → dummy}/script/rails +0 -0
- data/spec/{active_record_dummy → dummy}/vendor/assets/javascripts/.gitkeep +0 -0
- data/spec/{active_record_dummy → dummy}/vendor/assets/stylesheets/.gitkeep +0 -0
- data/spec/{active_record_dummy → dummy}/vendor/plugins/.gitkeep +0 -0
- data/spec/lib/mass_insert/base_spec.rb +40 -0
- data/spec/lib/mass_insert/builder/adapters/adapter_spec.rb +129 -0
- data/spec/lib/mass_insert/builder/adapters/helpers/abstract_query_spec.rb +130 -0
- data/spec/{mass_insert/adapters/adapter_helpers → lib/mass_insert/builder/adapters/helpers}/column_value_spec.rb +42 -94
- data/spec/lib/mass_insert/builder/adapters/mysql_adapter_spec.rb +15 -0
- data/spec/lib/mass_insert/builder/adapters/postgresql_adapter_spec.rb +9 -0
- data/spec/lib/mass_insert/builder/adapters/sqlite3_adapter_spec.rb +52 -0
- data/spec/lib/mass_insert/builder/adapters/sqlserver_adapter_spec.rb +38 -0
- data/spec/lib/mass_insert/builder/adapters_spec.rb +31 -0
- data/spec/lib/mass_insert/builder/base_spec.rb +28 -0
- data/spec/lib/mass_insert/builder/utilities_spec.rb +11 -0
- data/spec/lib/mass_insert/executer_spec.rb +33 -0
- data/spec/lib/mass_insert/process_spec.rb +44 -0
- data/spec/lib/mass_insert/result_spec.rb +45 -0
- data/spec/lib/mass_insert_spec.rb +35 -0
- data/spec/spec_helper.rb +7 -2
- data/spec/support/mass_insert_support.rb +12 -0
- metadata +160 -163
- data/lib/mass_insert/adapters.rb +0 -10
- data/lib/mass_insert/adapters/adapter.rb +0 -26
- data/lib/mass_insert/adapters/adapter_helpers.rb +0 -11
- data/lib/mass_insert/adapters/adapter_helpers/abstract_query.rb +0 -56
- data/lib/mass_insert/adapters/adapter_helpers/column_value.rb +0 -110
- data/lib/mass_insert/adapters/adapter_helpers/sanitizer.rb +0 -21
- data/lib/mass_insert/adapters/adapter_helpers/timestamp.rb +0 -33
- data/lib/mass_insert/adapters/mysql2_adapter.rb +0 -13
- data/lib/mass_insert/adapters/postgresql_adapter.rb +0 -5
- data/lib/mass_insert/adapters/sqlite3_adapter.rb +0 -37
- data/lib/mass_insert/adapters/sqlserver_adapter.rb +0 -29
- data/lib/mass_insert/process_control.rb +0 -46
- data/lib/mass_insert/query_builder.rb +0 -39
- data/lib/mass_insert/query_execution.rb +0 -29
- data/spec/active_record_models/column_types/binary_spec.rb +0 -60
- data/spec/active_record_models/column_types/boolean_spec.rb +0 -52
- data/spec/active_record_models/column_types/decimal_spec.rb +0 -49
- data/spec/active_record_models/column_types/integer_spec.rb +0 -49
- data/spec/active_record_models/column_types/string_spec.rb +0 -50
- data/spec/dummy_models/test.rb +0 -5
- data/spec/mass_insert/adapters/adapter_helpers/abstract_query_spec.rb +0 -119
- data/spec/mass_insert/adapters/adapter_helpers/sanitizer_spec.rb +0 -46
- data/spec/mass_insert/adapters/adapter_helpers/timestamp_spec.rb +0 -75
- data/spec/mass_insert/adapters/adapter_helpers_spec.rb +0 -24
- data/spec/mass_insert/adapters/adapter_spec.rb +0 -79
- data/spec/mass_insert/adapters/mysql_adapter_spec.rb +0 -22
- data/spec/mass_insert/adapters/postgresql_adapter_spec.rb +0 -11
- data/spec/mass_insert/adapters/sqlite3_adapter_spec.rb +0 -84
- data/spec/mass_insert/adapters/sqlserver_adapter_spec.rb +0 -61
- data/spec/mass_insert/adapters_spec.rb +0 -32
- data/spec/mass_insert/base_spec.rb +0 -114
- data/spec/mass_insert/process_control_spec.rb +0 -125
- data/spec/mass_insert/query_builder_spec.rb +0 -84
- data/spec/mass_insert/query_execution_spec.rb +0 -50
- data/spec/mass_insert_spec.rb +0 -28
|
@@ -1,125 +0,0 @@
|
|
|
1
|
-
require './spec/spec_helper'
|
|
2
|
-
require "./lib/mass_insert"
|
|
3
|
-
|
|
4
|
-
describe MassInsert::ProcessControl do
|
|
5
|
-
let!(:subject){ MassInsert::ProcessControl.new([], {}) }
|
|
6
|
-
|
|
7
|
-
describe "instance methods" do
|
|
8
|
-
describe "#initialize" do
|
|
9
|
-
let(:process){ MassInsert::ProcessControl.new("values", "options") }
|
|
10
|
-
|
|
11
|
-
it "should initialize the values" do
|
|
12
|
-
expect(process.values).to eq("values")
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it "should initialize the options" do
|
|
16
|
-
expect(process.options).to eq("options")
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
describe "#start" do
|
|
21
|
-
before :each do
|
|
22
|
-
subject.stub(:build_query)
|
|
23
|
-
subject.stub(:execute_query)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
it "should respond to start method" do
|
|
27
|
-
expect(subject).to respond_to(:start)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
it "should call build_query" do
|
|
31
|
-
subject.should_receive(:build_query).exactly(1).times
|
|
32
|
-
subject.start
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
it "should define instance variable @build_time" do
|
|
36
|
-
subject.start
|
|
37
|
-
expect(subject.instance_variables).to include(:@build_time)
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
it "should call execute_query" do
|
|
41
|
-
subject.should_receive(:execute_query).exactly(1).times
|
|
42
|
-
subject.start
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
it "should define instance variable @execute_time" do
|
|
46
|
-
subject.start
|
|
47
|
-
expect(subject.instance_variables).to include(:@execute_time)
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
describe "#execute_query" do
|
|
52
|
-
before :each do
|
|
53
|
-
@execution = MassInsert::QueryExecution.any_instance
|
|
54
|
-
@execution.stub(:execute)
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
it "should respond to execute_query method" do
|
|
58
|
-
expect(subject).to respond_to(:execute_query)
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
context "when query instance variable returns not nil" do
|
|
62
|
-
it "should instance and call QueryExecution class" do
|
|
63
|
-
subject.instance_variable_set(:@query, "query")
|
|
64
|
-
@execution.should_receive(:execute).exactly(1).times
|
|
65
|
-
subject.execute_query
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
context "when query instance variable returns nil" do
|
|
70
|
-
it "should instance and call QueryExecution class" do
|
|
71
|
-
subject.instance_variable_set(:@query, nil)
|
|
72
|
-
@execution.should_not_receive(:execute)
|
|
73
|
-
subject.execute_query
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
end
|
|
77
|
-
|
|
78
|
-
describe "#build_query" do
|
|
79
|
-
it "should respond to build_query method" do
|
|
80
|
-
expect(subject).to respond_to(:build_query)
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
it "should instance and call QueryBuilder class" do
|
|
84
|
-
MassInsert::QueryBuilder.any_instance.stub(:build => "query")
|
|
85
|
-
expect(subject.build_query).to eq("query")
|
|
86
|
-
end
|
|
87
|
-
|
|
88
|
-
it "should set query instance variable" do
|
|
89
|
-
MassInsert::QueryBuilder.any_instance.stub(:build)
|
|
90
|
-
subject.build_query
|
|
91
|
-
expect(subject.instance_variables).to include(:@query)
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
describe "#results" do
|
|
97
|
-
before :each do
|
|
98
|
-
a = Benchmark.measure{}
|
|
99
|
-
a.stub(:total).and_return(10.0)
|
|
100
|
-
subject.instance_variable_set(:@build_time, a)
|
|
101
|
-
subject.instance_variable_set(:@execute_time, a)
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
it "should respond to results method" do
|
|
105
|
-
expect(subject).to respond_to(:results)
|
|
106
|
-
end
|
|
107
|
-
|
|
108
|
-
it "should return total time in results" do
|
|
109
|
-
expect(subject.results.time).to eql(20.0)
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
it "should return records persisted in results" do
|
|
113
|
-
subject.stub(:values => [{}, {}])
|
|
114
|
-
expect(subject.results.records).to eql(2)
|
|
115
|
-
end
|
|
116
|
-
|
|
117
|
-
it "should return build time in results" do
|
|
118
|
-
expect(subject.results.build_time).to eql(10.0)
|
|
119
|
-
end
|
|
120
|
-
|
|
121
|
-
it "should return execute time in results" do
|
|
122
|
-
expect(subject.results.execute_time).to eql(10.0)
|
|
123
|
-
end
|
|
124
|
-
end
|
|
125
|
-
end
|
|
@@ -1,84 +0,0 @@
|
|
|
1
|
-
require './spec/spec_helper'
|
|
2
|
-
require "./lib/mass_insert"
|
|
3
|
-
|
|
4
|
-
describe MassInsert::QueryBuilder do
|
|
5
|
-
let!(:subject){ MassInsert::QueryBuilder.new([], {}) }
|
|
6
|
-
|
|
7
|
-
describe "instance methods" do
|
|
8
|
-
describe "#initialize" do
|
|
9
|
-
let(:builder){ MassInsert::QueryBuilder.new("values", "options") }
|
|
10
|
-
|
|
11
|
-
it "should initialize the values attribute" do
|
|
12
|
-
expect(builder.values).to eq("values")
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
it "should initialize the options attribute" do
|
|
16
|
-
expect(builder.options).to eq("options")
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
|
|
20
|
-
describe "#build" do
|
|
21
|
-
it "should respond to build method" do
|
|
22
|
-
expect(subject).to respond_to(:build)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it "should return the query string" do
|
|
26
|
-
subject.stub(:adapter_class).and_return("adapter_class")
|
|
27
|
-
subject.adapter_class.stub(:new).and_return("adapter_instance")
|
|
28
|
-
subject.adapter_class.new.stub(:execute).and_return("query")
|
|
29
|
-
expect(subject.build).to eq("query")
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
describe "#adapter" do
|
|
34
|
-
it "should respond to adapter method" do
|
|
35
|
-
expect(subject).to respond_to(:adapter)
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
it "should return the adapter type" do
|
|
39
|
-
config = {"config" => {:adapter => "sql"}}
|
|
40
|
-
connection = ActiveRecord::Base.connection
|
|
41
|
-
connection.stub(:instance_values).and_return(config)
|
|
42
|
-
expect(subject.adapter).to eq("sql")
|
|
43
|
-
end
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
describe "#adapter_class" do
|
|
47
|
-
it "should respond to adapter_class method" do
|
|
48
|
-
expect(subject).to respond_to(:adapter_class)
|
|
49
|
-
end
|
|
50
|
-
|
|
51
|
-
context "when adapter is mysql2" do
|
|
52
|
-
it "should return a Mysql2Adapter instance" do
|
|
53
|
-
subject.stub(:adapter).and_return("mysql2")
|
|
54
|
-
instance_class = MassInsert::Adapters::Mysql2Adapter
|
|
55
|
-
expect(subject.adapter_class).to eq(instance_class)
|
|
56
|
-
end
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
context "when adapter is postgresql" do
|
|
60
|
-
it "should return a PostgreSQLAdapter instance" do
|
|
61
|
-
subject.stub(:adapter).and_return("postgresql")
|
|
62
|
-
instance_class = MassInsert::Adapters::PostgreSQLAdapter
|
|
63
|
-
expect(subject.adapter_class).to eq(instance_class)
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
context "when adapter is sqlite3" do
|
|
68
|
-
it "should return a SQLite3Adapter instance" do
|
|
69
|
-
subject.stub(:adapter).and_return("sqlite3")
|
|
70
|
-
instance_class = MassInsert::Adapters::SQLite3Adapter
|
|
71
|
-
expect(subject.adapter_class).to eq(instance_class)
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
context "when adapter is sqlserver" do
|
|
76
|
-
it "should return a SQLServerAdapter instance" do
|
|
77
|
-
subject.stub(:adapter).and_return("sqlserver")
|
|
78
|
-
instance_class = MassInsert::Adapters::SQLServerAdapter
|
|
79
|
-
expect(subject.adapter_class).to eq(instance_class)
|
|
80
|
-
end
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
end
|
|
84
|
-
end
|
|
@@ -1,50 +0,0 @@
|
|
|
1
|
-
require './spec/spec_helper'
|
|
2
|
-
require "./lib/mass_insert"
|
|
3
|
-
|
|
4
|
-
describe MassInsert::QueryExecution do
|
|
5
|
-
let!(:subject){ MassInsert::QueryExecution.new("query string") }
|
|
6
|
-
|
|
7
|
-
describe "instance methods" do
|
|
8
|
-
describe "#initialize" do
|
|
9
|
-
context "when params passed is a string" do
|
|
10
|
-
it "query_container should be an array with the param" do
|
|
11
|
-
execution = MassInsert::QueryExecution.new("option")
|
|
12
|
-
expect(execution.query_container).to eq(["option"])
|
|
13
|
-
end
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
context "when params passed is an array" do
|
|
17
|
-
it "query_container should be the array passed by param" do
|
|
18
|
-
execution = MassInsert::QueryExecution.new(["one", "two"])
|
|
19
|
-
expect(execution.query_container).to eq(["one", "two"])
|
|
20
|
-
end
|
|
21
|
-
end
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
describe "#execute" do
|
|
25
|
-
before :each do
|
|
26
|
-
@connection = ActiveRecord::Base.connection
|
|
27
|
-
@connection.stub(:execute)
|
|
28
|
-
end
|
|
29
|
-
|
|
30
|
-
it "should respond to execute method" do
|
|
31
|
-
expect(subject).to respond_to(:execute)
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
context "when query container has one query" do
|
|
35
|
-
it "should call ActiveRecord execute one time" do
|
|
36
|
-
@connection.should_receive(:execute).exactly(1).times
|
|
37
|
-
subject.execute
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
context "when query container is an array with two queries" do
|
|
42
|
-
it "should call ActiveRecord execute one time" do
|
|
43
|
-
subject.query_container = ["one", "two"]
|
|
44
|
-
@connection.should_receive(:execute).exactly(2).times
|
|
45
|
-
subject.execute
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
data/spec/mass_insert_spec.rb
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
require './spec/spec_helper'
|
|
2
|
-
require "./lib/mass_insert"
|
|
3
|
-
|
|
4
|
-
describe MassInsert do
|
|
5
|
-
it 'should be defined' do
|
|
6
|
-
expect(MassInsert).to be
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
it 'should define Adapters module' do
|
|
10
|
-
expect(MassInsert::Adapters).to be
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
it 'should define Base' do
|
|
14
|
-
expect(MassInsert::Base).to be
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
it 'should define ProcessControl' do
|
|
18
|
-
expect(MassInsert::ProcessControl).to be
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
it 'should define QueryBuilder' do
|
|
22
|
-
expect(MassInsert::QueryBuilder).to be
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
it 'should define QueryExecution' do
|
|
26
|
-
expect(MassInsert::QueryExecution).to be
|
|
27
|
-
end
|
|
28
|
-
end
|