postgres_upsert 5.0.0 → 5.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -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