mass_insert 0.0.2 → 0.0.3

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 (31) hide show
  1. data/README.md +3 -3
  2. data/lib/mass_insert/adapters.rb +0 -1
  3. data/lib/mass_insert/adapters/adapter.rb +1 -7
  4. data/lib/mass_insert/adapters/column_value.rb +33 -29
  5. data/lib/mass_insert/adapters/helpers.rb +3 -2
  6. data/lib/mass_insert/adapters/helpers/abstract_query.rb +48 -0
  7. data/lib/mass_insert/adapters/helpers/sanitizer.rb +6 -0
  8. data/lib/mass_insert/adapters/mysql2_adapter.rb +1 -1
  9. data/lib/mass_insert/base.rb +49 -20
  10. data/lib/mass_insert/query_builder.rb +6 -6
  11. data/lib/mass_insert/version.rb +1 -1
  12. data/spec/active_record_dummy/Gemfile +1 -1
  13. data/spec/active_record_dummy/config/database.yml +1 -1
  14. data/spec/mass_insert/adapters/adapter_spec.rb +23 -45
  15. data/spec/mass_insert/adapters/column_value_spec.rb +107 -154
  16. data/spec/mass_insert/adapters/{abstract_query_spec.rb → helpers/abstract_query_spec.rb} +23 -27
  17. data/spec/mass_insert/adapters/helpers/sanitizer_spec.rb +16 -9
  18. data/spec/mass_insert/adapters/helpers/timestamp_spec.rb +11 -15
  19. data/spec/mass_insert/adapters/helpers_spec.rb +7 -3
  20. data/spec/mass_insert/adapters/mysql_adapter_spec.rb +6 -10
  21. data/spec/mass_insert/adapters/postgresql_adapter_spec.rb +4 -8
  22. data/spec/mass_insert/adapters/sqlite3_adapter_spec.rb +24 -30
  23. data/spec/mass_insert/adapters/sqlserver_adapter_spec.rb +16 -21
  24. data/spec/mass_insert/adapters_spec.rb +8 -12
  25. data/spec/mass_insert/base_spec.rb +13 -13
  26. data/spec/mass_insert/process_control_spec.rb +33 -40
  27. data/spec/mass_insert/query_builder_spec.rb +20 -24
  28. data/spec/mass_insert/query_execution_spec.rb +13 -16
  29. data/spec/mass_insert_spec.rb +6 -6
  30. metadata +7 -7
  31. data/lib/mass_insert/adapters/abstract_query.rb +0 -47
@@ -2,12 +2,7 @@ require './spec/spec_helper'
2
2
  require "./lib/mass_insert"
3
3
 
4
4
  describe MassInsert::Adapters::Helpers::Sanitizer do
5
-
6
- before :each do
7
- @adapter = MassInsert::Adapters::Adapter.new([], {})
8
- end
9
-
10
- subject{ @adapter }
5
+ let!(:subject){ MassInsert::Adapters::Adapter.new([], {}) }
11
6
 
12
7
  describe "#sanitized_columns" do
13
8
  before :each do
@@ -20,20 +15,32 @@ describe MassInsert::Adapters::Helpers::Sanitizer do
20
15
  end
21
16
 
22
17
  it "should respond to sanitized_columns" do
23
- subject.respond_to?(:sanitized_columns).should be_true
18
+ expect(subject).to respond_to(:sanitized_columns)
24
19
  end
25
20
 
26
21
  context "when primary_key_mode is automatic" do
27
22
  it "should returns the column without primary_key" do
28
- subject.sanitized_columns.should eq([:name])
23
+ expect(subject.sanitized_columns).to eq([:name])
29
24
  end
30
25
  end
31
26
 
32
27
  context "when primary_key_mode is not automatic" do
33
28
  it "should returns the columns including primary_key" do
34
29
  subject.options.merge!(:primary_key_mode => :manual)
35
- subject.sanitized_columns.should eq([:id, :name])
30
+ expect(subject.sanitized_columns).to eq([:id, :name])
36
31
  end
37
32
  end
38
33
  end
34
+
35
+ describe "#table_columns" do
36
+ it "should respond to table_columns method" do
37
+ expect(subject).to respond_to(:table_columns)
38
+ end
39
+
40
+ it "should returns the table_columns in ActiveRecord class" do
41
+ subject.options = {:class_name => Test}
42
+ columns = [:id, :name, :email]
43
+ expect(subject.table_columns).to eq(columns)
44
+ end
45
+ end
39
46
  end
