mongify 0.3.1 → 0.9

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.
@@ -11,82 +11,75 @@ module Mongify
11
11
  @parser = OptionParser.new
12
12
  #@command_class = ReekCommand
13
13
  set_options
14
-
14
+ parse_options
15
15
  end
16
-
16
+
17
17
  # Banner for help output
18
18
  def banner
19
19
  progname = @parser.program_name
20
20
  return <<EOB
21
- Usage: #{progname} command [database_translation.rb] [-c database.config]
21
+ Usage: #{progname} command database.config [database_translation.rb]
22
22
 
23
23
  Commands:
24
- #{Mongify::CLI::WorkerCommand.list_commands.join("\n")}
24
+ #{Mongify::CLI::Command::Worker.list_commands.join("\n")}
25
25
 
26
26
  Examples:
27
27
 
28
- #{progname} check -c database.config
29
- #{progname} translation -c datbase.config > database_translation.rb
30
- #{progname} process database_translation.rb -c database.config
28
+ #{progname} check database.config
29
+ #{progname} translation datbase.config > database_translation.rb
30
+ #{progname} process database.config database_translation.rb
31
31
 
32
32
  See http://github.com/anlek/mongify for more details
33
33
 
34
34
  EOB
35
35
  end
36
-
36
+
37
37
  # Sets the options for CLI
38
38
  # Also used for help output
39
39
  def set_options
40
40
  @parser.banner = banner
41
41
  @parser.separator "Common options:"
42
42
  @parser.on("-h", "--help", "Show this message") do
43
- @command_class = HelpCommand
43
+ @command_class = Command::Help
44
44
  end
45
45
  @parser.on("-v", "--version", "Show version") do
46
- @command_class = VersionCommand
47
- end
48
- @parser.on('-c', '--config FILE', "Configuration File to use") do |file|
49
- @config_file = file
46
+ @command_class = Command::Version
50
47
  end
51
48
  end
52
-
49
+
53
50
  # Parses CLI passed attributes and figures out what command user is trying to run
54
51
  def parse
55
- parse_options
56
-
57
- if @command_class == HelpCommand
58
- HelpCommand.new(@parser)
59
- elsif @command_class == VersionCommand
60
- VersionCommand.new(@parser.program_name)
52
+ if @command_class == Command::Help
53
+ Command::Help.new(@parser)
54
+ elsif @command_class == Command::Version
55
+ Command::Version.new(@parser.program_name)
61
56
  else
62
- raise ConfigurationFileNotFound, "You need to provide a configuration file location #{@config_file}" unless @config_file
63
- #TODO: In the future, request sql_connection and nosql_connection from user input
64
- config = Configuration.parse(@config_file)
65
-
66
- WorkerCommand.new(action, config, translation_file, @parser)
57
+ Command::Worker.new(action, config_file, translation_file, @parser)
67
58
  end
68
59
  end
69
-
60
+
70
61
  #######
71
62
  private
72
63
  #######
73
-
64
+
74
65
  # Returns the translation_file or nil
75
66
  def translation_file(argv=@argv)
76
- parse_options
77
- return nil if argv.length < 2
78
- argv[1]
67
+ argv[2] if argv.length >= 3 and File.exist?(argv[2]) and !File.directory?(argv[2])
79
68
  end
80
-
69
+
81
70
  # Returns action (command) user is calling or ''
82
71
  def action(argv=@argv)
83
- parse_options
84
72
  @argv.try(:[],0) || ''
85
73
  end
86
-
87
- # option parser, ensuring parse_options is only called once
74
+
75
+ # Returns the config file
76
+ def config_file(argv=@argv)
77
+ @config_file ||= Configuration.parse(argv[1]) if argv.length >= 2 and File.exist?(argv[1]) and !File.directory?(argv[1])
78
+ end
79
+
80
+ # option parser, ensuring parse_options is only called once
88
81
  def parse_options
89
- @parsed = true && @parser.parse!(@argv) unless @parsed
82
+ @parser.parse!(@argv)
90
83
  rescue OptionParser::InvalidOption => er
91
84
  raise Mongify::InvalidOption, er.message, er.backtrace
92
85
  end
@@ -95,7 +95,7 @@ module Mongify
95
95
 
96
96
  # Inserts into the collection a given row
97
97
  def insert_into(colleciton_name, row)
98
- db[colleciton_name].insert(row, :safe => true)
98
+ db[colleciton_name].insert(row)
99
99
  end
100
100
 
101
101
  # Updates a collection item with a given ID with the given attributes
