postgres_upsert 5.0.0 → 5.1.0

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.
@@ -1,16 +1,11 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  describe "pg_upsert from file with CSV format" do
4
- before(:each) do
5
- ActiveRecord::Base.connection.execute %{
6
- TRUNCATE TABLE test_models;
7
- TRUNCATE TABLE three_columns;
8
- SELECT setval('test_models_id_seq', 1, false);
9
- }
10
- end
11
4
 
12
5
  before do
13
- DateTime.stub_chain(:now, :utc).and_return (DateTime.parse("2012-01-01").utc)
6
+ DateTime.stub_chain(:now, :utc).and_return (DateTime.parse("2012-01-01").utc.round(4))
7
+ @time_now = Time.now.round(4)
8
+ allow(Time).to receive(:now).and_return(@time_now)
14
9
  end
15
10
 
16
11
  def timestamp
@@ -37,6 +32,12 @@ describe "pg_upsert from file with CSV format" do
37
32
  }.to raise_error
38
33
  end
39
34
 
35
+ it "throws error if source data contains duplicate pk" do
36
+ expect{
37
+ PostgresUpsert.write TestModel, File.expand_path('spec/fixtures/comma_with_header_duplicate.csv')
38
+ }.to raise_error(/duplicate key/)
39
+ end
40
+
40
41
  it "should import from IO without field_map" do
41
42
  PostgresUpsert.write TestModel, File.open(File.expand_path('spec/fixtures/comma_with_header.csv'), 'r')
42
43
  expect(
@@ -142,7 +143,7 @@ describe "pg_upsert from file with CSV format" do
142
143
 
143
144
  it "should clean up the temp table after completion" do
144
145
  PostgresUpsert.write TestModel, File.expand_path('spec/fixtures/tab_with_two_lines.csv'), :delimiter => "\t"
145
-
146
+
146
147
  ActiveRecord::Base.connection.tables.should_not include("test_models_temp")
147
148
  end
148
149
 
@@ -202,7 +203,7 @@ describe "pg_upsert from file with CSV format" do
202
203
 
203
204
  expect{
204
205
  PostgresUpsert.write(ThreeColumn, file, :header => true)
205
- }.to raise_error (/Expected a unique column 'id'/)
206
+ }.to raise_error (/Expected column 'id'/)
206
207
  end
207
208
 
208
209
  end
@@ -0,0 +1 @@
1
+ require File.expand_path(__dir__ + '/spec_helper')
data/spec/spec_helper.rb CHANGED
@@ -2,15 +2,18 @@ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
2
  require File.expand_path("../../config/environment", __FILE__)
3
3
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
4
4
  require 'fixtures/test_model'
5
+ require 'fixtures/test_model_copy'
5
6
  require 'fixtures/three_column'
6
7
  require 'fixtures/reserved_word_model'
7
8
  require 'fixtures/composite_key_model'
8
- require 'rspec'
9
9
  require 'rspec/rails'
10
10
  require 'rspec/autorun'
11
+ require 'database_cleaner/active_record'
11
12
 
12
13
  RSpec.configure do |config|
13
- #config.use_transactional_fixtures = false
14
+ config.before(:example) do
15
+ DatabaseCleaner.clean_with(:truncation)
16
+ end
14
17
  config.expose_current_running_example_as :example
15
18
  config.infer_spec_type_from_file_location!
16
19
  end
metadata CHANGED
@@ -1,11 +1,11 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: postgres_upsert
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.0
4
+ version: 5.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Steve Mitchell
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
  date: 2014-09-12 00:00:00.000000000 Z
@@ -14,100 +14,128 @@ dependencies:
14
14
  name: pg
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ! '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: 0.17.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ! '>='
24
+ - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.17.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activerecord
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ! '>='
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
33
  version: 3.0.0
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ! '>='
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: 3.0.0
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: rails
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ! '>='
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: 3.0.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ! '>='
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: 3.0.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ! '>='
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ! '>='
66
+ - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: pry-rails
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ! '>='
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: '0'
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ! '>='
80
+ - - ">="
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: rspec
84
+ name: pry-nav
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - ~>
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: '2.12'
89
+ version: '0'
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - ~>
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: '2.12'
96
+ version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rspec-rails
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ~>
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '3.9'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '3.9'
111
+ - !ruby/object:Gem::Dependency
112
+ name: database_cleaner-active_record
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rubocop
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
102
130
  - !ruby/object:Gem::Version
103
- version: '2.0'
131
+ version: '0'
104
132
  type: :development
105
133
  prerelease: false
106
134
  version_requirements: !ruby/object:Gem::Requirement
107
135
  requirements:
108
- - - ~>
136
+ - - ">="
109
137
  - !ruby/object:Gem::Version
110
- version: '2.0'
138
+ version: '0'
111
139
  description: Uses Postgres's powerful COPY command to upsert large sets of data into
112
140
  ActiveRecord tables
113
141
  email: thestevemitchell@gmail.com
@@ -115,14 +143,17 @@ executables: []
115
143
  extensions: []
116
144
  extra_rdoc_files: []