@@ -2,57 +2,53 @@ require './spec/spec_helper'
2
2
  require "./lib/mass_insert"
3
3
 
4
4
  describe MassInsert::Adapters::Helpers::Timestamp do
5
- before :each do
6
- @adapter = MassInsert::Adapters::Adapter.new([], {})
7
- end
8
-
9
- subject{ @adapter }
5
+ let!(:subject){ MassInsert::Adapters::Adapter.new([], {}) }
10
6
 
11
7
  describe "#timestamp?" do
12
8
  it "should respond_to timestamp? method" do
13
- subject.respond_to?(:timestamp?).should be_true
9
+ expect(subject).to respond_to(:timestamp?)
14
10
  end
15
11
 
16
12
  context "when respond to timestamp columns" do
17
13
  it "should return true" do
18
14
  subject.stub(:column_names).and_return([:updated_at, :created_at])
19
- subject.timestamp?.should be_true
15
+ expect(subject.timestamp?).to be_true
20
16
  end
21
17
  end
22
18
 
23
19
  context "when not respond to timestamp columns" do
24
20
  it "should return false" do
25
21
  subject.stub(:column_names).and_return([:created_at])
26
- subject.timestamp?.should be_false
22
+ expect(subject.timestamp?).to be_false
27
23
  end
28
24
  end
29
25
  end
30
26
 
31
27
  describe "#timestamp_format" do
32
28
  it "should respond_to timestamp_format method" do
33
- subject.respond_to?(:timestamp_format).should be_true
29
+ expect(subject).to respond_to(:timestamp_format)
34
30
  end
35
31
 
36
32
  it "should return the default timestamp format" do
37
- subject.timestamp_format.should eq("%Y-%m-%d %H:%M:%S.%6N")
33
+ expect(subject.timestamp_format).to eq("%Y-%m-%d %H:%M:%S.%6N")
38
34
  end
39
35
  end
40
36
 
41
37
  describe "#timestamp" do
42
38
  it "should respond_to timestamp method" do
43
- subject.respond_to?(:timestamp).should be_true
39
+ expect(subject).to respond_to(:timestamp)
44
40
  end
45
41
 
46
42
  it "should return the default timestamp value with correct format" do
47
43
  subject.stub(:timestamp_format).and_return("%Y-%m-%d %H:%M:%S")
48
44
  timestamp_value = Time.now.strftime("%Y-%m-%d %H:%M:%S")
49
- subject.timestamp.should eq(timestamp_value)
45
+ expect(subject.timestamp).to eq(timestamp_value)
50
46
  end
51
47
  end
52
48
 
53
49
  describe "#timestamp_values" do
54
50
  it "should respond_to timestamp_values method" do
55
- subject.respond_to?(:timestamp_values).should be_true
51
+ expect(subject).to respond_to(:timestamp_values)
56
52
  end
57
53
 
58
54
  context "when have high precision" do
@@ -61,7 +57,7 @@ describe MassInsert::Adapters::Helpers::Timestamp do
61
57
  :created_at => subject.timestamp,
62
58
  :updated_at => subject.timestamp
63
59
  }
64
- subject.timestamp_values.should_not eq(timestamp_values)
60
+ expect(subject.timestamp_values).not_to eq(timestamp_values)
65
61
  end
66
62
  end
67
63
 
@@ -72,7 +68,7 @@ describe MassInsert::Adapters::Helpers::Timestamp do
72
68
  :created_at => subject.timestamp,
73
69
  :updated_at => subject.timestamp
74
70
  }
75
- subject.timestamp_values.should eq(timestamp_values)
71
+ expect(subject.timestamp_values).to eq(timestamp_values)
76
72
  end
77
73
  end
78
74
  end
@@ -3,14 +3,18 @@ require "./lib/mass_insert"
3
3
 
4
4
  describe MassInsert::Adapters::Helpers do
5
5
  it 'should be defined' do
6
- should be
6
+ expect(MassInsert::Adapters::Helpers).to be
7
+ end
8
+
9
+ it 'should define AbstractQuery class' do
10
+ expect(MassInsert::Adapters::Helpers::AbstractQuery).to be
7
11
  end
8
12
 
9
13
  it 'should define Timestamp module' do
10
- MassInsert::Adapters::Helpers::Timestamp.should be
14
+ expect(MassInsert::Adapters::Helpers::Timestamp).to be
11
15
  end
12
16
 
13
17
  it 'should define Sanitizer module' do
