mongify 1.2.4 → 1.3.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.
@@ -63,7 +63,8 @@ module Mongify
63
63
  max_updated_at, max_updated_at_id = Time.new(1970), nil
64
64
  rows.each do |row|
65
65
  row_hash = t.translate(row)
66
- updated_at = Time.parse(row['updated_at'])
66
+ updated_at = row['updated_at']
67
+ updated_at = Time.parse(updated_at) if updated_at.instance_of?(String)
67
68
  if updated_at > max_updated_at
68
69
  max_updated_at = updated_at
69
70
  max_updated_at_id = row_hash['pre_mongified_id']
@@ -71,6 +72,7 @@ module Mongify
71
72
  no_sql_connection.upsert(t.name, row_hash.merge({DRAFT_KEY => true}))
72
73
  Mongify::Status.publish('copy_data')
73
74
  end
75
+ raise "Table #{t.sql_name} must have a primary key denoted by :key in the translation file" if t.key_column.nil?
74
76
  (self.max_updated_at ||= {})[t.sql_name] = {'max_updated_at_id' => max_updated_at_id, 'key_column' => t.key_column.name}
75
77
  Mongify::Status.publish('copy_data', :action => 'finish')
76
78
  end
@@ -1,4 +1,4 @@
1
1
  module Mongify
2
2
  # Mongify's Current Version Number
3
- VERSION = "1.2.4"
3
+ VERSION = "1.3.0"
4
4
  end
data/mongify.gemspec CHANGED
@@ -12,24 +12,25 @@ Gem::Specification.new do |s|
12
12
  s.description = %q{Mongify allows you to map your sql data into a mongodb document database with a simple DSL.}
13
13
  s.required_ruby_version = ">= 1.8.7"
14
14
 
15
- s.add_dependency('activerecord', "~> 3.2")
16
- s.add_dependency('activesupport', "~> 3.2")
17
- s.add_dependency('mongo', "~> 1.10.2")
18
- s.add_dependency('bson', "~> 1.10.2")
19
- s.add_dependency('bson_ext', "~> 1.10.2") unless RUBY_PLATFORM == 'java'
15
+ s.add_dependency('activerecord', ">= 4.2")
16
+ s.add_dependency('activesupport', ">= 4.2")
17
+ s.add_dependency('mongo', ">= 1.10.2")
18
+ s.add_dependency('bson', ">= 1.10.2")
19
+ s.add_dependency('bson_ext', ">= 1.10.2") unless RUBY_PLATFORM == 'java'
20
20
  s.add_dependency('highline', '>= 1.6.1')
21
21
 
22
22
 
23
23
  s.add_development_dependency('rspec', '~> 2.0')
24
+ s.add_development_dependency('rspec-collection_matchers', '~> 1.0')
24
25
  s.add_development_dependency('cucumber', '>= 0.10')
25
26
  s.add_development_dependency('mocha', '>= 0.9.8')
26
- s.add_development_dependency('yard', '>= 0.5.3')
27
+ s.add_development_dependency('yard', '>= 0.8')
27
28
  s.add_development_dependency('sqlite3', '>= 1.3')
28
29
  s.add_development_dependency('pg', '>= 0.17')
29
- s.add_development_dependency('mysql2', '~> 0.3.1')
30
+ s.add_development_dependency('mysql2', '>= 0.4')
30
31
  s.add_development_dependency('watchr', '>= 0.6')
31
32
  s.add_development_dependency('rake')
32
- s.add_development_dependency('pry-plus')
33
+ s.add_development_dependency('jazz_fingers')
33
34
 
34
35
  s.files = `git ls-files`.split("\n")
35
36
  s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
@@ -3,7 +3,7 @@ describe Mongify::CLI::Command::Help do
3
3
  before :each do
4
4
  @text = 'Piece of interesting text'
5
5
  @cmd = Mongify::CLI::Command::Help.new(@text)
6
- @view = mock('view').as_null_object
6
+ @view = double('view').as_null_object
7
7
  end
8
8
 
9
9
  it 'displays the correct text on the view' do
@@ -4,7 +4,7 @@ describe Mongify::CLI::Command::Version do
4
4
  before :each do
5
5
  @text = 'Piece of interesting text'
6
6
  @cmd = Mongify::CLI::Command::Version.new(@text)
