ardb 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,59 @@
1
+ require 'assert'
2
+ require 'ardb/migration_helpers'
3
+
4
+ module Ardb::MigrationHelpers
5
+
6
+ class BaseTests < Assert::Context
7
+ desc "Ardb migration helpers"
8
+ subject{ Ardb::MigrationHelpers }
9
+
10
+ should have_instance_methods :foreign_key, :drop_foreign_key, :remove_column_with_fk
11
+
12
+ end
13
+
14
+ class ForeignKeyTests < BaseTests
15
+ desc "ForeignKey handler"
16
+ setup do
17
+ @fk = ForeignKey.new('fromtbl', 'fromcol', 'totbl')
18
+ end
19
+ subject{ @fk }
20
+
21
+ should have_readers :from_table, :from_column, :to_table, :to_column
22
+ should have_readers :name, :adapter
23
+ should have_instance_methods :add_sql, :drop_sql
24
+
25
+ should "know its from table/column and to table" do
26
+ assert_equal 'fromtbl', subject.from_table
27
+ assert_equal 'fromcol', subject.from_column
28
+ assert_equal 'totbl', subject.to_table
29
+ end
30
+
31
+ should "default its to column" do
32
+ assert_equal 'id', subject.to_column
33
+ end
34
+
35
+ should "default its name" do
36
+ exp_name = "fk_fromtbl_fromcol"
37
+ assert_equal exp_name, subject.name
38
+ end
39
+
40
+ should "use Ardb's config db adapter" do
41
+ exp_adapter = Ardb::Adapter.send(Ardb.config.db.adapter)
42
+ assert_equal exp_adapter, subject.adapter
43
+ end
44
+
45
+ should "generate appropriate foreign key sql" do
46
+ exp_add_sql = "ALTER TABLE fromtbl"\
47
+ " ADD CONSTRAINT fk_fromtbl_fromcol"\
48
+ " FOREIGN KEY (fromcol)"\
49
+ " REFERENCES totbl (id)"
50
+ assert_equal exp_add_sql, subject.add_sql
51
+
52
+ exp_drop_sql = "ALTER TABLE fromtbl"\
53
+ " DROP CONSTRAINT fk_fromtbl_fromcol"
54
+ assert_equal exp_drop_sql, subject.drop_sql
55
+ end
56
+
57
+ end
58
+
59
+ end
@@ -0,0 +1,18 @@
1
+ require 'assert'
2
+ require 'fileutils'
3
+ require 'ardb/runner/create_command'
4
+
5
+ class Ardb::Runner::CreateCommand
6
+
7
+ class BaseTests < Assert::Context
8
+ desc "Ardb::Runner::CreateCommand"
9
+ setup do
10
+ @cmd = Ardb::Runner::CreateCommand.new
11
+ end
12
+ subject{ @cmd }
13
+
14
+ should have_instance_methods :run
15
+
16
+ end
17
+
18
+ end
@@ -0,0 +1,17 @@
1
+ require 'assert'
2
+ require 'ardb/runner/drop_command'
3
+
4
+ class Ardb::Runner::DropCommand
5
+
6
+ class BaseTests < Assert::Context
7
+ desc "Ardb::Runner::DropCommand"
8
+ setup do
9
+ @cmd = Ardb::Runner::DropCommand.new
10
+ end
11
+ subject{ @cmd }
12
+
13
+ should have_instance_methods :run
14
+
15
+ end
16
+
17
+ end
@@ -0,0 +1,46 @@
1
+ require 'assert'
2
+ require 'ardb/runner/generate_command'
3
+
4
+ class Ardb::Runner::GenerateCommand
5
+
6
+ class BaseTests < Assert::Context
7
+ desc "Ardb::Runner::GenerateCommand"
8
+ setup do
9
+ @cmd = Ardb::Runner::GenerateCommand.new(['something'])
10
+ end
11
+ subject{ @cmd }
12
+
13
+ should have_instance_methods :run, :migration_cmd
14
+
15
+ end
16
+
17
+ class MigrationTests < BaseTests
18
+ desc "Ardb::Runner::GenerateCommand::MigrationCommand"
19
+ setup do
20
+ @cmd = Ardb::Runner::GenerateCommand::MigrationCommand.new('a_migration')
21
+ end
22
+
23
+ should have_readers :identifier, :class_name, :file_name, :template
24
+
25
+ should "know its given identifier" do
26
+ assert_equal 'a_migration', subject.identifier
27
+ end
28
+
29
+ should "know its class name" do
30
+ assert_equal "AMigrations", subject.class_name
31
+ end
32
+
33
+ should "know its file name" do
34
+ assert_match /.+_a_migration$/, subject.file_name
35
+ end
36
+
37
+ should "know its template" do
38
+ assert_includes "require 'ardb/migration_helpers'", subject.template
39
+ assert_includes "class #{subject.class_name} < ActiveRecord::Migration", subject.template
40
+ assert_includes "include Ardb::MigrationHelpers", subject.template
41
+ assert_includes "def change", subject.template
42
+ end
43
+
44
+ end
45
+
46
+ end
@@ -0,0 +1,62 @@
1
+ require 'assert'
2
+ require 'ardb/runner/migrate_command'
3
+
4
+ class Ardb::Runner::MigrateCommand
5
+
6
+ class BaseTests < Assert::Context
7
+ desc "Ardb::Runner::MigrateCommand"
8
+ setup do
9
+ @cmd = Ardb::Runner::MigrateCommand.new
10
+ end
11
+ subject{ @cmd }
12
+
13
+ should have_readers :migrations_path, :schema_file_path, :version, :verbose
14
+
15
+ should "use the config's migrations and schema file paths" do
16
+ assert_equal Ardb.config.migrations_path, subject.migrations_path
17
+ assert_equal Ardb.config.schema_path, subject.schema_file_path
18
+ end
19
+
20
+ should "not target a specific version by default" do
21
+ assert_nil subject.version
22
+ end
23
+
24
+ should "be verbose by default" do
25
+ assert subject.verbose
26
+ end
27
+
28
+ end
29
+
30
+ class VersionTests < BaseTests
31
+ desc "with a version ENV setting"
32
+ setup do
33
+ ENV["VERSION"] = '12345'
34
+ @cmd = Ardb::Runner::MigrateCommand.new
35
+ end
36
+ teardown do
37
+ ENV["VERSION"] = nil
38
+ end
39
+
40
+ should "should target the given version" do
41
+ assert_equal 12345, subject.version
42
+ end
43
+
44
+ end
45
+
46
+ class VerboseTests < BaseTests
47
+ desc "with a verbose ENV setting"
48
+ setup do
49
+ ENV["VERBOSE"] = 'no'
50
+ @cmd = Ardb::Runner::MigrateCommand.new
51
+ end
52
+ teardown do
53
+ ENV["VERBOSE"] = nil
54
+ end
55
+
56
+ should "turn off verbose mode if not set to 'true'" do
57
+ assert_not subject.verbose
58
+ end
59
+
60
+ end
61
+
62
+ end
@@ -0,0 +1,72 @@
1
+ require 'assert'
2
+ require 'pathname'
3
+ require 'active_record'
4
+ require 'ardb/runner'
5
+
6
+ class Ardb::Runner
7
+
8
+ class BaseTests < Assert::Context
9
+ desc "Ardb::Runner"
10
+ setup do
11
+ @runner = Ardb::Runner.new(['null', 1, 2], 'some' => 'opts')
12
+ end
13
+ subject{ @runner }
14
+
15
+ should have_readers :cmd_name, :cmd_args, :opts, :root_path
16
+
17
+ should "know its cmd, cmd_args, and opts" do
18
+ assert_equal 'null', subject.cmd_name
19
+ assert_equal [1,2], subject.cmd_args
20
+ assert_equal 'opts', subject.opts['some']
21
+ end
22
+
23
+ should "default the 'root_path' opt to `Dir.pwd`" do
24
+ assert_equal Dir.pwd, subject.root_path
25
+ end
26
+
27
+ end
28
+
29
+ class RunTests < BaseTests
30
+ desc "when running a command"
31
+ setup do
32
+ @orig_root_path = Ardb.config.root_path
33
+ @runner = Ardb::Runner.new(['null', 1, 2], 'root_path' => '/some/path')
34
+ end
35
+ teardown do
36
+ Ardb.config.root_path = @orig_root_path
37
+ Ardb::Adapter.reset
38
+ end
39
+
40
+ should "set the Ardb config root_path" do
41
+ subject.run
42
+ assert_equal Pathname.new('/some/path'), Ardb.config.root_path
43
+ end
44
+
45
+ should "validate the configs" do
46
+ orig_adapter = Ardb.config.db.adapter
47
+ Ardb.config.db.adapter = nil
48
+ assert_raises(Ardb::NotConfiguredError) { subject.run }
49
+ Ardb.config.db.adapter = orig_adapter
50
+ end
51
+
52
+ should "init the adapter" do
53
+ assert_nil Ardb.adapter
54
+ subject.run
55
+ assert_not_nil Ardb.adapter
56
+ end
57
+
58
+ should "set the AR logger" do
59
+ default_ar_logger = ActiveRecord::Base.logger
60
+ subject.run
61
+ assert_equal Ardb.config.logger, ActiveRecord::Base.logger
62
+ ActiveRecord::Base.logger = default_ar_logger
63
+ end
64
+
65
+ should "complain about unknown cmds" do
66
+ runner = Ardb::Runner.new(['unknown'], {})
67
+ assert_raises(UnknownCmdError) { runner.run }
68
+ end
69
+
70
+ end
71
+
72
+ end
@@ -0,0 +1,14 @@
1
+ require 'assert'
2
+ require 'ardb/test_helpers'
3
+
4
+ module Ardb::TestHelpers
5
+
6
+ class BaseTests < Assert::Context
7
+ desc "Ardb test helpers"
8
+ subject{ Ardb::TestHelpers }
9
+
10
+ should have_imeths :drop_tables, :load_schema
11
+
12
+ end
13
+
14
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ardb
3
3
  version: !ruby/object:Gem::Version