14
- MassInsert::Adapters::Helpers::Sanitizer.should be
18
+ expect(MassInsert::Adapters::Helpers::Sanitizer).to be
15
19
  end
16
20
  end
@@ -2,37 +2,33 @@ require './spec/spec_helper'
2
2
  require "./lib/mass_insert"
3
3
 
4
4
  describe MassInsert::Adapters::Mysql2Adapter do
5
- before :each do
6
- @adapter = MassInsert::Adapters::Mysql2Adapter.new([], {})
7
- end
8
-
9
- subject{ @adapter }
5
+ let!(:subject){ MassInsert::Adapters::Mysql2Adapter.new([], {}) }
10
6
 
11
7
  it "should inherit from Adapter class" do
12
- subject.should be_a(MassInsert::Adapters::Adapter)
8
+ expect(subject).to be_a(MassInsert::Adapters::Adapter)
13
9
  end
14
10
 
15
11
  describe "instance methods" do
16
12
  describe "#timestamp_format" do
17
13
  it "should respond to timestamp_format method" do
18
- subject.respond_to?(:timestamp_format).should be_true
14
+ expect(subject).to respond_to(:timestamp_format)
19
15
  end
20
16
 
21
17
  it "should return the format string" do
22
- subject.timestamp_format.should eq("%Y-%m-%d %H:%M:%S")
18
+ expect(subject.timestamp_format).to eq("%Y-%m-%d %H:%M:%S")
23
19
  end
24
20
  end
25
21
 
26
22
  describe "#execute" do
27
23
  it "should respond to execute method" do
28
- subject.respond_to?(:execute).should be_true
24
+ expect(subject).to respond_to(:execute)
29
25
  end
30
26
 
31
27
  it "call methods and returns their values concatenated" do
32
28
  subject.stub(:begin_string).and_return("a")
33
29
  subject.stub(:string_columns).and_return("b")
34
30
  subject.stub(:string_values).and_return("c")
35
- subject.execute.should eq("abc")
31
+ expect(subject.execute).to eq("abc")
36
32
  end
37
33
  end
38
34
  end
@@ -2,27 +2,23 @@ require './spec/spec_helper'
2
2
  require "./lib/mass_insert"
3
3
 
4
4
  describe MassInsert::Adapters::PostgreSQLAdapter do
5
- before :each do
6
- @adapter = MassInsert::Adapters::PostgreSQLAdapter.new([], {})
7
- end
8
-
9
- subject{ @adapter }
5
+ let!(:subject){ MassInsert::Adapters::PostgreSQLAdapter.new([], {}) }
10
6
 
11
7
  it "should inherit from Adapter class" do
12
- subject.should be_a(MassInsert::Adapters::Adapter)
8
+ expect(subject).to be_a(MassInsert::Adapters::Adapter)
13
9
  end
14
10
 
15
11
  describe "instance methods" do
16
12
  describe "#execute" do
17
13
  it "should respond to execute method" do
18
- subject.respond_to?(:execute).should be_true
14
+ expect(subject).to respond_to(:execute)
19
15
  end
20
16
 
21
17
  it "call methods and returns their values concatenated" do
22
18
  subject.stub(:begin_string).and_return("a")
23
19
  subject.stub(:string_columns).and_return("b")
24
20
  subject.stub(:string_values).and_return("c")
25
- subject.execute.should eq("abc")
21
+ expect(subject.execute).to eq("abc")
26
22
  end
27
23
  end
28
24
  end
@@ -2,89 +2,83 @@ require './spec/spec_helper'
2
2
  require "./lib/mass_insert"
3
3
 
4
4
  describe MassInsert::Adapters::SQLite3Adapter do
5
- before :each do
6
- @adapter = MassInsert::Adapters::SQLite3Adapter.new([], {})
7
- end
8
-
9
- subject{ @adapter }
5
+ let!(:subject){ MassInsert::Adapters::SQLite3Adapter.new([], {}) }
10
6
 
11
7
  it "should inherit from Adapter class" do
12
- subject.should be_a(MassInsert::Adapters::Adapter)
8
+ expect(subject).to be_a(MassInsert::Adapters::Adapter)
13
9
  end
14
10
 
15
11
  describe "instance methods" do
16
12
  describe "#string_values" do
17
13
  it "should respond to string_values method" do
18
- subject.respond_to?(:string_values).should be_true
14
+ expect(subject).to respond_to(:string_values)
19
15
  end
20
16
 
21
17
  it "should returns correct string to values" do