7
- @view = mock('view').as_null_object
7
+ @view = double('view').as_null_object
8
8
  end
9
9
 
10
10
  it 'displays the text on the view' do
@@ -14,8 +14,8 @@ describe Mongify::CLI::Command::Worker do
14
14
 
15
15
  @translation_file = 'spec/files/translation.rb'
16
16
 
17
- Mongify::Translation.stub(:load).and_return(stub(:print => 'worked'))
18
- @view = mock('view').as_null_object
17
+ Mongify::Translation.stub(:load).and_return(double(:print => 'worked'))
18
+ @view = double('view').as_null_object
19
19
  end
20
20
 
21
21
  context "list_commands" do
@@ -62,7 +62,7 @@ describe Mongify::CLI::Command::Worker do
62
62
  context "translation command" do
63
63
  before(:each) do
64
64
  @command = Mongify::CLI::Command::Worker.new('translation', @config)
65
- Mongify::Translation.stub(:load).with(@sql_connection).and_return(stub(:print => 'worked'))
65
+ Mongify::Translation.stub(:load).with(@sql_connection).and_return(double(:print => 'worked'))
66
66
  end
67
67
 
68
68
  it "should require configuration file" do
@@ -75,7 +75,7 @@ describe Mongify::CLI::Command::Worker do
75
75
  end
76
76
 
77
77
  it "should call load on Translation" do
78
- Mongify::Translation.should_receive(:load).with(@sql_connection).and_return(stub(:print => 'worked'))
78
+ Mongify::Translation.should_receive(:load).with(@sql_connection).and_return(double(:print => 'worked'))
79
79
  @command.execute(@view)
80
80
  end
81
81
  end
@@ -83,7 +83,7 @@ describe Mongify::CLI::Command::Worker do
83
83
  context "process command" do
84
84
  before(:each) do
85
85
  @command = Mongify::CLI::Command::Worker.new('process', @config, 'spec/files/translation.rb')
86
- Mongify::Translation.stub(:parse).and_return(mock(:process => true))
86
+ Mongify::Translation.stub(:parse).and_return(double(:process => true))
87
87
  end
88
88
  it "should report success" do
89
89
  @view.should_receive(:report_error).never
@@ -105,7 +105,7 @@ describe Mongify::CLI::Command::Worker do
105
105
  end
106
106
 
107
107
  it "should call process on translation" do
108
- Mongify::Translation.should_receive(:parse).and_return(mock(:process => true))
108
+ Mongify::Translation.should_receive(:parse).and_return(double(:process => true))
109
109
  @command.execute(@view)
110
110
  end
111
111
  end
@@ -113,7 +113,7 @@ describe Mongify::CLI::Command::Worker do
113
113
  context "sync command" do
114
114
  before(:each) do
115
115
  @command = Mongify::CLI::Command::Worker.new('sync', @config, 'spec/files/translation.rb')
116
- Mongify::Translation.stub(:parse).and_return(mock(:sync => true))
116
+ Mongify::Translation.stub(:parse).and_return(double(:sync => true))
117
117
  end
118
118
  it "should report success" do
119
119
  @view.should_receive(:report_error).never
@@ -135,7 +135,7 @@ describe Mongify::CLI::Command::Worker do
135
135
  end
136
136
 
137
137
  it "should call sync on translation" do
138
- Mongify::Translation.should_receive(:parse).and_return(mock(:sync => true))
138
+ Mongify::Translation.should_receive(:parse).and_return(double(:sync => true))
139
139
  @command.execute(@view)
140
140
  end
141
141
  end
@@ -39,7 +39,7 @@ describe Mongify::Database::BaseConnection do
39
39
  end
40
40
 
41
41
  it "should respond to available settings" do
42
- @base_connection.respond_to?(:host).should be_true
42
+ @base_connection.respond_to?(:host).should be_truthy
43
43
  end
44
44
 
45
45
  it "should force adapter to a string" do
@@ -41,7 +41,7 @@ describe Mongify::Database::Column do
41
41
 
42
42
  context "id column" do
43
43
  before(:each) do
44
- @col = mock(:sql_name => 'id')
44
+ @col = double(:sql_name => 'id')
45
45
  end
46
46
  it "should detect column with type :integer as a :key column" do
47
47
  @col.stub(:type).and_return(:integer)
@@ -64,7 +64,7 @@ describe Mongify::Database::Column do
64
64
  end
