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.
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
@@ -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
@@ -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