22
- subject.stub(:string_rows_values).and_return("string_rows_values")
23
- subject.string_values.should eq("SELECT string_rows_values;")
18
+ subject.stub(:string_rows_values).and_return("rows_values")
19
+ expect(subject.string_values).to eq("SELECT rows_values;")
24
20
  end
25
21
  end
26
22
 
27
23
  describe "#string_rows_values" do
28
24
  it "should respond to string_rows_values method" do
29
- subject.respond_to?(:string_rows_values).should be_true
25
+ expect(subject).to respond_to(:string_rows_values)
30
26
  end
31
27
 
32
28
  context "when only have one value hash" do
33
29
  it "should returns the correct string" do
34
- subject.stub(:string_single_row_values).and_return("single_row")
30
+ subject.stub(:string_single_row_values).and_return("row")
35
31
  subject.values = [{}]
36
- subject.string_rows_values.should eq("single_row")
32
+ expect(subject.string_rows_values).to eq("row")
37
33
  end
38
34
  end
39
35
 
40
36
  context "when have two or more value hashes" do
41
37
  it "should returns the correct string" do
42
- subject.stub(:string_single_row_values).and_return("single_row")
38
+ subject.stub(:string_single_row_values).and_return("row")
43
39
  subject.values = [{}, {}]
44
- string = "single_row UNION SELECT single_row"
45
- subject.string_rows_values.should eq(string)
40
+ expect(subject.string_rows_values).to eq("row UNION SELECT row")
46
41
  end
47
42
  end
48
43
  end
49
44
 
50
45
  describe "#execute" do
46
+ before :each do
47
+ subject.stub(:begin_string).and_return("a")
48
+ subject.stub(:string_columns).and_return("b")
49
+ subject.stub(:string_values).and_return("c")
50
+ end
51
+
51
52
  it "should respond to execute method" do
52
- subject.respond_to?(:execute).should be_true
53
+ expect(subject).to respond_to(:execute)
53
54
  end
54
55
 
55
56
  context "when have less than 500 values" do
56
57
  it "call methods and returns their values concatenated" do
57
58
  subject.values = [{}]
58
- subject.stub(:begin_string).and_return("a")
59
- subject.stub(:string_columns).and_return("b")
60
- subject.stub(:string_values).and_return("c")
61
- subject.execute.should eq(["abc"])
59
+ expect(subject.execute).to eq(["abc"])
62
60
  end
63
61
  end
64
62
 
65
63
  context "when have more than 500 values" do
66
64
  it "call methods and returns their values concatenated" do
67
- subject.values = []
68
65
  800.times{ subject.values << {} }
69
- subject.stub(:begin_string).and_return("a")
70
- subject.stub(:string_columns).and_return("b")
71
- subject.stub(:string_values).and_return("c")
72
- subject.execute.should eq(["abc", "abc"])
66
+ expect(subject.execute).to eq(["abc", "abc"])
73
67
  end
74
68
  end
75
69
  end
76
70
  end
77
71
 
78
72
  describe "MAX_VALUES_PER_INSERTION" do
73
+ let(:class_name){ MassInsert::Adapters::SQLite3Adapter }
74
+
79
75
  it "should respond_to" do
80
- class_name = MassInsert::Adapters::SQLite3Adapter
81
- constant = "MAX_VALUES_PER_INSERTION".to_sym
82
- class_name.const_defined?(constant).should be_true
76
+ constant = :MAX_VALUES_PER_INSERTION
77
+ expect(class_name.const_defined?(constant)).to be_true
83
78
  end
84
79
 
85
80
  it "should return 1000" do
86
- class_name = MassInsert::Adapters::SQLite3Adapter
87
- class_name::MAX_VALUES_PER_INSERTION.should eq(500)
81
+ expect(class_name::MAX_VALUES_PER_INSERTION).to eq(500)
88
82
  end
89
83
  end
90
84
  end
@@ -2,55 +2,50 @@ require './spec/spec_helper'
2
2
  require "./lib/mass_insert"
3
3
 
4
4
  describe MassInsert::Adapters::SQLServerAdapter do
5
- before :each do
6
- @adapter = MassInsert::Adapters::SQLServerAdapter.new([], {})
7
- end
8
-
9
- subject{ @adapter }
5
+ let!(:subject){ MassInsert::Adapters::SQLServerAdapter.new([], {}) }
10
6
 
11
7
  it "should inherit from Adapter class" do