65
65
  context "references" do
66
66
  before(:each) do
67
- @col = mock(:sql_name => 'post_id', :type => :integer, :referenced? => false)
67
+ @col = double(:sql_name => 'post_id', :type => :integer, :referenced? => false)
68
68
  end
69
69
  it "should detect column references" do
70
70
  @col.should_receive('references=').with('posts')
@@ -242,7 +242,7 @@ describe Mongify::Database::Column do
242
242
  @column = Mongify::Database::Column.new('created_at', :datetime)
243
243
  end
244
244
  it "should return a datetime format" do
245
- @column.send(:type_cast, '2011-01-14 21:23:39').should == Time.local(2011, 01, 14, 21, 23,39)
245
+ @column.send(:type_cast, '2011-01-14 21:23:39').should == Time.utc(2011, 01, 14, 21, 23,39)
246
246
  end
247
247
  it "should return nil if input is nil" do
248
248
  @column.send(:type_cast, nil).should == nil
@@ -326,7 +326,7 @@ describe Mongify::Database::Column do
326
326
  @column = Mongify::Database::Column.new('created_at', :timestamp)
327
327
  end
328
328
  it "should return a datetime format" do
329
- @column.send(:type_cast, '2011-01-14 21:23:39').should == Time.local(2011, 01, 14, 21, 23,39)
329
+ @column.send(:type_cast, '2011-01-14 21:23:39').should == Time.utc(2011, 01, 14, 21, 23,39)
330
330
  end
331
331
  it "should return nil if input is nil" do
332
332
  @column.send(:type_cast, nil).should == nil
@@ -337,7 +337,7 @@ describe Mongify::Database::Column do
337
337
  @column = Mongify::Database::Column.new('created_at', :time)
338
338
  end
339
339
  it "should return a time format" do
340
- @column.send(:type_cast, '21:23:39').should == Time.local(2000, 01, 01, 21, 23,39)
340
+ @column.send(:type_cast, '21:23:39').should == Time.utc(2000, 01, 01, 21, 23,39)
341
341
  end
342
342
  it "should return nil if input is nil" do
343
343
  @column.send(:type_cast, nil).should == nil
@@ -348,7 +348,7 @@ describe Mongify::Database::Column do
348
348
  @column = Mongify::Database::Column.new('created_at', :date)
349
349
  end
350
350
  it "should return a time format" do
351
- @column.send(:type_cast, '2011-01-14').should == Time.local(2011, 01, 14)
351
+ @column.send(:type_cast, '2011-01-14').should == Time.utc(2011, 01, 14)
352
352
  end
353
353
  it "should return nil if input is nil" do
354
354
  @column.send(:type_cast, nil).should == nil
@@ -65,10 +65,10 @@ describe Mongify::Database::DataRow do
65
65
 
66
66
  context "respond_to" do
67
67
  it "should be true for first_name" do
68
- @datarow.respond_to?('first_name').should be_true
68
+ @datarow.respond_to?('first_name').should be_truthy
69
69
  end
70
70
  it "should be true for first_name=" do
71
- @datarow.respond_to?('first_name=').should be_true
71
+ @datarow.respond_to?('first_name=').should be_truthy
72
72
  end
73
73
  end
74
74
 
@@ -78,7 +78,7 @@ describe Mongify::Database::DataRow do
78
78
  end
79
79
  it "should read attributes like delete" do
80
80
  @datarow.delete=true
81
- @datarow.read_attribute('delete').should be_true
81
+ @datarow.read_attribute('delete').should be_truthy
82
82
  end
83
83
  it "should read non existing attributes" do
84
84
  @datarow.read_attributes('monkey').should be_nil
@@ -48,7 +48,7 @@ describe Mongify::Database::NoSqlConnection do
48
48
 
49
49
  context "connection" do
50
50
  before(:each) do
51
- @mock_connection = mock(:connected? => true)
51
+ @mock_connection = double(:connected? => true)
52
52
  Mongo::Connection.stub(:new).and_return(@mock_connection)
53
53
  end
54
54
 
@@ -70,8 +70,8 @@ describe Mongify::Database::NoSqlConnection do
70
70
 
71
71
  context "database action:" do
72
72
  before(:each) do
73
- @collection = mock
74
- @db = mock
73
+ @collection = double
74
+ @db = double
75
75
  @db.stub(:[]).with('users').and_return(@collection)
