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,29 +0,0 @@
1
- module MassInsert
2
- # This class is responsible to execute the query string into the
3
- # database. Uses the ActiveRecord::Base.connection.execute functionality
4
- # to execute the query string directly.
5
- class QueryExecution
6
-
7
- attr_accessor :query_container
8
-
9
- # The query string is usually passed by params when the ProcessControl
10
- # class instances this class. The query can be a string or an array,
11
- # therefore to be sure that the query_container attribute is an array
12
- # the param passed to this class is converted to array. The query
13
- # container attribute will be iterated in execute method to execute
14
- # each query that it contains.
15
- def initialize query_container
16
- @query_container = Array(query_container)
17
- end
18
-
19
- # Saves queries contained in query_container attribute into database.
20
- # Use the helper that ActiveRecord provides. The query_container
21
- # attribute is iterated to save each query that it contains.
22
- def execute
23
- @query_container.each do |query|
24
- ActiveRecord::Base.connection.execute(query)
25
- end
26
- end
27
-
28
- end
29
- end
@@ -1,60 +0,0 @@
1
- require './spec/spec_helper'
2
- require "./lib/mass_insert"
3
-
4
- describe "Binary" do
5
-
6
- before :each do
7
- @values, @options = [{:checked => 1}], {}
8
- end
9
-
10
- context "when exist in values hashes" do
11
- context "when contains binary value" do
12
- context "when is 1" do
13
- it "should be saved correctly" do
14
- User.mass_insert(@values, @options)
15
- expect(User.last.checked).to eq("1")
16
- end
17
- end
18
-
19
- context "when is 0" do
20
- it "should be saved correctly" do
21
- @values.first.merge!(:checked => 0)
22
- User.mass_insert(@values, @options)
23
- expect(User.last.checked).to eq("0")
24
- end
25
- end
26
- end
27
-
28
- context "when contains a string" do
29
- it "should convert string value to binary" do
30
- @values.first.merge!(:checked => "string")
31
- User.mass_insert(@values, @options)
32
- expect(User.last.checked).to eq("string")
33
- end
34
- end
35
-
36
- context "when contains a decimal" do
37
- it "should convert decimal value to binary" do
38
- @values.first.merge!(:checked => 25.34)
39
- User.mass_insert(@values, @options)
40
- expect(User.last.checked).to eq("25.34")
41
- end
42
- end
43
-
44
- context "when contains a boolean" do
45
- it "should convert boolean value to binary" do
46
- @values.first.merge!(:checked => true)
47
- User.mass_insert(@values, @options)
48
- expect(User.last.checked).to eq("true")
49
- end
50
- end
51
- end
52
-
53
- context "when not exist in values hashes" do
54
- it "should save the default value" do
55
- @values.first.delete(:checked)
56
- User.mass_insert(@values, @options)
57
- expect(User.last.checked).to eq(nil)
58
- end
59
- end
60
- end
@@ -1,52 +0,0 @@
1
- require './spec/spec_helper'
2
- require "./lib/mass_insert"
3
-
4
- describe "Boolean" do
5
-
6
- before :each do
7
- @values, @options = [{:active => true}], {}
8
- end
9
-
10
- context "when exist in values hashes" do
11
- context "when contains boolean value" do
12
- context "when is true" do
13
- it "should be saved correctly" do
14
- User.mass_insert(@values, @options)
15
- expect(User.last.active).to eq(true)
16
- end
17
- end
18
-
19
- context "when is false" do
20
- it "should be saved correctly" do
21
- @values.first.merge!(:active => false)
22
- User.mass_insert(@values, @options)
23
- expect(User.last.active).to eq(false)
24
- end
25
- end
26
- end
27
-
28
- context "when contains a string" do
29
- it "should convert string value to boolean" do
30
- @values.first.merge!(:active => "string")
31
- User.mass_insert(@values, @options)
32
- expect(User.last.active).to eq(true)
33
- end
34
- end
35
-
36
- context "when contains a decimal" do
37
- it "should convert decimal value to boolean" do
38
- @values.first.merge!(:active => 25.34)
39
- User.mass_insert(@values, @options)
40
- expect(User.last.active).to eq(true)
41
- end
42
- end
43
- end
44
-
45
- context "when not exist in values hashes" do
46
- it "should save the default value" do
47
- @values.first.delete(:active)
48
- User.mass_insert(@values, @options)
49
- expect(User.last.active).to eq(nil)
50
- end
51
- end
52
- end
@@ -1,49 +0,0 @@
1
- require './spec/spec_helper'
2
- require "./lib/mass_insert"
3
-
4
- describe "Decimal" do
5
-
6
- before :each do
7
- @values, @options = [{:money => 20.50}], {}
8
- end
9
-
10
- context "when exist in values hashes" do
11
- context "when contains an integer" do
12
- it "should convert integer value to decimal" do
13
- @values.first.merge!(:money => 10)
14
- User.mass_insert(@values, @options)
15
- expect(User.last.money).to eq(10.0)
16
- end
17
- end
18
-
19
- context "when contains a string" do
20
- it "should convert string value to decimal" do
21
- @values.first.merge!(:money => "string")
22
- User.mass_insert(@values, @options)
23
- expect(User.last.money).to eq(0.0)
24
- end
25
- end
26
-
27
- context "when contains a decimal" do
28
- it "should save the correct value" do
29
- User.mass_insert(@values, @options)
30
- expect(User.last.money).to eq(20.50)
31
- end
32
- end
33
-
34
- context "when contains a boolean" do
35
- it "should raise an exception" do
36
- @values.first.merge!(:money => true)
37
- expect(lambda{ User.mass_insert(@values, @options) }).to raise_exception
38
- end
39
- end
40
- end
41
-
42
- context "when not exist in values hashes" do
43
- it "should save the default value" do
44
- @values.first.delete(:money)
45
- User.mass_insert(@values, @options)
46
- expect(User.last.money).to eq(nil)
47
- end
48
- end
49
- end
@@ -1,49 +0,0 @@
1
- require './spec/spec_helper'
2
- require "./lib/mass_insert"
3
-
4
- describe "Integer" do
5
-
6
- before :each do
7
- @values, @options = [{:age => 20}], {}
8
- end
9
-
10
- context "when exist in values hashes" do
11
- context "when contains an integer" do
12
- it "should be saved correctly" do
13
- User.mass_insert(@values, @options)
14
- expect(User.last.age).to eq(20)
15
- end
16
- end
17
-
18
- context "when contains a string" do
19
- it "should convert string value to integer" do
20
- @values.first.merge!(:age => "string")
21
- User.mass_insert(@values, @options)
22
- expect(User.last.age).to eq(0)
23
- end
24
- end
25
-
26
- context "when contains a decimal" do
27
- it "should convert decimal value to integer" do
28
- @values.first.merge!(:age => 25.69)
29
- User.mass_insert(@values, @options)
30
- expect(User.last.age).to eq(25)
31
- end
32
- end
33
-
34
- context "when contains a boolean" do
35
- it "should raise an exception" do
36
- @values.first.merge!(:age => true)
37
- expect(lambda{ User.mass_insert(@values, @options) }).to raise_exception
38
- end
39
- end
40
- end
41
-
42
- context "when not exist in values hashes" do
43
- it "should save the default value" do
44
- @values.first.delete(:age)
45
- User.mass_insert(@values, @options)
46
- expect(User.last.age).to eq(nil)
47
- end
48
- end
49
- end
@@ -1,50 +0,0 @@
1
- require './spec/spec_helper'
2
- require "./lib/mass_insert"
3
-
4
- describe "String" do
5
-
6
- before :each do
7
- @values, @options = [{:name => "some name"}], {}
8
- end
9
-
10
- context "when exist in values hashes" do
11
- context "when contains a string" do
12
- it "should be saved correctly" do
13
- User.mass_insert(@values, @options)
14
- expect(User.last.name).to eq("some name")
15
- end
16
- end
17
-
18
- context "when contains a integer" do
19
- it "should convert integer value to string" do
20
- @values.first.merge!(:name => 10)
21
- User.mass_insert(@values, @options)
22
- expect(User.last.name).to eq("10")
23
- end
24
- end
25
-
26
- context "when contains a decimal" do
27
- it "should convert decimal value to string" do
28
- @values.first.merge!(:name => 25.69)
29
- User.mass_insert(@values, @options)
30
- expect(User.last.name).to eq("25.69")
31
- end
32
- end
33
-
34
- context "when contains a boolean" do
35
- it "should convert boolean value to string" do
36
- @values.first.merge!(:name => true)
37
- User.mass_insert(@values, @options)
38
- expect(User.last.name).to eq("true")
39
- end
40
- end
41
- end
42
-
43
- context "when not exist in values hashes" do
44
- it "should save the default value" do
45
- @values.first.delete(:name)
46
- User.mass_insert(@values, @options)
47
- expect(User.last.name).to eq(nil)
48
- end
49
- end
50
- end
@@ -1,5 +0,0 @@
1
- class Test < ActiveRecord::Base
2
- def self.column_names
3
- ["id", "name", "email"]
4
- end
5
- end
@@ -1,119 +0,0 @@
1
- require './spec/spec_helper'
2
- require "./lib/mass_insert"
3
-
4
- describe MassInsert::Adapters::AdapterHelpers::AbstractQuery do
5
- let!(:options){ {:class_name => "SomeClassName"} }
6
- let!(:subject){ MassInsert::Adapters::Adapter.new([], options) }
7
-
8
- describe "#begin_string" do
9
- it "should respond to begin_string method" do
10
- expect(subject).to respond_to(:begin_string)
11
- end
12
-
13
- it "should returns the correct string" do
14
- subject.stub(:table_name).and_return("users")
15
- expect(subject.begin_string).to eq("INSERT INTO users ")
16
- end
17
- end
18
-
19
- describe "#string_columns" do
20
- it "should respond to string_columns method" do
21
- expect(subject).to respond_to(:string_columns)
22
- end
23
-
24
- it "should returns correct string to columns" do
25
- subject.stub(:columns).and_return([:name, :email])
26
- expect(subject.string_columns).to eq("(name, email) ")
27
- end
28
- end
29
-
30
- describe "#string_values" do
31
- it "should respond to string_values method" do
32
- expect(subject).to respond_to(:string_values)
33
- end
34
-
35
- it "should returns correct string to values" do
36
- subject.stub(:string_rows_values).and_return("rows_values")
37
- expect(subject.string_values).to eq("VALUES (rows_values);")
38
- end
39
- end
40
-
41
- describe "#string_rows_values" do
42
- it "should respond to string_rows_values method" do
43
- expect(subject).to respond_to(:string_rows_values)
44
- end
45
-
46
- context "when only have one value hash" do
47
- it "should returns the correct string" do
48
- subject.stub(:string_single_row_values).and_return("row")
49
- subject.values = [{}]
50
- expect(subject.string_rows_values).to eq("row")
51
- end
52
- end
53
-
54
- context "when have two or more value hashes" do
55
- it "should returns the correct string" do
56
- subject.stub(:string_single_row_values).and_return("row")
57
- subject.values = [{}, {}]
58
- expect(subject.string_rows_values).to eq("row), (row")
59
- end
60
- end
61
- end
62
-
63
- describe "#string_single_row_values" do
64
- before :each do
65
- subject.stub(:string_single_value).and_return("value")
66
- end
67
-
68
- it "should respond to string_single_row_values method" do
69
- expect(subject).to respond_to(:string_single_row_values)
70
- end
71
-
72
- it "should returns the correct string" do
73
- subject.stub(:columns).and_return([:name, :email])
74
- expect(subject.string_single_row_values({})).to eq("value, value")
75
- end
76
-
77
- context "when respond to timestamp attributes" do
78
- it "should call timestamp_values method" do
79
- subject.stub(:columns).and_return([:created_at, :updated_at])
80
- subject.stub(:timestamp_hash).and_return(:test => "test")
81
- subject.should_receive(:timestamp_hash).exactly(1).times
82
- subject.string_single_row_values({})
83
- end
84
- end
85
-
86
- context "when not respond to timestamp attributes" do
87
- it "should returns the correct string" do
88
- subject.stub(:columns).and_return([:name, :email])
89
- subject.should_receive(:timestamp_hash).exactly(0).times
90
- subject.string_single_row_values({})
91
- end
92
- end
93
- end
94
-
95
- describe "#string_single_value" do
96
- it "should respond to string_single_value method" do
97
- expect(subject).to respond_to(:string_single_value)
98
- end
99
-
100
- it "should call build method in ColumnValue class" do
101
- column_value = MassInsert::Adapters::AdapterHelpers::ColumnValue.any_instance
102
- column_value.stub(:build).and_return("value")
103
- expect(subject.string_single_value({}, :name)).to eq("value")
104
- end
105
- end
106
-
107
- describe "#execute" do
108
- it "should respond to execute method" do
109
- expect(subject).to respond_to(:execute)
110
- end
111
-
112
- it "call methods and returns their values concatenated" do
113
- subject.stub(:begin_string).and_return("a")
114
- subject.stub(:string_columns).and_return("b")
115
- subject.stub(:string_values).and_return("c")
116
- expect(subject.execute).to eq("abc")
117
- end
118
- end
119
- end
@@ -1,46 +0,0 @@
1
- require './spec/spec_helper'
2
- require "./lib/mass_insert"
3
-
4
- describe MassInsert::Adapters::AdapterHelpers::Sanitizer do
5
- let!(:subject){ MassInsert::Adapters::Adapter.new([], {}) }
6
-
7
- describe "#sanitized_columns" do
8
- before :each do
9
- options = {
10
- :primary_key => :id,
11
- :primary_key_mode => :auto,
12
- }
13
- subject.options.merge!(options)
14
- subject.stub(:table_columns).and_return([:id, :name])
15
- end
16
-
17
- it "should respond to sanitized_columns" do
18
- expect(subject).to respond_to(:sanitized_columns)
19
- end
20
-
21
- context "when primary_key_mode is automatic" do
22
- it "should returns the column without primary_key" do
23
- expect(subject.sanitized_columns).to eq([:name])
24
- end
25
- end
26
-
27
- context "when primary_key_mode is not automatic" do
28
- it "should returns the columns including primary_key" do
29
- subject.options.merge!(:primary_key_mode => :manual)
30
- expect(subject.sanitized_columns).to eq([:id, :name])
31
- end
32
- end
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
46
- end