117
145
  files:
118
- - .gitignore
119
- - .travis.yml
146
+ - ".gitignore"
147
+ - ".rubocop.yml"
148
+ - ".ruby-gemset"
149
+ - ".ruby-version"
150
+ - ".travis.yml"
120
151
  - Gemfile
121
152
  - Gemfile.lock
122
153
  - LICENSE
123
154
  - README.md
124
155
  - Rakefile
125
- - VERSION
156
+ - app/assets/config/manifest.js
126
157
  - bin/bundle
127
158
  - bin/rails
128
159
  - bin/rake
@@ -131,6 +162,7 @@ files:
131
162
  - config/application.rb
132
163
  - config/boot.rb
133
164
  - config/database.yml
165
+ - config/database.yml.travis
134
166
  - config/environment.rb
135
167
  - config/environments/development.rb
136
168
  - config/environments/production.rb
@@ -143,14 +175,21 @@ files:
143
175
  - db/schema.rb
144
176
  - db/seeds.rb
145
177
  - lib/postgres_upsert.rb
178
+ - lib/postgres_upsert/model_to_model_adapter.rb
179
+ - lib/postgres_upsert/read_adapters/active_record_adapter.rb
180
+ - lib/postgres_upsert/read_adapters/file_adapter.rb
181
+ - lib/postgres_upsert/read_adapters/io_adapter.rb
146
182
  - lib/postgres_upsert/result.rb
147
183
  - lib/postgres_upsert/table_writer.rb
184
+ - lib/postgres_upsert/write_adapters/active_record_adapter.rb
185
+ - lib/postgres_upsert/write_adapters/table_adapter.rb
148
186
  - lib/postgres_upsert/writer.rb
149
187
  - postgres_upsert.gemspec
150
188
  - spec/composite_key_spec.rb
151
189
  - spec/fixtures/comma_with_header.csv
152
190
  - spec/fixtures/comma_with_header_and_comma_values.csv
153
191
  - spec/fixtures/comma_with_header_and_unquoted_comma.csv
192
+ - spec/fixtures/comma_with_header_duplicate.csv
154
193
  - spec/fixtures/comma_without_header.csv
155
194
  - spec/fixtures/composite_key_model.rb
156
195
  - spec/fixtures/composite_key_with_header.csv
@@ -167,30 +206,33 @@ files:
167
206
  - spec/fixtures/tab_with_header.csv
168
207
  - spec/fixtures/tab_with_two_lines.csv
169
208
  - spec/fixtures/test_model.rb
209
+ - spec/fixtures/test_model_copy.rb
170
210
  - spec/fixtures/three_column.rb
211
+ - spec/from_table_spec.rb
171
212
  - spec/pg_upsert_csv_spec.rb
213
+ - spec/rails_helper.rb
172
214
  - spec/spec_helper.rb
173
215
  homepage: https://github.com/theSteveMitchell/postgres_upsert
174
- licenses: []
216
+ licenses:
217
+ - MIT
175
218
  metadata: {}
176
- post_install_message:
219
+ post_install_message:
177
220
  rdoc_options: []
178
221
  require_paths:
179
222
  - lib
180
223
  required_ruby_version: !ruby/object:Gem::Requirement
181
224
  requirements:
182
- - - ! '>='
225
+ - - ">="
183
226
  - !ruby/object:Gem::Version
184
227
  version: 1.8.7
185
228
  required_rubygems_version: !ruby/object:Gem::Requirement
186
229
  requirements:
187
- - - ! '>='
230
+ - - ">="
188
231
  - !ruby/object:Gem::Version
189
232
  version: '0'
190
233
  requirements: []
191
- rubyforge_project:
192
- rubygems_version: 2.4.5
193
- signing_key:
234
+ rubygems_version: 3.2.3
235
+ signing_key:
194
236
  specification_version: 4
195
237
  summary: A rubygem that integrates with ActiveRecord to insert/update large data sets
196
238
  into the database efficiently
@@ -199,6 +241,7 @@ test_files:
199
241
  - spec/fixtures/comma_with_header.csv
200
242
  - spec/fixtures/comma_with_header_and_comma_values.csv
201
243
  - spec/fixtures/comma_with_header_and_unquoted_comma.csv
244
+ - spec/fixtures/comma_with_header_duplicate.csv
202
245
  - spec/fixtures/comma_without_header.csv
203
246
  - spec/fixtures/composite_key_model.rb
204
247
  - spec/fixtures/composite_key_with_header.csv
@@ -215,6 +258,9 @@ test_files:
215
258
  - spec/fixtures/tab_with_header.csv
216
259
  - spec/fixtures/tab_with_two_lines.csv
217
260
  - spec/fixtures/test_model.rb
261
+ - spec/fixtures/test_model_copy.rb
218
262
  - spec/fixtures/three_column.rb
263
+ - spec/from_table_spec.rb
219
264
  - spec/pg_upsert_csv_spec.rb
265
+ - spec/rails_helper.rb
220
266
  - spec/spec_helper.rb
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 0.1.0