76
76
  @mongodb_connection.stub(:db).and_return(@db)
77
77
  end
@@ -95,7 +95,7 @@ describe Mongify::Database::NoSqlConnection do
95
95
 
96
96
  context "select_rows" do
97
97
  it "should return all records" do
98
- @collection.should_receive(:find).with().and_return([])
98
+ @collection.should_receive(:find).with(no_args).and_return([])
99
99
  @mongodb_connection.select_rows('users')
100
100
  end
101
101
  end
@@ -120,7 +120,7 @@ describe Mongify::Database::NoSqlConnection do
120
120
  it "should update the record if its pre_mongified_id exists" do
121
121
  attributes = {'pre_mongified_id' => 1, 'post_id' => 123}
122
122
  id = 10
123
- duplicate = mock
123
+ duplicate = double
124
124
  duplicate.stub(:[]).with(:_id).and_return(id)
125
125
  @mongodb_connection.stub(:find_one).with('users', {"pre_mongified_id" => 1}).and_return(duplicate)
126
126
  @mongodb_connection.should_receive(:find_one).with('users', {"pre_mongified_id" => 1})
@@ -174,7 +174,7 @@ describe Mongify::Database::NoSqlConnection do
174
174
 
175
175
  context "force" do
176
176
  before(:each) do
177
- @mock_connection = mock(:connected? => true, :drop_database => true)
177
+ @mock_connection = double(:connected? => true, :drop_database => true)
178
178
  Mongo::Connection.stub(:new).and_return(@mock_connection)
179
179
  @mongodb_connection = Mongify::Database::NoSqlConnection.new(:host => 'localhost', :database => 'blue', :force => true)
180
180
  Mongify::UI.stub(:ask).and_return(true)
@@ -91,7 +91,7 @@ describe Mongify::Database::SqlConnection do
91
91
 
92
92
  context "select_all" do
93
93
  it "should generate correct select statement" do
94
- @mock_conn = mock
94
+ @mock_conn = double
95
95
  @mock_conn.should_receive(:select_all).with('SELECT * FROM users')
96
96
  sqlite_connection.stub(:connection).and_return(@mock_conn)
97
97
  sqlite_connection.select_rows('users')
@@ -101,7 +101,7 @@ describe Mongify::Database::SqlConnection do
101
101
  context "select_by_query" do
102
102
  it "should select rows based on a query" do
103
103
  query = "SELECT * FROM users WHERE true"
104
- @mock_conn = mock
104
+ @mock_conn = double
105
105
  @mock_conn.should_receive(:select_all).with(query)
106
106
  sqlite_connection.stub(:connection).and_return(@mock_conn)
107
107
  sqlite_connection.select_by_query(query)
@@ -111,7 +111,7 @@ describe Mongify::Database::SqlConnection do
111
111
  context "count" do
112
112
  it "should get count of all rows in a table" do
113
113
  query = "SELECT COUNT(*) FROM users"
114
- @mock_conn = mock
114
+ @mock_conn = double
115
115
  @mock_conn.should_receive(:select_value).with(query)
116
116
  sqlite_connection.stub(:connection).and_return(@mock_conn)
117
117
  sqlite_connection.count('users')
@@ -119,7 +119,7 @@ describe Mongify::Database::SqlConnection do
119
119
 
120
120
  it "should get count of rows in a table filtered by a query" do
121
121
  query = "SELECT COUNT(*) FROM users WHERE true"
122
- @mock_conn = mock
122
+ @mock_conn = double
123
123
  @mock_conn.should_receive(:select_value).with(query)
124
124
  sqlite_connection.stub(:connection).and_return(@mock_conn)
125
125
  sqlite_connection.count('users', 'true')
@@ -129,7 +129,7 @@ describe Mongify::Database::SqlConnection do
129
129
  context "execute" do
130
130
  it "should execute an arbitrary query" do
131
131
  query = "CREATE TABLE x(int y);"
132
- @mock_conn = mock
132
+ @mock_conn = double
133
133
  @mock_conn.should_receive(:execute).with(query)
134
134
  sqlite_connection.stub(:connection).and_return(@mock_conn)
135
135
  sqlite_connection.execute(query)
@@ -94,14 +94,14 @@ describe Mongify::Database::Table do
94
94
 
95
95
  context "add_column" do
