mongify 1.2.4 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -54,13 +54,13 @@ describe Mongify::Translation::Sync do
54
54
 
55
55
  context "syncing actions" do
56
56
  before(:each) do
57
- @sql_connection = mock(:select_rows => [{'first_name'=> 'Timmy', 'last_name' => 'Zuza', 'preference_id' => 1}])
57
+ @sql_connection = double(:select_rows => [{'first_name'=> 'Timmy', 'last_name' => 'Zuza', 'preference_id' => 1}])
58
58
  @translation.stub(:sql_connection).and_return(@sql_connection)
59
59
 
60
- @no_sql_connection = mock()
60
+ @no_sql_connection = double()
61
61
  @translation.stub(:no_sql_connection).and_return(@no_sql_connection)
62
62
 
63
- @table = mock(:translate => {'first_name'=> 'Timmy', 'last_name' => 'Zuza', 'preference_id' => 1},
63
+ @table = double(:translate => {'first_name'=> 'Timmy', 'last_name' => 'Zuza', 'preference_id' => 1},
64
64
  :name => 'users',
65
65
  :embedded? => false,
66
66
  :sql_name => 'users')
@@ -72,7 +72,7 @@ describe Mongify::Translation::Sync do
72
72
  it "should create a table with index in the up dir" do
73
73
  migrator = Mongify::Translation::Sync::SyncHelperMigrator.new
74
74
  helper = Mongify::Translation::Sync::SYNC_HELPER_TABLE
75
- t = mock({:string => 1, :datetime => 1})
75
+ t = double({:string => 1, :datetime => 1})
76
76
  t.should_receive(:string).with(:table_name)
77
77
  t.should_receive(:datetime).with(:last_updated_at)
78
78
  migrator.stub(:create_table).and_yield(t)
@@ -89,12 +89,12 @@ describe Mongify::Translation::Sync do
89
89
  @query = "SELECT count(*) FROM #{@helper}"
90
90
  @sql_connection.stub(:execute).with(@query).and_return(5)
91
91
  @sql_connection.should_receive(:execute).with(@query)
92
- @translation.stub(:copy_tables).and_return([mock(:sql_name => 'table1')])
92
+ @translation.stub(:copy_tables).and_return([double(:sql_name => 'table1')])
93
93
  end
94
94
 
95
95
  it "should create sync helper table if it doesn't exist" do
96
96
  @sql_connection.stub(:execute).with(@query).and_raise
97
- migrator = mock(:up)
97
+ migrator = double(:up)
98
98
  Mongify::Translation::Sync::SyncHelperMigrator.stub(:new).and_return(migrator)
99
99
  migrator.should_receive(:up)
100
100
  @translation.stub(:copy_tables).and_return([])
@@ -119,7 +119,7 @@ describe Mongify::Translation::Sync do
119
119
 
120
120
  context "set_last_updated_at" do
121
121
  it "should update last_updated_at timestamp for each table that generated sync data" do
122
- @translation.stub(:copy_tables).and_return([mock(:sql_name => 'table1')])
122
+ @translation.stub(:copy_tables).and_return([double(:sql_name => 'table1')])
123
123
  @translation.max_updated_at = {'table1' => {'max_updated_at_id' => 1, 'key_column' => 'id'}}
124
124
  helper = Mongify::Translation::Sync::SYNC_HELPER_TABLE
125
125
  query = "UPDATE #{helper} SET last_updated_at = (SELECT updated_at FROM table1 WHERE id = '1') WHERE table_name = 'table1'"
@@ -128,7 +128,7 @@ describe Mongify::Translation::Sync do
128
128
  @translation.send(:set_last_updated_at)
129
129
  end
130
130
  it "should not update last_updated_at timestamp for each table that did not generate any sync data" do
131
- @translation.stub(:copy_tables).and_return([mock(:sql_name => 'table1')])
131
+ @translation.stub(:copy_tables).and_return([double(:sql_name => 'table1')])
132
132
  @translation.max_updated_at = {}
133
133
  @translation.send(:set_last_updated_at)
134
134
  @translation.max_updated_at = {'table1' => {'key_column' => 'id'}}
@@ -139,7 +139,7 @@ describe Mongify::Translation::Sync do
139
139
  context "sync_data" do
140
140
  it "should upsert rows that match the new/updated query, mark them as drafts and compute the max updated at" do
141
141
  helper = Mongify::Translation::Sync::SYNC_HELPER_TABLE
142
- t = mock(:sql_name => 'table1', :name => 'table1')
142
+ t = double(:sql_name => 'table1', :name => 'table1')
143
143
  @translation.stub(:copy_tables).and_return([t])
144
144
  t1, t2 = Time.new(1980).to_s, Time.new(2000).to_s
145
145
  rows = [{"id" => 1, "updated_at" => t1}, {"id" => 2, "updated_at" => t2}]
@@ -155,7 +155,7 @@ describe Mongify::Translation::Sync do
155
155
  @no_sql_connection.stub(:upsert).with('table1', {'pre_mongified_id' => 2, 'updated_at' => t2, draft => true}).and_return(true)
156
156
  @no_sql_connection.should_receive(:upsert).twice
157
157
 
158
- t.stub(:key_column).and_return(mock({name: 'id'}))
158
+ t.stub(:key_column).and_return(double({name: 'id'}))
159
159
 
160
160
  @translation.send(:sync_data)
161
161
 
@@ -166,10 +166,10 @@ describe Mongify::Translation::Sync do
166
166
 
167
167
  context "sync_update_reference_ids" do
168
168
  it "should delete the draft key" do
169
- t = mock(:name => 'table1')
169
+ t = double(:name => 'table1')
170
170
  @translation.stub(:copy_tables).and_return([t])
171
171
  query = {Mongify::Translation::Sync::DRAFT_KEY => true}
172
- row = mock
172
+ row = double
173
173
  row.stub(:[]).with("_id").and_return(1)
174
174
  @no_sql_connection.stub(:select_by_query).and_return([row])
175
175
  @no_sql_connection.should_receive(:select_by_query).with('table1', query)
@@ -19,7 +19,7 @@ describe Mongify::Translation do
19
19
  @connection.stub(:has_connection?).and_return(true)
20
20
  @connection.stub(:valid?).and_return(true)
21
21
  @connection.stub(:tables).and_return(['users'])
22
- col = mock(:name => 'first_name', :type => 'string', :default => nil)
22
+ col = double(:name => 'first_name', :type => 'string', :default => nil)
23
23
  @connection.stub(:columns_for).with('users').and_return([col])
24
24
  end
25
25
  it "should return a translation" do
@@ -50,10 +50,10 @@ describe Mongify::Translation do
50
50
 
51
51
  context "find" do
52
52
  before(:each) do
53
- @user_table = mock(:name => 'users')
54
- @translation.stub(:all_tables).and_return([mock(:name => 'comments'),
53
+ @user_table = double(:name => 'users')
54
+ @translation.stub(:all_tables).and_return([double(:name => 'comments'),
55
55
  @user_table,
56
- mock(:name => 'posts')])
56
+ double(:name => 'posts')])
57
57
  end
58
58
  it "should work" do
59
59
 
@@ -66,10 +66,10 @@ describe Mongify::Translation do
66
66
 
67
67
  context "tables reference" do
68
68
  before(:each) do
69
- @copy_table = mock(:name => 'users', :ignored? => false, :embedded? => false, :polymorphic? => false)
70
- @embed_table = mock(:name => 'comments', :ignored? => false, :embedded? => true, :polymorphic? => false)
71
- @ignored_table = mock(:name => 'apples', :ignored? => true, :embedded? => false, :polymorphic? => false)
72
- @polymorphic_table = mock(:name => 'comments', :ignored? => false, :embedded? => false, :polymorphic? => true)
69
+ @copy_table = double(:name => 'users', :ignored? => false, :embedded? => false, :polymorphic? => false)
70
+ @embed_table = double(:name => 'comments', :ignored? => false, :embedded? => true, :polymorphic? => false)
71
+ @ignored_table = double(:name => 'apples', :ignored? => true, :embedded? => false, :polymorphic? => false)
72
+ @polymorphic_table = double(:name => 'comments', :ignored? => false, :embedded? => false, :polymorphic? => true)
73
73
  @translation = Mongify::Translation.new()
74
74
  @all_tables = [@copy_table, @embed_table, @ignored_table, @polymorphic_table]
75
75
  @translation.stub(:all_tables).and_return(@all_tables)
@@ -40,17 +40,17 @@ describe Mongify::UI do
40
40
 
41
41
  it "should ask for yes/no and return true when yes" do
42
42
  @ui.should_receive(:request).with('foo? [yn] ').and_return('y')
43
- @ui.ask("foo?").should be_true
43
+ @ui.ask("foo?").should be_truthy
44
44
  end
45
45
 
46
46
  it "should ask for yes/no and return false when no" do
47
47
  @ui.stub(:request).and_return('n')
48
- @ui.ask("foo?").should be_false
48
+ @ui.ask("foo?").should be_falsey
49
49
  end
50
50
 
51
51
  it "should ask for yes/no and return false for any input" do
52
52
  @ui.stub(:request).and_return('aklhasdf')
53
- @ui.ask("foo?").should be_false
53
+ @ui.ask("foo?").should be_falsey
54
54
  end
55
55
 
56
56
  it "should add WARNING to a warn message" do
data/spec/spec_helper.rb CHANGED
@@ -12,6 +12,7 @@ rescue LoadError
12
12
  end
13
13
 
14
14
  require 'rspec/core'
15
+ require 'rspec/collection_matchers'
15
16
 
16
17
  Dir['./spec/support/**/*.rb'].map {|f| require f}
17
18
 
@@ -10,6 +10,15 @@ mysql:
10
10
  host: localhost
11
11
  port: 3306
12
12
 
13
+ postgresql:
14
+ adapter: postgresql
15
+ database: mongify_test
16
+ encoding: unicode
17
+ username: root
18
+ password: passw0rd
19
+ host: localhost
20
+ port: 5432
21
+
13
22
  mongo:
14
23
  adapter: mongo
15
24
  database: mongify_test
@@ -38,7 +38,7 @@ class DatabaseGenerator
38
38
  #SETUP TABLES
39
39
  conn.create_table(:users) do |t|
40
40
  t.string :first_name, :last_name
41
- t.timestamps
41
+ t.timestamps null: false
42
42
  end
43
43
 
44
44
  conn.create_table(:posts) do |t|
@@ -46,21 +46,21 @@ class DatabaseGenerator
46
46
  t.integer :owner_id
47
47
  t.text :body
48
48
  t.datetime :published_at
49
- t.timestamps
49
+ t.timestamps null: false
50
50
  end
51
51
 
52
52
  conn.create_table(:comments) do |t|
53
53
  t.text :body
54
54
  t.integer :post_id
55
55
  t.integer :user_id
56
- t.timestamps
56
+ t.timestamps null: false
57
57
  end
58
58
 
59
59
  conn.create_table(:preferences, :id => false) do |t|
60
60
  t.string :id
61
61
  t.integer :user_id
62
62
  t.boolean :notify_by_email
63
- t.timestamps
63
+ t.timestamps null: false
64
64
  end
65
65
 
66
66
  conn.create_table(:notes) do |t|
@@ -68,19 +68,19 @@ class DatabaseGenerator
68
68
  t.integer :notable_id
69
69
  t.string :notable_type
70
70
  t.text :body
71
- t.timestamps
71
+ t.timestamps null: false
72
72
  end
73
73
 
74
74
  conn.create_table(:teams) do |t|
75
75
  t.string :name
76
76
  t.string :phone
77
- t.timestamps
77
+ t.timestamps null: false
78
78
  end
79
79
 
80
80
  conn.create_table(:coaches) do |t|
81
81
  t.integer :team_id
82
82
  t.string :first_name, :last_name
83
- t.timestamps
83
+ t.timestamps null: false
84
84
  end
85
85
 
86
86
  if include_data
metadata CHANGED
@@ -1,237 +1,251 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongify
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.4
4
+ version: 1.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrew Kalek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-29 00:00:00.000000000 Z
11
+ date: 2016-05-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ~>
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '3.2'
19
+ version: '4.2'
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
- version: '3.2'
26
+ version: '4.2'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activesupport
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ~>
31
+ - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '3.2'
33
+ version: '4.2'
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
- version: '3.2'
40
+ version: '4.2'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: mongo
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ~>
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: 1.10.2
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: 1.10.2
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bson
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ~>
59
+ - - ">="
60
60
  - !ruby/object:Gem::Version
61
61
  version: 1.10.2
62
62
  type: :runtime
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: 1.10.2
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: bson_ext
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ~>
73
+ - - ">="
74
74
  - !ruby/object:Gem::Version
75
75
  version: 1.10.2
76
76
  type: :runtime
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: 1.10.2
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: highline
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - '>='
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: 1.6.1
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - '>='
94
+ - - ">="
95
95
  - !ruby/object:Gem::Version
96
96
  version: 1.6.1
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rspec
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ~>
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
103
  version: '2.0'
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ~>
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
110
  version: '2.0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: rspec-collection_matchers
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - "~>"
116
+ - !ruby/object:Gem::Version
117
+ version: '1.0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '1.0'
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: cucumber
113
127
  requirement: !ruby/object:Gem::Requirement
114
128
  requirements:
115
- - - '>='
129
+ - - ">="
116
130
  - !ruby/object:Gem::Version
117
131
  version: '0.10'
118
132
  type: :development
119
133
  prerelease: false
120
134
  version_requirements: !ruby/object:Gem::Requirement
121
135
  requirements:
122
- - - '>='
136
+ - - ">="
123
137
  - !ruby/object:Gem::Version
124
138
  version: '0.10'
125
139
  - !ruby/object:Gem::Dependency
126
140
  name: mocha
127
141
  requirement: !ruby/object:Gem::Requirement
128
142
  requirements:
129
- - - '>='
143
+ - - ">="
130
144
  - !ruby/object:Gem::Version
131
145
  version: 0.9.8
132
146
  type: :development
133
147
  prerelease: false
134
148
  version_requirements: !ruby/object:Gem::Requirement
135
149
  requirements:
136
- - - '>='
150
+ - - ">="
137
151
  - !ruby/object:Gem::Version
138
152
  version: 0.9.8
139
153
  - !ruby/object:Gem::Dependency
140
154
  name: yard
141
155
  requirement: !ruby/object:Gem::Requirement
142
156
  requirements:
143
- - - '>='
157
+ - - ">="
144
158
  - !ruby/object:Gem::Version
145
- version: 0.5.3
159
+ version: '0.8'
146
160
  type: :development
147
161
  prerelease: false
148
162
  version_requirements: !ruby/object:Gem::Requirement
149
163
  requirements:
150
- - - '>='
164
+ - - ">="
151
165
  - !ruby/object:Gem::Version
152
- version: 0.5.3
166
+ version: '0.8'
153
167
  - !ruby/object:Gem::Dependency
154
168
  name: sqlite3
155
169
  requirement: !ruby/object:Gem::Requirement
156
170
  requirements:
157
- - - '>='
171
+ - - ">="
158
172
  - !ruby/object:Gem::Version
159
173
  version: '1.3'
160
174
  type: :development
161
175
  prerelease: false
162
176
  version_requirements: !ruby/object:Gem::Requirement
163
177
  requirements:
164
- - - '>='
178
+ - - ">="
165
179
  - !ruby/object:Gem::Version
166
180
  version: '1.3'
167
181
  - !ruby/object:Gem::Dependency
168
182
  name: pg
169
183
  requirement: !ruby/object:Gem::Requirement
170
184
  requirements:
171
- - - '>='
185
+ - - ">="
172
186
  - !ruby/object:Gem::Version
173
187
  version: '0.17'
174
188
  type: :development
175
189
  prerelease: false
176
190
  version_requirements: !ruby/object:Gem::Requirement
177
191
  requirements:
178
- - - '>='
192
+ - - ">="
179
193
  - !ruby/object:Gem::Version
180
194
  version: '0.17'
181
195
  - !ruby/object:Gem::Dependency
182
196
  name: mysql2
183
197
  requirement: !ruby/object:Gem::Requirement
184
198
  requirements:
185
- - - ~>
199
+ - - ">="
186
200
  - !ruby/object:Gem::Version
187
- version: 0.3.1
201
+ version: '0.4'
188
202
  type: :development
189
203
  prerelease: false
190
204
  version_requirements: !ruby/object:Gem::Requirement
191
205
  requirements:
192
- - - ~>
206
+ - - ">="
193
207
  - !ruby/object:Gem::Version
194
- version: 0.3.1
208
+ version: '0.4'
195
209
  - !ruby/object:Gem::Dependency
196
210
  name: watchr
197
211
  requirement: !ruby/object:Gem::Requirement
198
212
  requirements:
199
- - - '>='
213
+ - - ">="
200
214
  - !ruby/object:Gem::Version
201
215
  version: '0.6'
202
216
  type: :development
203
217
  prerelease: false
204
218
  version_requirements: !ruby/object:Gem::Requirement
205
219
  requirements:
206
- - - '>='
220
+ - - ">="
207
221
  - !ruby/object:Gem::Version
208
222
  version: '0.6'
209
223
  - !ruby/object:Gem::Dependency
210
224
  name: rake
211
225
  requirement: !ruby/object:Gem::Requirement
212
226
  requirements:
213
- - - '>='
227
+ - - ">="
214
228
  - !ruby/object:Gem::Version
215
229
  version: '0'
216
230
  type: :development
217
231
  prerelease: false
218
232
  version_requirements: !ruby/object:Gem::Requirement
219
233
  requirements:
220
- - - '>='
234
+ - - ">="
221
235
  - !ruby/object:Gem::Version
222
236
  version: '0'
223
237
  - !ruby/object:Gem::Dependency
224
- name: pry-plus
238
+ name: jazz_fingers
225
239
  requirement: !ruby/object:Gem::Requirement
226
240
  requirements:
227
- - - '>='
241
+ - - ">="
228
242
  - !ruby/object:Gem::Version
229
243
  version: '0'
230
244
  type: :development
231
245
  prerelease: false
232
246
  version_requirements: !ruby/object:Gem::Requirement
233
247
  requirements:
234
- - - '>='
248
+ - - ">="
235
249
  - !ruby/object:Gem::Version
236
250
  version: '0'
237
251
  description: Mongify allows you to map your sql data into a mongodb document database
@@ -245,9 +259,9 @@ extra_rdoc_files:
245
259
  - CHANGELOG.rdoc
246
260
  - README.rdoc
247
261
  files:
248
- - .gitignore
249
- - .rspec
250
- - .yardopts
262
+ - ".gitignore"
263
+ - ".rspec"
264
+ - ".yardopts"
251
265
  - CHANGELOG.rdoc
252
266
  - Gemfile
253
267
  - Gemfile.lock
@@ -324,27 +338,27 @@ licenses: []
324
338
  metadata: {}
325
339
  post_install_message:
326
340
  rdoc_options:
327
- - --title
341
+ - "--title"
328
342
  - Mongify -- SQL db to Mongo db converter
329
- - --main
343
+ - "--main"
330
344
  - README
331
- - --line-numbers
332
- - --inline-source
345
+ - "--line-numbers"
346
+ - "--inline-source"
333
347
  require_paths:
334
348
  - lib
335
349
  required_ruby_version: !ruby/object:Gem::Requirement
336
350
  requirements:
337
- - - '>='
351
+ - - ">="
338
352
  - !ruby/object:Gem::Version
339
353
  version: 1.8.7
340
354
  required_rubygems_version: !ruby/object:Gem::Requirement
341
355
  requirements:
342
- - - '>='
356
+ - - ">="
343
357
  - !ruby/object:Gem::Version
344
358
  version: '0'
345
359
  requirements: []
346
360
  rubyforge_project:
347
- rubygems_version: 2.2.2
361
+ rubygems_version: 2.5.1
348
362
  signing_key:
349
363
  specification_version: 4
350
364
  summary: Translate your SQL data to MongoDB with ease