4
- hash: 29
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
- - 0
9
8
  - 1
10
- version: 0.0.1
9
+ - 0
10
+ version: 0.1.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Kelly Redding
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2013-03-29 00:00:00 Z
19
+ date: 2013-04-03 00:00:00 Z
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
22
22
  name: assert
@@ -33,12 +33,57 @@ dependencies:
33
33
  version: "2.0"
34
34
  type: :development
35
35
  version_requirements: *id001
36
+ - !ruby/object:Gem::Dependency
37
+ name: activerecord
38
+ prerelease: false
39
+ requirement: &id002 !ruby/object:Gem::Requirement
40
+ none: false
41
+ requirements:
42
+ - - ~>
43
+ - !ruby/object:Gem::Version
44
+ hash: 3
45
+ segments:
46
+ - 3
47
+ - 2
48
+ version: "3.2"
49
+ type: :runtime
50
+ version_requirements: *id002
51
+ - !ruby/object:Gem::Dependency
52
+ name: activesupport
53
+ prerelease: false
54
+ requirement: &id003 !ruby/object:Gem::Requirement
55
+ none: false
56
+ requirements:
57
+ - - ~>
58
+ - !ruby/object:Gem::Version
59
+ hash: 3
60
+ segments:
61
+ - 3
62
+ - 2
63
+ version: "3.2"
64
+ type: :runtime
65
+ version_requirements: *id003
66
+ - !ruby/object:Gem::Dependency
67
+ name: ns-options
68
+ prerelease: false
69
+ requirement: &id004 !ruby/object:Gem::Requirement
70
+ none: false
71
+ requirements:
72
+ - - ~>
73
+ - !ruby/object:Gem::Version
74
+ hash: 13
75
+ segments:
76
+ - 1
77
+ - 1
78
+ version: "1.1"
79
+ type: :runtime
80
+ version_requirements: *id004
36
81
  description: Activerecord database tools.