96
96
  it "should require Mongify::Database::Column" do
97
- lambda { @table.add_column("Not a column") }.should raise_error(Mongify::DatabaseColumnExpected)
97
+ expect { @table.add_column("Not a column") }.to raise_error(Mongify::DatabaseColumnExpected)
98
98
  end
99
99
  it "shold except Mongify::Database::Column as a parameter" do
100
- lambda { @table.add_column(Mongify::Database::Column.new('test')) }.should_not raise_error(Mongify::DatabaseColumnExpected)
100
+ expect { @table.add_column(Mongify::Database::Column.new('test')) }.to_not raise_error
101
101
  end
102
102
 
103
103
  it "should add to the column count" do
104
- lambda { @table.add_column(Mongify::Database::Column.new('test')) }.should change{@table.columns.count}.by(1)
104
+ expect { @table.add_column(Mongify::Database::Column.new('test')) }.to change{@table.columns.count}.by(1)
105
105
  end
106
106
 
107
107
  it "should be indexed" do
@@ -286,8 +286,8 @@ describe Mongify::Database::Table do
286
286
 
287
287
  context "translate" do
288
288
  before(:each) do
289
- @column1 = mock(:translate => {'first_name' => 'Timmy'}, :name => 'first_name')
290
- @column2 = mock(:translate => {'last_name' => 'Zuza'}, :name => 'last_name')
289
+ @column1 = double(:translate => {'first_name' => 'Timmy'}, :name => 'first_name')
290
+ @column2 = double(:translate => {'last_name' => 'Zuza'}, :name => 'last_name')
291
291
  @table.stub(:find_column).with(anything).and_return(nil)
292
292
  @table.stub(:find_column).with('first_name').and_return(@column1)
293
293
  @table.stub(:find_column).with('last_name').and_return(@column2)
@@ -7,7 +7,7 @@ describe Mongify::Status do
7
7
  end
8
8
  context "publish" do
9
9
  before(:each) do
10
- @bar = stub(:title= => '')
10
+ @bar = double(:title= => '')
11
11
  Mongify::Status.bars.stub(:[]).and_return(@bar)
12
12
  end
13
13
  it "should create a new progress bar" do
@@ -46,7 +46,7 @@ describe Mongify::Translation::Process do
46
46
  end
47
47
 
48
48
  it "should add pre_mongified_id index to database" do
49
- tables = [stub(:name => 'users')]
49
+ tables = [double(:name => 'users')]
50
50
  @translation.stub(:copy_tables).and_return(tables)
51
51
  @no_sql_connection.should_receive(:create_pre_mongified_id_index).with('users')
52
52
  @translation.process(@sql_connection, @no_sql_connection)
@@ -61,20 +61,20 @@ describe Mongify::Translation::Process do
61
61
 
62
62
  context "fetch_reference_ids" do
63
63
  it "should get correct information" do
64
- @no_sql_connection = mock()
64
+ @no_sql_connection = double()
65
65
  @translation.stub(:no_sql_connection).and_return(@no_sql_connection)
66
- @table = mock(:translate => {}, :name => 'users', :embedded? => false, :find_column => nil)
67
- @column = mock(:name => 'user_id', :references => 'users')
66
+ @table = double(:translate => {}, :name => 'users', :embedded? => false, :find_column => nil)
67
+ @column = double(:name => 'user_id', :references => 'users')
68
68
  @table.stub(:reference_columns).and_return([@column])
69
69
  @no_sql_connection.should_receive(:get_id_using_pre_mongified_id).with('users', 1).once.and_return(500)
70
70
  @translation.send(:fetch_reference_ids, @table, {'user_id' => 1}).should == {'user_id' => 500}
71
71
  end
72
72
 
73
73
  it "should get correct information for arrays" do
74
- @no_sql_connection = mock()
74
+ @no_sql_connection = double()
75
75
  @translation.stub(:no_sql_connection).and_return(@no_sql_connection)
76
- @table = mock(:translate => {}, :name => 'users', :embedded? => false)
77
- @column = mock(:name => 'user_ids', :references => 'users')
76
+ @table = double(:translate => {}, :name => 'users', :embedded? => false)
77
+ @column = double(:name => 'user_ids', :references => 'users')
78
78
  @table.stub(:reference_columns).and_return([@column])
79
79
  @no_sql_connection.should_receive(:get_id_using_pre_mongified_id).with('users', 1).once.and_return(500)