12
- subject.should be_a(MassInsert::Adapters::Adapter)
8
+ expect(subject).to be_a(MassInsert::Adapters::Adapter)
13
9
  end
14
10
 
15
11
  describe "instance methods" do
16
12
  describe "#execute" do
13
+ before :each do
14
+ subject.stub(:begin_string).and_return("a")
15
+ subject.stub(:string_columns).and_return("b")
16
+ subject.stub(:string_values).and_return("c")
17
+ end
18
+
17
19
  it "should respond to execute method" do
18
- subject.respond_to?(:execute).should be_true
20
+ expect(subject).to respond_to(:execute)
19
21
  end
20
22
 
21
23
  context "when have less than 1000 values" do
22
24
  it "call methods and returns their values concatenated" do
23
25
  subject.values = [{}]
24
- subject.stub(:begin_string).and_return("a")
25
- subject.stub(:string_columns).and_return("b")
26
- subject.stub(:string_values).and_return("c")
27
- subject.execute.should eq(["abc"])
26
+ expect(subject.execute).to eq(["abc"])
28
27
  end
29
28
  end
30
29
 
31
30
  context "when have more than 1000 values" do
32
31
  it "call methods and returns their values concatenated" do
33
- subject.values = []
34
32
  1500.times{ subject.values << {} }
35
- subject.stub(:begin_string).and_return("a")
36
- subject.stub(:string_columns).and_return("b")
37
- subject.stub(:string_values).and_return("c")
38
- subject.execute.should eq(["abc", "abc"])
33
+ expect(subject.execute).to eq(["abc", "abc"])
39
34
  end
40
35
  end
41
36
  end
42
37
  end
43
38
 
44
39
  describe "MAX_VALUES_PER_INSERTION" do
40
+ let(:class_name){ MassInsert::Adapters::SQLServerAdapter }
41
+
45
42
  it "should respond_to" do
46
- class_name = MassInsert::Adapters::SQLServerAdapter
47
- constant = "MAX_VALUES_PER_INSERTION".to_sym
48
- class_name.const_defined?(constant).should be_true
43
+ constant = :MAX_VALUES_PER_INSERTION
44
+ expect(class_name.const_defined?(constant)).to be_true
49
45
  end
50
46
 
51
47
  it "should return 1000" do
52
- class_name = MassInsert::Adapters::SQLServerAdapter
53
- class_name::MAX_VALUES_PER_INSERTION.should eq(1000)
48
+ expect(class_name::MAX_VALUES_PER_INSERTION).to eq(1000)
54
49
  end
55
50
  end
56
51
  end
@@ -3,38 +3,34 @@ require "./lib/mass_insert"
3
3
 
4
4
  describe MassInsert::Adapters do
5
5
  it 'should be defined' do
6
- should be
6
+ expect(MassInsert::Adapters).to be
7
7
  end
8
8
 
9
9
  it 'should define Adapter class' do
10
- MassInsert::Adapters::Adapter.should be
11
- end
12
-
13
- it 'should define AbstractQuery class' do
14
- MassInsert::Adapters::AbstractQuery.should be
10
+ expect(MassInsert::Adapters::Adapter).to be
15
11
  end
16
12
 
17
13
  it 'should define ColumnValue class' do
18
- MassInsert::Adapters::ColumnValue.should be
14
+ expect(MassInsert::Adapters::ColumnValue).to be
19
15
  end
20
16
 
21
17
  it 'should define ColumnValue class' do
22
- MassInsert::Adapters::Helpers.should be
18
+ expect(MassInsert::Adapters::Helpers).to be
23
19
  end
24
20
 
25
21
  it 'should define MysqlAdapter class' do
26
- MassInsert::Adapters::Mysql2Adapter.should be
22
+ expect(MassInsert::Adapters::Mysql2Adapter).to be
27
23
  end
28
24
 
29
25
  it 'should define PostgreSQLAdapter class' do
30
- MassInsert::Adapters::PostgreSQLAdapter.should be
26
+ expect(MassInsert::Adapters::PostgreSQLAdapter).to be
31
27
  end
32
28
 
33
29
  it 'should define SQLite3Adapter class' do
34
- MassInsert::Adapters::SQLite3Adapter.should be
30
+ expect(MassInsert::Adapters::SQLite3Adapter).to be
35
31
  end
36
32
 
37
33
  it 'should define SQLServerAdapter class' do
38
- MassInsert::Adapters::SQLServerAdapter.should be
34
+ expect(MassInsert::Adapters::SQLServerAdapter).to be
39
35
  end
40
36
  end