37
82
  email:
38
83
  - kelly@kellyredding.com
39
84
  - collin.redding@me.com
40
- executables: []
41
-
85
+ executables:
86
+ - ardb
42
87
  extensions: []
43
88
 
44
89
  extra_rdoc_files: []
@@ -50,11 +95,46 @@ files:
50
95
  - README.md
51
96
  - Rakefile
52
97
  - ardb.gemspec
98
+ - bin/ardb
53
99
  - lib/ardb.rb
100
+ - lib/ardb/adapter/base.rb
101
+ - lib/ardb/adapter/mysql.rb
102
+ - lib/ardb/adapter/postgresql.rb
103
+ - lib/ardb/adapter/sqlite.rb
104
+ - lib/ardb/cli.rb
105
+ - lib/ardb/migration_helpers.rb
106
+ - lib/ardb/runner.rb
107
+ - lib/ardb/runner/create_command.rb
108
+ - lib/ardb/runner/drop_command.rb
109
+ - lib/ardb/runner/generate_command.rb
110
+ - lib/ardb/runner/migrate_command.rb
111
+ - lib/ardb/test_helpers.rb
54
112
  - lib/ardb/version.rb
55
113
  - log/.gitkeep
56
114
  - test/helper.rb
115
+ - test/unit/adapter/base_tests.rb
116
+ - test/unit/adapter/mysql_tests.rb
117
+ - test/unit/adapter/postgresql_tests.rb
118
+ - test/unit/adapter/sqlite_tests.rb
119
+ - test/unit/ardb_tests.rb
120
+ - test/unit/config_tests.rb
121
+ - test/unit/migration_helpers_tests.rb
122
+ - test/unit/runner/create_command_tests.rb
123
+ - test/unit/runner/drop_command_tests.rb
124
+ - test/unit/runner/generate_command_tests.rb
125
+ - test/unit/runner/migrate_command_tests.rb
126
+ - test/unit/runner_tests.rb
127
+ - test/unit/test_helpers_tests.rb
57
128
  - tmp/.gitkeep