80
80
  @no_sql_connection.should_receive(:get_id_using_pre_mongified_id).with('users', 2).once.and_return(501)
@@ -87,10 +87,10 @@ describe Mongify::Translation::Process do
87
87
  @sql_connection.stub(:select_paged_rows).and_return([{'first_name'=> 'Timmy', 'last_name' => 'Zuza', 'preference_id' => 1}])
88
88
  @translation.stub(:sql_connection).and_return(@sql_connection)
89
89
 
90
- @no_sql_connection = mock()
90
+ @no_sql_connection = double()
91
91
  @translation.stub(:no_sql_connection).and_return(@no_sql_connection)
92
92
 
93
- @table = mock(:translate => {'first_name'=> 'Timmy', 'last_name' => 'Zuza', 'preference_id' => 1},
93
+ @table = double(:translate => {'first_name'=> 'Timmy', 'last_name' => 'Zuza', 'preference_id' => 1},
94
94
  :name => 'users',
95
95
  :embedded? => false,
96
96
  :sql_name => 'users')
@@ -113,8 +113,8 @@ describe Mongify::Translation::Process do
113
113
  context "copy_embed_tables" do
114
114
  before(:each) do
115
115
  @sql_connection.stub(:select_paged_rows).and_return([{'first_name'=> 'Timmy', 'last_name' => 'Zuza', 'preference_id' => 1}])
116
- @target_table = mock(:name => 'posts', :embedded? => false, :sql_name => 'posts')
117
- @embed_table = mock(:translate => {}, :name => 'comments', :embedded? => true, :embed_on => 'post_id', :embed_in => 'posts', :embedded_as_object? => false, :sql_name => 'comments', :find_column => nil)
116
+ @target_table = double(:name => 'posts', :embedded? => false, :sql_name => 'posts')
117
+ @embed_table = double(:translate => {}, :name => 'comments', :embedded? => true, :embed_on => 'post_id', :embed_in => 'posts', :embedded_as_object? => false, :sql_name => 'comments', :find_column => nil)
118
118
  @no_sql_connection.stub(:find_one).and_return({'_id' => 500})
119
119
  @translation.stub(:tables).and_return([@target_table, @embed_table])
120
120
  @translation.stub(:fetch_reference_ids).and_return({})
@@ -126,25 +126,25 @@ describe Mongify::Translation::Process do
126
126
  @translation.send(:copy_embedded_tables)
127
127
  end
128
128
  it "should remove the pre_mongified_id before embedding" do
129
- @embed_table = mock(:translate => {'first_name' => 'bob', 'pre_mongified_id' => 1}, :name => 'comments', :sql_name => 'comments', :embedded? => true, :embed_on => 'post_id', :embed_in => 'posts', :embedded_as_object? => false, :find_column => nil)
129
+ @embed_table = double(:translate => {'first_name' => 'bob', 'pre_mongified_id' => 1}, :name => 'comments', :sql_name => 'comments', :embedded? => true, :embed_on => 'post_id', :embed_in => 'posts', :embedded_as_object? => false, :find_column => nil)
130
130
  @translation.stub(:tables).and_return([@target_table, @embed_table])
131
131
  @no_sql_connection.should_receive(:update).with("posts", 500, {"$addToSet"=>{"comments"=>{'first_name' => 'bob'}}})
132
132
  @translation.send(:copy_embedded_tables)
133
133
  end
134
134
  it "should remove the parent_id from the embedding row" do
135
- @embed_table = mock(:translate => {'first_name' => 'bob', 'post_id' => 1}, :name => 'comments', :sql_name => 'comments', :embedded? => true, :embed_on => 'post_id', :embed_in => 'posts', :embedded_as_object? => false, :find_column => nil)
135
+ @embed_table = double(:translate => {'first_name' => 'bob', 'post_id' => 1}, :name => 'comments', :sql_name => 'comments', :embedded? => true, :embed_on => 'post_id', :embed_in => 'posts', :embedded_as_object? => false, :find_column => nil)
136
136
  @translation.stub(:tables).and_return([@target_table, @embed_table])
137
137
  @no_sql_connection.should_receive(:update).with("posts", 500, {"$addToSet"=>{"comments"=>{'first_name' => 'bob'}}})
138
138
  @translation.send(:copy_embedded_tables)
139
139
  end
140
140
  it "should call $addToSet on update of an embed_as_object table" do
141
- @embed_table = mock(:translate => {'first_name' => 'bob', 'post_id' => 1}, :name => 'comments', :sql_name => 'comments', :embedded? => true, :embed_on => 'post_id', :embed_in => 'posts', :embedded_as_object? => true, :find_column => nil)
141
+ @embed_table = double(:translate => {'first_name' => 'bob', 'post_id' => 1}, :name => 'comments', :sql_name => 'comments', :embedded? => true, :embed_on => 'post_id', :embed_in => 'posts', :embedded_as_object? => true, :find_column => nil)
142
142
  @translation.stub(:tables).and_return([@target_table, @embed_table])
143
143
  @no_sql_connection.should_receive(:update).with("posts", 500, {"$set"=>{"comments"=>{'first_name' => 'bob'}}})
144
144
  @translation.send(:copy_embedded_tables)
145
145
  end
146
146
  it "should allow rename of table" do
147
- @embed_table = mock(:translate => {'first_name' => 'bob', 'post_id' => 1}, :name => 'notes', :sql_name => 'comments', :embedded? => true, :embed_on => 'post_id', :embed_in => 'posts', :embedded_as_object? => true, :find_column => nil)
147
+ @embed_table = double(:translate => {'first_name' => 'bob', 'post_id' => 1}, :name => 'notes', :sql_name => 'comments', :embedded? => true, :embed_on => 'post_id', :embed_in => 'posts', :embedded_as_object? => true, :find_column => nil)
148
148
  @translation.stub(:tables).and_return([@target_table, @embed_table])
149
149
  @no_sql_connection.should_receive(:update).with("posts", 500, {"$set"=>{"notes"=>{'first_name' => 'bob'}}})
150
150
  @translation.send(:copy_embedded_tables)
@@ -152,25 +152,25 @@ describe Mongify::Translation::Process do
152
152
 
153
153
  context "parent modification" do
154
154
  it 'should unset fields deleted in the parent row' do
155
- @embed_table = mock(:translate => [{}, {'email' => 'true'}, {'field_1' => '1'}], :name => 'preferences', :sql_name => 'preferences', :embedded? => true, :embed_on => 'post_id', :embed_in => 'posts', :embedded_as_object? => true, :find_column => nil)
155
+ @embed_table = double(:translate => [{}, {'email' => 'true'}, {'field_1' => '1'}], :name => 'preferences', :sql_name => 'preferences', :embedded? => true, :embed_on => 'post_id', :embed_in => 'posts', :embedded_as_object? => true, :find_column => nil)
156
156
  @translation.stub(:tables).and_return([@target_table, @embed_table])
157
157
  @no_sql_connection.should_receive(:update).with("posts", 500, {"$set"=>{"preferences"=>{}, "email"=>"true"}, "$unset"=>{'field_1' => '1'}})
158
158
  @translation.send(:copy_embedded_tables)
159
159
  end
160
160
  it "should work with embedded objects" do
161
- @embed_table = mock(:translate => [{}, {'email' => 'true'}, {}], :name => 'preferences', :sql_name => 'preferences', :embedded? => true, :embed_on => 'post_id', :embed_in => 'posts', :embedded_as_object? => true, :find_column => nil)
161
+ @embed_table = double(:translate => [{}, {'email' => 'true'}, {}], :name => 'preferences', :sql_name => 'preferences', :embedded? => true, :embed_on => 'post_id', :embed_in => 'posts', :embedded_as_object? => true, :find_column => nil)
162
162
  @translation.stub(:tables).and_return([@target_table, @embed_table])
163
163
  @no_sql_connection.should_receive(:update).with("posts", 500, {"$set"=>{"preferences"=>{}, "email"=>"true"}})
164
164
  @translation.send(:copy_embedded_tables)
165
165
  end
166
166
  it "should work with embedded arrays" do
167
- @embed_table = mock(:translate => [{}, {'email' => 'true'}, {}], :name => 'preferences', :sql_name => 'preferences', :embedded? => true, :embed_on => 'post_id', :embed_in => 'posts', :embedded_as_object? => false, :find_column => nil)
167
+ @embed_table = double(:translate => [{}, {'email' => 'true'}, {}], :name => 'preferences', :sql_name => 'preferences', :embedded? => true, :embed_on => 'post_id', :embed_in => 'posts', :embedded_as_object? => false, :find_column => nil)
168
168
  @translation.stub(:tables).and_return([@target_table, @embed_table])
169
169
  @no_sql_connection.should_receive(:update).with("posts", 500, {"$addToSet"=>{"preferences"=>{}}, "$set" => {"email"=>"true"}})
170
170
  @translation.send(:copy_embedded_tables)
171
171
  end
172
172
  it "should not set embedded attribute in parent" do
173
- @embed_table = mock(:translate => [{'first_name' => 'joe'}, {'email' => 'true', 'comments' => [{'first_name' => 'bob'}]}, {}], :name => 'comments', :sql_name => 'comments', :embedded? => true, :embed_on => 'post_id', :embed_in => 'posts', :embedded_as_object? => false, :find_column => nil)
173
+ @embed_table = double(:translate => [{'first_name' => 'joe'}, {'email' => 'true', 'comments' => [{'first_name' => 'bob'}]}, {}], :name => 'comments', :sql_name => 'comments', :embedded? => true, :embed_on => 'post_id', :embed_in => 'posts', :embedded_as_object? => false, :find_column => nil)
174
174
  @translation.stub(:tables).and_return([@target_table, @embed_table])
175
175
  @no_sql_connection.should_receive(:update).with("posts", 500, {"$addToSet" => {"comments" => {"first_name" => "joe"}}, "$set" => {"email" => "true"}})
176
176
  @translation.send(:copy_embedded_tables)
@@ -210,14 +210,14 @@ describe Mongify::Translation::Process do
210
210
  it "should work correctly" do
211
211
  @no_sql_connection.should_receive(:select_rows).and_return([{'_id' => 100, 'user_id' => 1}, {'_id'=> 101, 'user_id' => 2}])
212
212
  @no_sql_connection.stub(:get_id_using_pre_mongified_id).twice.and_return(500)
213
- @table.should_receive(:reference_columns).twice.and_return([mock(:name => 'user_id', :references=>'users')])
213
+ @table.should_receive(:reference_columns).twice.and_return([double(:name => 'user_id', :references=>'users')])
214
214
  @no_sql_connection.should_receive(:update).twice
215
215
  @translation.send(:update_reference_ids)
216
216
  end
217
217
  it "should only update when new_id is present" do
218
218
  @no_sql_connection.should_receive(:select_rows).and_return([{'_id' => 100, 'user_id' => 1}, {'_id'=> 101, 'user_id' => 2}])
219
219
  @no_sql_connection.stub(:get_id_using_pre_mongified_id).twice.and_return(nil)
220
- @table.should_receive(:reference_columns).twice.and_return([mock(:name => 'user_id', :references=>'users')])
220
+ @table.should_receive(:reference_columns).twice.and_return([double(:name => 'user_id', :references=>'users')])
221
221
  @no_sql_connection.should_receive(:update).never
222
222
  @translation.send(:update_reference_ids)
223
223
  end
@@ -225,7 +225,7 @@ describe Mongify::Translation::Process do
225
225
 
226
226
  context "copy_polymorphic_tables" do
227
227
  before(:each) do
228
- @ref_table = mock(:name => 'user_accounts',
228
+ @ref_table = double(:name => 'user_accounts',
229
229
  :embedded? => false,
230
230
  :ignored? => false,
231
231
  :sql_name => 'user_accounts')
@@ -236,7 +236,7 @@ describe Mongify::Translation::Process do
236
236
  end
237
237
  context "embedded" do
238
238
  it "should work correctly" do
239
- @table = mock(:translate => {'data' => 123},
239
+ @table = double(:translate => {'data' => 123},
240
240
  :name => 'comments',
241
241
  :embedded? => true,
242
242
  :polymorphic_as => 'commentable',
@@ -255,7 +255,7 @@ describe Mongify::Translation::Process do
255
255
  end
256
256
  context "not embedded" do
257
257
  before(:each) do
258
- @table = mock(:translate => {'data' => 123, 'commentable_type' => 'UserAccount', 'commentable_id' => 1},
258
+ @table = double(:translate => {'data' => 123, 'commentable_type' => 'UserAccount', 'commentable_id' => 1},
259
259
  :name => 'comments',
260
260
  :embedded? => false,
261
261
  :polymorphic_as => 'commentable',