@@ -30,7 +30,6 @@ module Mongify
30
30
  REQUIRED_FIELDS = %w{host adapter database}
31
31
 
32
32
  def initialize(options=nil)
33
- @prefixed_db = false
34
33
  super(options)
35
34
  end
36
35
 
@@ -19,10 +19,10 @@ module Mongify
19
19
  #Progress bar version
20
20
  VERSION = "0.9.1"
21
21
 
22
- def initialize (title, total, out = STDERR)
22
+ def initialize (title, total)
23
23
  @title = title
24
24
  @total = total
25
- @out = out
25
+ @out = Mongify::Configuration.out_stream
26
26
  @terminal_width = 80
27
27
  @bar_mark = "o"
28
28
  @current = 0
@@ -156,6 +156,7 @@ module Mongify
156
156
 
157
157
  # Draws the bar
158
158
  def show
159
+ return unless @out
159
160
  arguments = @format_arguments.map {|method|
160
161
  method = sprintf("fmt_%s", method)
161
162
  send(method)
@@ -196,6 +197,7 @@ module Mongify
196
197
  public
197
198
  # Clear's line
198
199
  def clear
200
+ return unless @out
199
201
  @out.print "\r"
200
202
  @out.print(" " * (get_width - 1))
201
203
  @out.print "\r"
@@ -1,4 +1,4 @@
1
1
  module Mongify
2
2
  # Mongify's Current Version Number
3
- VERSION = "0.3.1"
3
+ VERSION = "0.9"
4
4
  end
@@ -14,19 +14,19 @@ Gem::Specification.new do |s|
14
14
 
15
15
  s.add_dependency('activerecord', ">=3.0.3")
16
16
  s.add_dependency('activesupport', ">=3.0.3")
17
- s.add_dependency('mysql2')
18
- s.add_dependency('mongo', ">= 1.1.5")
19
- s.add_dependency('bson_ext', ">= 1.1.5")
17
+ s.add_dependency('mongo', "~> 1.8.2")
18
+ s.add_dependency('bson_ext', "~> 1.8.2") unless RUBY_PLATFORM == 'java'
20
19
  s.add_dependency('highline', '>= 1.6.1')
21
20
 
21
+
22
22
  s.add_development_dependency('rspec', '>= 2.0')
23
23
  s.add_development_dependency('rcov', '>= 0.9.9')
24
24
  s.add_development_dependency('cucumber', '>= 0.10')
25
25
  s.add_development_dependency('mocha', '>= 0.9.8')
26
26
  s.add_development_dependency('yard', '>= 0.5.3')
27
- s.add_development_dependency('watchr', '>= 0.6')
28
27
  s.add_development_dependency('sqlite3-ruby', '>= 1.3')
29
- s.add_development_dependency('mysql', '>= 2.8.1')
28
+ s.add_development_dependency('mysql2', '~> 0.2.7')
29
+ s.add_development_dependency('watchr', '>= 0.6')
30
30
  s.add_development_dependency('rake')
31
31
 
32
32
  s.files = `git ls-files`.split("\n")
@@ -1,17 +1,16 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Mongify::CLI::Application do
4
- before(:each) do
5
- @application = Mongify::CLI::Application.new()
6
- end
7
-
8
4
  context "execute!" do
9
5
  it "should return a 0" do
6
+ @application = Mongify::CLI::Application.new()
7
+ Mongify::Configuration.out_stream = nil
10
8
  @application.execute!.should == 0
11
9
  end
12
10
 
13
11
  it "should return a 1 on error" do
14
12
  @application = Mongify::CLI::Application.new(["door"])
13
+ Mongify::Configuration.out_stream = nil
15
14
  @application.execute!.should == 1
16
15
  end
17
16
  end
@@ -1,8 +1,8 @@
1
1
  require 'spec_helper'
2
- describe Mongify::CLI::HelpCommand do
2
+ describe Mongify::CLI::Command::Help do
3
3
  before :each do
4
4
  @text = 'Piece of interesting text'
5
- @cmd = Mongify::CLI::HelpCommand.new(@text)
5
+ @cmd = Mongify::CLI::Command::Help.new(@text)
6
6
  @view = mock('view').as_null_object
7
7
  end
8
8
 
@@ -1,9 +1,9 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Mongify::CLI::VersionCommand do
3
+ describe Mongify::CLI::Command::Version do
4
4
  before :each do
5
5
  @text = 'Piece of interesting text'
6
- @cmd = Mongify::CLI::VersionCommand.new(@text)
6
+ @cmd = Mongify::CLI::Command::Version.new(@text)
7
7
  @view = mock('view').as_null_object
8
8
  end
9
9
 
@@ -12,7 +12,7 @@ describe Mongify::CLI::VersionCommand do
12
12
  @cmd.execute(@view)
13
13
  end
14
14
 
15
- it 'displays the Reek version on the view' do
15
+ it 'displays Mongify version on the view' do
16
16
  @view.should_receive(:output).with(/#{Mongify::VERSION}/)
17
17
  @cmd.execute(@view)
18
18
  end
@@ -1,62 +1,58 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe Mongify::CLI::Options do
4
- before(:each) do
5
- @config_file = File.join(File.dirname(File.dirname(File.dirname(File.expand_path(__FILE__)))), 'files', 'base_configuration.rb')
6
- end
4
+ let(:config_file){File.join(Mongify.root, 'spec', 'files', 'base_configuration.rb')}
5
+ let(:translation_file){File.join(Mongify.root, 'spec', 'files', 'translation.rb')}
6
+
7
7
  it "should run help command when passed an -h" do
8
8
  @options = Mongify::CLI::Options.new(['-h'])
9
9
  @options.parse
10
- @options.instance_variable_get(:@command_class).should == Mongify::CLI::HelpCommand
10
+ @options.instance_variable_get(:@command_class).should == Mongify::CLI::Command::Help
11
11
  end
12
-
12
+
13
13
  it "should run version command when passed an -h" do
14
14
  @options = Mongify::CLI::Options.new(['-v'])
15
15
  @options.parse
16
- @options.instance_variable_get(:@command_class).should == Mongify::CLI::VersionCommand
16
+ @options.instance_variable_get(:@command_class).should == Mongify::CLI::Command::Version
17
17
  end
18
-
18
+
19
19
  context "action" do
20
20
  it "should get action command" do
21
21
  @options = Mongify::CLI::Options.new(['check'])
22
22
  @options.send(:action).should == 'check'
23
23
  end
24
-
24
+
25
25
  it "should return blank if no action is sent" do
26
26
  @options = Mongify::CLI::Options.new(['-v'])
27
27
  @options.send(:action).should == ''
28
28
  end
29
29
  end
30
-
30
+
31
+ # using check here just so that it doesn't have translate but still tests the args properly
31
32
  context "translation" do
32
33
  it "should return path" do
33
- @options = Mongify::CLI::Options.new(['check', '-c', 'some/config', 'some/folder/translation'])
34
- @options.send(:translation_file).should == 'some/folder/translation'
34
+ @options = Mongify::CLI::Options.new(['check', config_file, translation_file])
35
+ @options.send(:translation_file).should == translation_file
35
36
  end
36
-
37
+
37
38
  it "should return nil if no path specified" do
38
- @options = Mongify::CLI::Options.new(['check', '-c', 'some/config'])
39
+ @options = Mongify::CLI::Options.new(['check', config_file])
39
40
  @options.send(:translation_file).should be_nil
40
41
  end
41
42
  end
42
-
43
-
44
- context "Configuration file" do
45
- it "should take option (-c) with a file" do
46
- @options = Mongify::CLI::Options.new(['-c', @config_file])
43
+
44
+
45
+ context "config_file" do
46
+ it "should get config after action" do
47
+ @options = Mongify::CLI::Options.new(['check', config_file])
47
48
  @options.parse
48
- @options.instance_variable_get(:@config_file).should == @config_file
49
+ @options.instance_variable_get(:@config_file).should_not be_nil
49
50
  end
50
-
51
- it "should be require" do
52
- @options = Mongify::CLI::Options.new(["database_translation.rb"])
53
- lambda {@options.parse}.should raise_error(Mongify::ConfigurationFileNotFound)
54
- end
55
-
51
+
56
52
  it "should call Configuration.parse" do
57
- Mongify::Configuration.should_receive(:parse)
58
- @options = Mongify::CLI::Options.new(['-c', @config_file])
59
- @options.parse
53
+ Mongify::Configuration.should_receive(:parse).and_return(Mongify::Configuration.new)
54
+ @options = Mongify::CLI::Options.new(['check', config_file])
55
+ @options.parse
60
56
  end
61
57
  end
62
58
  end
@@ -1,6 +1,6 @@
1
1
  require 'spec_helper'
2
2
 
3
- describe Mongify::CLI::WorkerCommand do
3
+ describe Mongify::CLI::Command::Worker do
4
4
  before(:each) do
5
5
  @config = Mongify::Configuration.new()
6
6
  @sql_connection = Mongify::Database::SqlConnection.new()
@@ -20,13 +20,13 @@ describe Mongify::CLI::WorkerCommand do
20
20
 
21
21
  context "list_commands" do
22
22
  it "should return same number as available" do
23
- Mongify::CLI::WorkerCommand.list_commands.size.should == Mongify::CLI::WorkerCommand::AVAILABLE_COMMANDS.size
23
+ Mongify::CLI::Command::Worker.list_commands.size.should == Mongify::CLI::Command::Worker::AVAILABLE_COMMANDS.size
24
24
  end
25
25
  end
26
26
 
27
27
  context "check command" do
28
28
  before(:each) do
29
- @command = Mongify::CLI::WorkerCommand.new('check', @config)
29
+ @command = Mongify::CLI::Command::Worker.new('check', @config)
30
30
  @command.stub(:check_sql_connection).and_return(true)
31
31
  @command.stub(:check_nosql_connection).and_return(true)
32
32
  end
@@ -39,13 +39,13 @@ describe Mongify::CLI::WorkerCommand do
39
39
  @command.execute(@view)
40
40
  end
41
41
  it "should require config file" do
42
- lambda { @command = Mongify::CLI::WorkerCommand.new('check').execute(@view) }.should raise_error(Mongify::ConfigurationFileNotFound)
42
+ lambda { @command = Mongify::CLI::Command::Worker.new('check').execute(@view) }.should raise_error(Mongify::ConfigurationFileNotFound)
43
43
  end
44
44
  end
45
45
 
46
46
  context "non-existing command" do
47
47
  before(:each) do
48
- @command = Mongify::CLI::WorkerCommand.new('unknown')
48
+ @command = Mongify::CLI::Command::Worker.new('unknown')
49
49
  end
50
50
 
51
51
  it "should report error" do
@@ -61,12 +61,12 @@ describe Mongify::CLI::WorkerCommand do
61
61
 
62
62
  context "translation command" do
63
63
  before(:each) do
64
- @command = Mongify::CLI::WorkerCommand.new('translation', @config)
64
+ @command = Mongify::CLI::Command::Worker.new('translation', @config)
65
65
  Mongify::Translation.stub(:load).with(@sql_connection).and_return(stub(:print => 'worked'))
66
66
  end
67
67
 
68
68
  it "should require configuration file" do
69
- lambda { Mongify::CLI::WorkerCommand.new('translation').execute(@view) }.should raise_error(Mongify::ConfigurationFileNotFound)
69
+ lambda { Mongify::CLI::Command::Worker.new('translation').execute(@view) }.should raise_error(Mongify::ConfigurationFileNotFound)
70
70
  end
71
71
 
72
72
  it "should check sql connection" do
@@ -82,7 +82,7 @@ describe Mongify::CLI::WorkerCommand do
82
82
 
83
83
  context "process command" do
84
84
  before(:each) do
85
- @command = Mongify::CLI::WorkerCommand.new('process', @config, 'spec/files/translation.rb')
85
+ @command = Mongify::CLI::Command::Worker.new('process', @config, 'spec/files/translation.rb')
86
86
  Mongify::Translation.stub(:parse).and_return(mock(:process => true))
87
87
  end
88
88
  it "should report success" do
@@ -92,11 +92,11 @@ describe Mongify::CLI::WorkerCommand do
92
92
  end
93
93
 
94
94
  it "should require config file" do
95
- lambda { @command = Mongify::CLI::WorkerCommand.new('process').execute(@view) }.should raise_error(Mongify::ConfigurationFileNotFound)
95
+ lambda { @command = Mongify::CLI::Command::Worker.new('process').execute(@view) }.should raise_error(Mongify::ConfigurationFileNotFound)
96
96
  end
97
97
 
98
98
  it "should require transaction file" do
99
- lambda { @command = Mongify::CLI::WorkerCommand.new('process', @config).execute(@view) }.should raise_error(Mongify::TranslationFileNotFound)
99
+ lambda { @command = Mongify::CLI::Command::Worker.new('process', @config).execute(@view) }.should raise_error(Mongify::TranslationFileNotFound)
100
100
  end
101
101
 
102
102
  it "should check_connection" do
@@ -77,7 +77,7 @@ describe Mongify::Database::NoSqlConnection do
77
77
  end
78
78
  context "insert_into" do
79
79
  it "should insert into a table using the mongo driver" do
80
- @collection.should_receive(:insert).with({'first_name' => 'bob'}, anything)
80
+ @collection.should_receive(:insert).with({'first_name' => 'bob'})
81
81
  @mongodb_connection.insert_into('users', {'first_name' => 'bob'})
82
82
  end
83
83
  end
@@ -1,38 +1,27 @@
1
1
  require 'spec_helper'
2
-
3
2
  describe Mongify::Database::SqlConnection do
4
3
  before(:all) do
5
4
  @db_path = DatabaseGenerator.sqlite
6
5
  end
7
6
 
8
- before(:each) do
9
- @sql_connection = Mongify::Database::SqlConnection.new(:adapter => 'sqlite3', :database => @db_path)
10
- end
7
+ let(:sqlite_connection){Mongify::Database::SqlConnection.new(:adapter => 'sqlite3', :database => @db_path)}
8
+ let(:mysql_connection){@sql_connection = DatabaseGenerator.mysql_connection}
11
9
 
12
10
  context "Sqlite 3 config" do
13
- before(:each) do
14
- @adapter = 'sqlite3'
15
- @sql_connection = Mongify::Database::SqlConnection.new(:adapter => @adapter, :database => @db_path)
16
- end
17
-
18
11
  context "valid?" do
19
12
  it "should be true" do
20
- @sql_connection.should be_valid
13
+ sqlite_connection.should be_valid
21
14
  end
22
15
  end
23
16
 
24
17
  context "testing connection" do
25
18
  it "should work" do
26
- @sql_connection.should have_connection
19
+ sqlite_connection.should have_connection
27
20
  end
28
21
  end
29
22
  end
30
23
 
31
24
  context "MySql config" do
32
- before(:each) do
33
- @sql_connection = DatabaseGenerator.mysql_connection
34
- end
35
-
36
25
  context "valid?" do
37
26
  it "should be true" do
38
27
  Mongify::Database::SqlConnection.new(:adapter => 'mysql', :host => 'localhost', :database => 'blue').should be_valid
@@ -43,13 +32,12 @@ describe Mongify::Database::SqlConnection do
43
32
  end
44
33
 
45
34
  context "testing connection" do
46
- it "should call setup_connection_adapter before testing connection" do
47
- @sql_connection.should_receive(:setup_connection_adapter)
48
- @sql_connection.has_connection?
49
- end
50
-
51
35
  it "should work" do
52
- @sql_connection.should have_connection
36
+ mysql_connection.should have_connection
37
+ end
38
+ it "should call setup_connection_adapter before testing connection" do
39
+ mysql_connection.should_receive(:setup_connection_adapter)
40
+ mysql_connection.has_connection?
53
41
  end
54
42
  end
55
43
  end
@@ -57,24 +45,24 @@ describe Mongify::Database::SqlConnection do
57
45
  context "Sqlite connection" do
58
46
  context "testing connection" do
59
47
  it "should call setup_connection_adapter before testing connection" do
60
- @sql_connection.should_receive(:setup_connection_adapter)
61
- @sql_connection.has_connection?
48
+ sqlite_connection.should_receive(:setup_connection_adapter)
49
+ sqlite_connection.has_connection?
62
50
  end
63
51
 
64
52
  it "should work" do
65
- @sql_connection.should have_connection
53
+ sqlite_connection.should have_connection
66
54
  end
67
55
  end
68
56
 
69
57
  context "tables" do
70
58
  it "should be able to get a list" do
71
- @sql_connection.tables.should =~ ['comments', 'notes', 'posts', 'preferences', 'users']
59
+ sqlite_connection.tables.should =~ ['comments', 'notes', 'posts', 'preferences', 'users']
72
60
  end
73
61
  end
74
62
 
75
63
  context "columns" do
76
64
  it "should see columns for a table" do
77
- @sql_connection.columns_for(:users).map{ |column| column.name }.should =~ ['id', 'first_name', 'last_name', 'created_at', 'updated_at']
65
+ sqlite_connection.columns_for(:users).map{ |column| column.name }.should =~ ['id', 'first_name', 'last_name', 'created_at', 'updated_at']
78
66
  end
79
67
  end
80
68
  end
@@ -83,8 +71,8 @@ describe Mongify::Database::SqlConnection do
83
71
  it "should generate correct select statement" do
84
72
  @mock_conn = mock
85
73
  @mock_conn.should_receive(:select_all).with('SELECT * FROM users')
86
- @sql_connection.stub(:connection).and_return(@mock_conn)
87
- @sql_connection.select_rows('users')
74
+ sqlite_connection.stub(:connection).and_return(@mock_conn)
75
+ sqlite_connection.select_rows('users')
88
76
  end
89
77
  end
90
78
  end