129
+ - tmp/msqltest/.gitkeep
130
+ - tmp/pgtest/.gitkeep
131
+ - tmp/pgtest/Gemfile
132
+ - tmp/pgtest/Gemfile.lock
133
+ - tmp/pgtest/config/.gitkeep
134
+ - tmp/sqlitetest/.gitkeep
135
+ - tmp/sqlitetest/Gemfile
136
+ - tmp/sqlitetest/Gemfile.lock
137
+ - tmp/sqlitetest/config/.gitkeep
58
138
  homepage: http://github.com/redding/ardb
59
139
  licenses: []
60
140
 
@@ -90,3 +170,16 @@ specification_version: 3
90
170
  summary: Activerecord database tools.
91
171
  test_files:
92
172
  - test/helper.rb
173
+ - test/unit/adapter/base_tests.rb
174
+ - test/unit/adapter/mysql_tests.rb
175
+ - test/unit/adapter/postgresql_tests.rb
176
+ - test/unit/adapter/sqlite_tests.rb
177
+ - test/unit/ardb_tests.rb
178
+ - test/unit/config_tests.rb
179
+ - test/unit/migration_helpers_tests.rb
180
+ - test/unit/runner/create_command_tests.rb
181
+ - test/unit/runner/drop_command_tests.rb
182
+ - test/unit/runner/generate_command_tests.rb
183
+ - test/unit/runner/migrate_command_tests.rb
184
+ - test/unit/runner_tests.rb
185
+ - test/unit/test_helpers_tests.rb