db_nazi 0.0.1 → 0.0.2

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.
data/.travis.yml CHANGED
@@ -1,5 +1,6 @@
1
1
  language: ruby
2
2
  bundler_args: --without dev
3
+ script: bundle exec rake ci
3
4
  rvm:
4
5
  - 1.9.2
5
6
  - 1.9.3
data/CHANGELOG CHANGED
@@ -1,3 +1,7 @@
1
+ == 0.0.2 2012-06-25
2
+
3
+ * Support bulk alters.
4
+
1
5
  == 0.0.1 2012-06-23
2
6
 
3
7
  * Hi.
data/Gemfile CHANGED
@@ -1,2 +1,7 @@
1
1
  source :rubygems
2
2
  gemspec
3
+
4
+ group :dev do
5
+ gem 'looksee'
6
+ gem 'debugger'
7
+ end
data/db_nazi.gemspec CHANGED
@@ -18,8 +18,8 @@ Gem::Specification.new do |gem|
18
18
 
19
19
  gem.add_runtime_dependency 'activerecord', '~> 3.2.6'
20
20
  gem.add_development_dependency 'ritual', '~> 0.4.1'
21
+ gem.add_development_dependency 'minitest', '~> 3.1.0'
21
22
  gem.add_development_dependency 'temporaries', '~> 0.2.0'
22
- gem.add_development_dependency 'looksee', '~> 0.2.0'
23
- gem.add_development_dependency 'debugger', '~> 1.1.3'
24
23
  gem.add_development_dependency 'sqlite3', '~> 1.3.6'
24
+ gem.add_development_dependency 'mysql2', '~> 0.3.11'
25
25
  end
@@ -1,31 +1,41 @@
1
1
  module DBNazi
2
2
  module AbstractAdapter
3
- def add_column(table_name, column_name, type, options = {})
4
- if DBNazi.enabled?(:require_nullability)
5
- options.key?(:null) or
6
- raise NullabilityRequired, "[db_nazi] :null parameter required"
7
- end
8
- if DBNazi.enabled?(:require_varchar_limits)
9
- # AR calls #to_sym on type, so do the same here.
10
- type.to_sym == :string && !options.key?(:limit) and
11
- raise VarcharLimitRequired, "[db_nazi] string column requires :limit parameter"
3
+ extend ActiveSupport::Concern
4
+
5
+ module ClassMethods
6
+ def new(*)
7
+ # We mix into singleton classes here, since some adapters define these
8
+ # methods directly in their classes (e.g. SQLite3Adapter#change_column),
9
+ # and we don't want to load these classes just to monkeypatch them.
10
+ super.tap do |adapter|
11
+ adapter.extend Adapter
12
+ end
12
13
  end
13
- super
14
14
  end
15
15
 
16
- def add_index(table_name, column_name, options = {})
17
- if DBNazi.enabled?(:require_index_uniqueness)
18
- options.key?(:unique) or
19
- raise IndexUniquenessRequired, "[db_nazi] :unique parameter required"
16
+ module Adapter
17
+ def add_column(table_name, column_name, type, options = {})
18
+ DBNazi.check_column(type, options)
19
+ super
20
20
  end
21
- end
22
21
 
23
- def create_table(name, *)
24
- if name.to_s == ActiveRecord::Migrator.schema_migrations_table_name.to_s
25
- DBNazi.disable { super }
26
- else
22
+ def add_index(table_name, column_name, options = {})
23
+ DBNazi.check_index(options)
27
24
  super
28
25
  end
26
+
27
+ def change_column(table_name, column_name, type, options = {})
28
+ DBNazi.check_column(type, options)
29
+ super
30
+ end
31
+
32
+ def create_table(name, *)
33
+ if name.to_s == ActiveRecord::Migrator.schema_migrations_table_name.to_s
34
+ DBNazi.disable { super }
35
+ else
36
+ super
37
+ end
38
+ end
29
39
  end
30
40
  end
31
41
  end
@@ -0,0 +1,26 @@
1
+ module DBNazi
2
+ module Table
3
+ def self.included(base)
4
+ base.class_eval do
5
+ alias_method_chain :column, :db_nazi
6
+ alias_method_chain :index, :db_nazi
7
+ alias_method_chain :change, :db_nazi
8
+ end
9
+ end
10
+
11
+ def column_with_db_nazi(column_name, type, options = {})
12
+ DBNazi.check_column(type, options)
13
+ column_without_db_nazi(column_name, type, options)
14
+ end
15
+
16
+ def index_with_db_nazi(column_name, options = {})
17
+ DBNazi.check_index(options)
18
+ index_without_db_nazi(column_name, options)
19
+ end
20
+
21
+ def change_with_db_nazi(column_name, type, options = {})
22
+ DBNazi.check_column(type, options)
23
+ change_without_db_nazi(column_name, type, options)
24
+ end
25
+ end
26
+ end
@@ -8,15 +8,7 @@ module DBNazi
8
8
  end
9
9
 
10
10
  def column_with_db_nazi(name, type, options = {})
11
- if DBNazi.enabled?(:require_nullability) && type != :primary_key
12
- options.key?(:null) or
13
- raise NullabilityRequired, "[db_nazi] :null parameter required"
14
- end
15
- if DBNazi.enabled?(:require_varchar_limits)
16
- # AR calls #to_sym on type, so do the same here.
17
- type.to_sym == :string && !options.key?(:limit) and
18
- raise VarcharLimitRequired, "[db_nazi] string column requires :limit parameter"
19
- end
11
+ DBNazi.check_column(type, options)
20
12
  column_without_db_nazi(name, type, options)
21
13
  end
22
14
  end
@@ -1,5 +1,5 @@
1
1
  module DBNazi
2
- VERSION = [0, 0, 1]
2
+ VERSION = [0, 0, 2]
3
3
 
4
4
  class << VERSION
5
5
  include Comparable
data/lib/db_nazi.rb CHANGED
@@ -2,6 +2,7 @@ module DBNazi
2
2
  autoload :AbstractAdapter, 'db_nazi/abstract_adapter'
3
3
  autoload :Migration, 'db_nazi/migration'
4
4
  autoload :MigrationProxy, 'db_nazi/migration_proxy'
5
+ autoload :Table, 'db_nazi/table'
5
6
  autoload :TableDefinition, 'db_nazi/table_definition'
6
7
  autoload :VERSION, 'db_nazi/version'
7
8
 
@@ -55,6 +56,25 @@ module DBNazi
55
56
  self.require_varchar_limits = true
56
57
  self.require_index_uniqueness = true
57
58
  end
59
+
60
+ def check_column(type, options)
61
+ if DBNazi.enabled?(:require_nullability) && type != :primary_key
62
+ options.key?(:null) or
63
+ raise NullabilityRequired, "[db_nazi] :null parameter required"
64
+ end
65
+ if DBNazi.enabled?(:require_varchar_limits)
66
+ # AR calls #to_sym on type, so do the same here.
67
+ type.to_sym == :string && !options.key?(:limit) and
68
+ raise VarcharLimitRequired, "[db_nazi] string column requires :limit parameter"
69
+ end
70
+ end
71
+
72
+ def check_index(options)
73
+ if DBNazi.enabled?(:require_index_uniqueness)
74
+ options.key?(:unique) or
75
+ raise IndexUniquenessRequired, "[db_nazi] :unique parameter required"
76
+ end
77
+ end
58
78
  end
59
79
 
60
80
  reset
@@ -62,5 +82,6 @@ end
62
82
 
63
83
  ActiveRecord::ConnectionAdapters::AbstractAdapter.__send__ :include, DBNazi::AbstractAdapter
64
84
  ActiveRecord::ConnectionAdapters::TableDefinition.__send__ :include, DBNazi::TableDefinition
85
+ ActiveRecord::ConnectionAdapters::Table.__send__ :include, DBNazi::Table
65
86
  ActiveRecord::Migration.__send__ :include, DBNazi::Migration
66
87
  ActiveRecord::MigrationProxy.__send__ :include, DBNazi::MigrationProxy
data/test/database.yml CHANGED
@@ -1,2 +1,11 @@
1
1
  sqlite3:
2
2
  database: ':memory:'
3
+ mysql2:
4
+ username: root
5
+ password:
6
+ database: db_nazi_test
7
+ postgresql:
8
+ username: root
9
+ password:
10
+ database: db_nazi_test
11
+ min_messages: warning
data/test/test_helper.rb CHANGED
@@ -8,37 +8,47 @@ require 'temporaries'
8
8
  require 'debugger'
9
9
  require 'db_nazi'
10
10
 
11
- ADAPTER = ENV['DBNAZI_ADAPTER'] || 'sqlite3'
12
- CONNECTION = YAML.load_file("#{ROOT}/test/database.yml")[ADAPTER].merge(adapter: ADAPTER)
13
- ActiveRecord::Base.establish_connection(CONNECTION)
11
+ ADAPTER = ENV['DB_NAZI_ADAPTER'] || 'sqlite3'
12
+ CONFIG = YAML.load_file("#{ROOT}/test/database.yml")[ADAPTER].merge(adapter: ADAPTER)
13
+ case ADAPTER
14
+ when /sqlite/
15
+ ActiveRecord::Base.establish_connection(CONFIG)
16
+ when /postgres/
17
+ ActiveRecord::Base.establish_connection(CONFIG.merge('database' => 'postgres'))
18
+ else
19
+ ActiveRecord::Base.establish_connection(CONFIG.merge('database' => nil))
20
+ end
14
21
 
15
22
  MiniTest::Spec.class_eval do
16
23
  def recreate_database
17
24
  drop_database
18
- case ADAPTER
19
- when 'sqlite3'
20
- ActiveRecord::Base.establish_connection(CONNECTION)
21
- when 'mysql2', 'postgresql'
22
- ActiveRecord::Base.connection.create_database 'db_nazi_test'
23
- else
24
- raise "can't create database for #{ADAPTER}"
25
+ create_database
26
+ end
27
+
28
+ def connection
29
+ ActiveRecord::Base.connection
30
+ end
31
+
32
+ def create_database
33
+ unless ADAPTER =~ /sqlite/
34
+ connection.create_database CONFIG['database']
25
35
  end
36
+ ActiveRecord::Base.establish_connection(CONFIG)
26
37
  end
27
38
 
28
39
  def drop_database
29
40
  case ADAPTER
30
- when 'sqlite3'
31
- when 'mysql2', 'postgresql'
32
- ActiveRecord::Base.connection.drop_database 'db_nazi_test'
41
+ when /sqlite/
42
+ # Nothing to do - in-memory database.
43
+ when /postgres/
44
+ # Postgres barfs if you drop the selected database.
45
+ ActiveRecord::Base.establish_connection(CONFIG.merge('database' => 'postgres'))
46
+ connection.drop_database CONFIG['database']
33
47
  else
34
- raise "can't drop database for #{ADAPTER}"
48
+ connection.drop_database CONFIG['database']
35
49
  end
36
50
  end
37
51
 
38
- def connection
39
- ActiveRecord::Base.connection
40
- end
41
-
42
52
  def self.use_database
43
53
  before { recreate_database }
44
54
  after { drop_database }
@@ -8,36 +8,34 @@ describe DBNazi::AbstractAdapter do
8
8
  connection.create_table 'test_table'
9
9
  end
10
10
 
11
- describe "nullability" do
12
- describe "when it is required" do
11
+ describe "#add_column" do
12
+ describe "when nullability is required" do
13
13
  use_attribute_value DBNazi, :require_nullability, true
14
14
 
15
- it "raises a DBNazi::NullabilityRequired if :null is not specified when adding a column" do
15
+ it "raises a DBNazi::NullabilityRequired if :null is not specified" do
16
16
  lambda do
17
17
  connection.add_column 'test_table', 'test_column', :boolean
18
18
  end.must_raise(DBNazi::NullabilityRequired)
19
19
  end
20
20
 
21
- it "does not raise a DBNazi::NullabilityRequired if :null is true when adding a column" do
21
+ it "does not raise a DBNazi::NullabilityRequired if :null is true" do
22
22
  connection.add_column 'test_table', 'test_column', :boolean, null: true
23
23
  end
24
24
 
25
- it "does not raise a DBNazi::NullabilityRequired if :null is false when adding a column" do
25
+ it "does not raise a DBNazi::NullabilityRequired if :null is false" do
26
26
  connection.add_column 'test_table', 'test_column', :boolean, null: false, default: false
27
27
  end
28
28
  end
29
29
 
30
- describe "when it is not required" do
30
+ describe "when nullability is not required" do
31
31
  use_attribute_value DBNazi, :require_nullability, false
32
32
 
33
- it "does not raise a DBNazi::NullabilityRequired if :null is not specified when adding a column" do
33
+ it "does not raise a DBNazi::NullabilityRequired if :null is not specified" do
34
34
  connection.add_column 'test_table', 'test_column', :boolean
35
35
  end
36
36
  end
37
- end
38
37
 
39
- describe "varchar limits" do
40
- describe "when they are required" do
38
+ describe "when varchar limits are required" do
41
39
  use_attribute_value DBNazi, :require_varchar_limits, true
42
40
 
43
41
  it "raises a DBNazi::VarcharLimitRequired if :limit is not specified for a :string column" do
@@ -51,7 +49,7 @@ describe DBNazi::AbstractAdapter do
51
49
  end
52
50
  end
53
51
 
54
- describe "when they are not required" do
52
+ describe "when varchar limits are not required" do
55
53
  use_attribute_value DBNazi, :require_varchar_limits, false
56
54
 
57
55
  it "does not raise a DBNazi::VarcharLimitRequired if :limit is not specified for a :string column" do
@@ -60,12 +58,66 @@ describe DBNazi::AbstractAdapter do
60
58
  end
61
59
  end
62
60
 
63
- describe "index uniqueness" do
61
+ describe "#change_column" do
62
+ before do
63
+ connection.add_column 'test_table', 'test_column', :boolean, null: false, default: false
64
+ end
65
+
66
+ describe "when nullability is required" do
67
+ use_attribute_value DBNazi, :require_nullability, true
68
+
69
+ it "raises a DBNazi::NullabilityRequired if :null is not specified" do
70
+ lambda do
71
+ connection.change_column 'test_table', 'test_column', :boolean
72
+ end.must_raise(DBNazi::NullabilityRequired)
73
+ end
74
+
75
+ it "does not raise a DBNazi::NullabilityRequired if :null is true" do
76
+ connection.change_column 'test_table', 'test_column', :boolean, null: true
77
+ end
78
+
79
+ it "does not raise a DBNazi::NullabilityRequired if :null is false" do
80
+ connection.change_column 'test_table', 'test_column', :boolean, null: false, default: false
81
+ end
82
+ end
83
+
84
+ describe "when nullability is not required" do
85
+ use_attribute_value DBNazi, :require_nullability, false
86
+
87
+ it "does not raise a DBNazi::NullabilityRequired if :null is not specified" do
88
+ connection.change_column 'test_table', 'test_column', :boolean
89
+ end
90
+ end
91
+
92
+ describe "when varchar limits are required" do
93
+ use_attribute_value DBNazi, :require_varchar_limits, true
94
+
95
+ it "raises a DBNazi::VarcharLimitRequired if :limit is not specified for a :string column" do
96
+ lambda do
97
+ connection.change_column 'test_table', 'test_column', :string, null: true
98
+ end.must_raise(DBNazi::VarcharLimitRequired)
99
+ end
100
+
101
+ it "does not raise a DBNazi::VarcharLimitRequired if :limit is specified for a :string column" do
102
+ connection.change_column 'test_table', 'test_column', :string, limit: 255, null: true
103
+ end
104
+ end
105
+
106
+ describe "when varchar limits are not required" do
107
+ use_attribute_value DBNazi, :require_varchar_limits, false
108
+
109
+ it "does not raise a DBNazi::VarcharLimitRequired if :limit is not specified for a :string column" do
110
+ connection.change_column 'test_table', 'test_column', :string, null: true
111
+ end
112
+ end
113
+ end
114
+
115
+ describe "#add_index" do
64
116
  before do
65
117
  connection.add_column 'test_table', 'test_column', :boolean, null: true
66
118
  end
67
119
 
68
- describe "when it is required" do
120
+ describe "when index uniqueness is required" do
69
121
  use_attribute_value DBNazi, :require_index_uniqueness, true
70
122
 
71
123
  it "raises a DBNazi::IndexUniquenessRequired if :unique is not specified for an index" do
@@ -83,7 +135,7 @@ describe DBNazi::AbstractAdapter do
83
135
  end
84
136
  end
85
137
 
86
- describe "when it is not required" do
138
+ describe "when index uniqueness is not required" do
87
139
  use_attribute_value DBNazi, :require_index_uniqueness, false
88
140
 
89
141
  it "does not raise a DBNazi::IndexUniquenessRequired if :unique is not specified for an index" do
@@ -92,8 +144,10 @@ describe DBNazi::AbstractAdapter do
92
144
  end
93
145
  end
94
146
 
95
- it "does not prevent construction of the schema migrations table" do
96
- # AR doesn't specify a varchar limit for the version column. Lame.
97
- connection.initialize_schema_migrations_table
147
+ describe "#initialize_schema_migrations_table" do
148
+ it "still works" do
149
+ # AR doesn't specify a varchar limit for the version column. Lame.
150
+ connection.initialize_schema_migrations_table
151
+ end
98
152
  end
99
153
  end
@@ -0,0 +1,189 @@
1
+ require_relative '../../test_helper'
2
+
3
+ describe DBNazi::TableDefinition do
4
+ use_database
5
+
6
+ before do
7
+ DBNazi.reset
8
+ end
9
+
10
+ describe "#column" do
11
+ before do
12
+ connection.create_table 'test_table'
13
+ end
14
+
15
+ describe "when nullability is required" do
16
+ use_attribute_value DBNazi, :require_nullability, true
17
+
18
+ it "raises a DBNazi::NullabilityRequired if :null is not specified" do
19
+ connection.change_table 'test_table', bulk: true do |t|
20
+ lambda do
21
+ t.column 'test_column', :boolean
22
+ end.must_raise(DBNazi::NullabilityRequired)
23
+ end
24
+ end
25
+
26
+ it "does not raise a DBNazi::NullabilityRequired if :null is true" do
27
+ connection.change_table 'test_table', bulk: true do |t|
28
+ t.column 'test_column', :boolean, null: true
29
+ end
30
+ end
31
+
32
+ it "does not raise a DBNazi::NullabilityRequired if :null is false" do
33
+ connection.change_table 'test_table', bulk: true do |t|
34
+ t.column 'test_column', :boolean, null: false, default: false
35
+ end
36
+ end
37
+ end
38
+
39
+ describe "when nullability is not required" do
40
+ use_attribute_value DBNazi, :require_nullability, false
41
+
42
+ it "does not raise a DBNazi::NullabilityRequired if :null is not specified" do
43
+ connection.change_table 'test_table', bulk: true do |t|
44
+ t.column 'test_column', :boolean
45
+ end
46
+ end
47
+ end
48
+
49
+ describe "when varchar limits are required" do
50
+ use_attribute_value DBNazi, :require_varchar_limits, true
51
+
52
+ it "raises a DBNazi::VarcharLimitRequired if :limit is not specified for a :string column" do
53
+ connection.change_table 'test_table', bulk: true do |t|
54
+ lambda do
55
+ t.column 'test_column', :string, null: true
56
+ end.must_raise(DBNazi::VarcharLimitRequired)
57
+ end
58
+ end
59
+
60
+ it "does not raise a DBNazi::VarcharLimitRequired if :limit is specified for a :string column" do
61
+ connection.change_table 'test_table', bulk: true do |t|
62
+ t.column 'test_column', :string, limit: 255, null: true
63
+ end
64
+ end
65
+ end
66
+
67
+ describe "when varchar limits are not required" do
68
+ use_attribute_value DBNazi, :require_varchar_limits, false
69
+
70
+ it "does not raise a DBNazi::VarcharLimitRequired if :limit is not specified for a :string column" do
71
+ connection.change_table 'test_table', bulk: true do |t|
72
+ t.column 'test_column', :string, null: true
73
+ end
74
+ end
75
+ end
76
+ end
77
+
78
+ describe "#index" do
79
+ before do
80
+ connection.create_table 'test_table' do |t|
81
+ t.column 'test_column', :boolean, null: true
82
+ end
83
+ end
84
+
85
+ describe "when index uniqueness is required" do
86
+ use_attribute_value DBNazi, :require_index_uniqueness, true
87
+
88
+ it "raises a DBNazi::IndexUniquenessRequired if :unique is not specified for an index" do
89
+ connection.change_table 'test_table', bulk: true do |t|
90
+ lambda do
91
+ t.index 'test_column'
92
+ end.must_raise(DBNazi::IndexUniquenessRequired)
93
+ end
94
+ end
95
+
96
+ it "does not raise a DBNazi::IndexUniquenessRequired if :unique is true for an index" do
97
+ connection.change_table 'test_table', bulk: true do |t|
98
+ t.index 'test_column', unique: true
99
+ end
100
+ end
101
+
102
+ it "does not raise a DBNazi::IndexUniquenessRequired if :unique is false for an index" do
103
+ connection.change_table 'test_table', bulk: true do |t|
104
+ t.index 'test_column', unique: false
105
+ end
106
+ end
107
+ end
108
+
109
+ describe "when index uniqueness is not required" do
110
+ use_attribute_value DBNazi, :require_index_uniqueness, false
111
+
112
+ it "does not raise a DBNazi::IndexUniquenessRequired if :unique is not specified for an index" do
113
+ connection.change_table 'test_table', bulk: true do |t|
114
+ t.index 'test_column'
115
+ end
116
+ end
117
+ end
118
+ end
119
+
120
+ describe "#change" do
121
+ before do
122
+ connection.create_table 'test_table' do |t|
123
+ t.column 'test_column', :boolean, null: true
124
+ end
125
+ end
126
+
127
+ describe "when nullability is required" do
128
+ use_attribute_value DBNazi, :require_nullability, true
129
+
130
+ it "raises a DBNazi::NullabilityRequired if :null is not specified" do
131
+ connection.change_table 'test_table', bulk: true do |t|
132
+ lambda do
133
+ t.change 'test_column', :boolean
134
+ end.must_raise(DBNazi::NullabilityRequired)
135
+ end
136
+ end
137
+
138
+ it "does not raise a DBNazi::NullabilityRequired if :null is true" do
139
+ connection.change_table 'test_table', bulk: true do |t|
140
+ t.change 'test_column', :boolean, null: true
141
+ end
142
+ end
143
+
144
+ it "does not raise a DBNazi::NullabilityRequired if :null is false" do
145
+ connection.change_table 'test_table', bulk: true do |t|
146
+ t.change 'test_column', :boolean, null: false, default: false
147
+ end
148
+ end
149
+ end
150
+
151
+ describe "when nullability is not required" do
152
+ use_attribute_value DBNazi, :require_nullability, false
153
+
154
+ it "does not raise a DBNazi::NullabilityRequired if :null is not specified" do
155
+ connection.change_table 'test_table', bulk: true do |t|
156
+ t.change 'test_column', :boolean
157
+ end
158
+ end
159
+ end
160
+
161
+ describe "when varchar limits are required" do
162
+ use_attribute_value DBNazi, :require_varchar_limits, true
163
+
164
+ it "raises a DBNazi::VarcharLimitRequired if :limit is not specified for a :string column" do
165
+ connection.change_table 'test_table', bulk: true do |t|
166
+ lambda do
167
+ t.change 'test_column', :string, null: true
168
+ end.must_raise(DBNazi::VarcharLimitRequired)
169
+ end
170
+ end
171
+
172
+ it "does not raise a DBNazi::VarcharLimitRequired if :limit is specified for a :string column" do
173
+ connection.change_table 'test_table', bulk: true do |t|
174
+ t.change 'test_column', :string, limit: 255, null: true
175
+ end
176
+ end
177
+ end
178
+
179
+ describe "when varchar limits are not required" do
180
+ use_attribute_value DBNazi, :require_varchar_limits, false
181
+
182
+ it "does not raise a DBNazi::VarcharLimitRequired if :limit is not specified for a :string column" do
183
+ connection.change_table 'test_table', bulk: true do |t|
184
+ t.change 'test_column', :string, null: true
185
+ end
186
+ end
187
+ end
188
+ end
189
+ end
@@ -7,11 +7,11 @@ describe DBNazi::TableDefinition do
7
7
  DBNazi.reset
8
8
  end
9
9
 
10
- describe "nullability" do
11
- describe "when it is required" do
10
+ describe "#column" do
11
+ describe "when nullability is required" do
12
12
  use_attribute_value DBNazi, :require_nullability, true
13
13
 
14
- it "raises a DBNazi::NullabilityRequired if :null is not specified when adding a column" do
14
+ it "raises a DBNazi::NullabilityRequired if :null is not specified" do
15
15
  connection.create_table 'test_table' do |t|
16
16
  lambda do
17
17
  t.column 'test_column', :boolean
@@ -19,32 +19,30 @@ describe DBNazi::TableDefinition do
19
19
  end
20
20
  end
21
21
 
22
- it "does not raise a DBNazi::NullabilityRequired if :null is true when adding a column" do
22
+ it "does not raise a DBNazi::NullabilityRequired if :null is true" do
23
23
  connection.create_table 'test_table' do |t|
24
24
  t.column 'test_column', :boolean, null: true
25
25
  end
26
26
  end
27
27
 
28
- it "does not raise a DBNazi::NullabilityRequired if :null is false when adding a column" do
28
+ it "does not raise a DBNazi::NullabilityRequired if :null is false" do
29
29
  connection.create_table 'test_table' do |t|
30
30
  t.column 'test_column', :boolean, null: false, default: false
31
31
  end
32
32
  end
33
33
  end
34
34
 
35
- describe "when it is not required" do
35
+ describe "when nullability is not required" do
36
36
  use_attribute_value DBNazi, :require_nullability, false
37
37
 
38
- it "does not raise a DBNazi::NullabilityRequired if :null is not specified when adding a column" do
38
+ it "does not raise a DBNazi::NullabilityRequired if :null is not specified" do
39
39
  connection.create_table 'test_table' do |t|
40
40
  t.column 'test_column', :boolean
41
41
  end
42
42
  end
43
43
  end
44
- end
45
44
 
46
- describe "varchar limits" do
47
- describe "when they are required" do
45
+ describe "when varchar limits are required" do
48
46
  use_attribute_value DBNazi, :require_varchar_limits, true
49
47
 
50
48
  it "raises a DBNazi::VarcharLimitRequired if :limit is not specified for a :string column" do
@@ -62,7 +60,7 @@ describe DBNazi::TableDefinition do
62
60
  end
63
61
  end
64
62
 
65
- describe "when they are not required" do
63
+ describe "when varchar limits are not required" do
66
64
  use_attribute_value DBNazi, :require_varchar_limits, false
67
65
 
68
66
  it "does not raise a DBNazi::VarcharLimitRequired if :limit is not specified for a :string column" do
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: db_nazi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-23 00:00:00.000000000 Z
12
+ date: 2012-06-25 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -44,13 +44,13 @@ dependencies:
44
44
  - !ruby/object:Gem::Version
45
45
  version: 0.4.1
46
46
  - !ruby/object:Gem::Dependency
47
- name: temporaries
47
+ name: minitest
48
48
  requirement: !ruby/object:Gem::Requirement
49
49
  none: false
50
50
  requirements:
51
51
  - - ~>
52
52
  - !ruby/object:Gem::Version
53
- version: 0.2.0
53
+ version: 3.1.0
54
54
  type: :development
55
55
  prerelease: false
56
56
  version_requirements: !ruby/object:Gem::Requirement
@@ -58,9 +58,9 @@ dependencies:
58
58
  requirements:
59
59
  - - ~>
60
60
  - !ruby/object:Gem::Version
61
- version: 0.2.0
61
+ version: 3.1.0
62
62
  - !ruby/object:Gem::Dependency
63
- name: looksee
63
+ name: temporaries
64
64
  requirement: !ruby/object:Gem::Requirement
65
65
  none: false
66
66
  requirements:
@@ -76,13 +76,13 @@ dependencies:
76
76
  - !ruby/object:Gem::Version
77
77
  version: 0.2.0
78
78
  - !ruby/object:Gem::Dependency
79
- name: debugger
79
+ name: sqlite3
80
80
  requirement: !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
83
83
  - - ~>
84
84
  - !ruby/object:Gem::Version
85
- version: 1.1.3
85
+ version: 1.3.6
86
86
  type: :development
87
87
  prerelease: false
88
88
  version_requirements: !ruby/object:Gem::Requirement
@@ -90,15 +90,15 @@ dependencies:
90
90
  requirements:
91
91
  - - ~>
92
92
  - !ruby/object:Gem::Version
93
- version: 1.1.3
93
+ version: 1.3.6
94
94
  - !ruby/object:Gem::Dependency
95
- name: sqlite3
95
+ name: mysql2
96
96
  requirement: !ruby/object:Gem::Requirement
97
97
  none: false
98
98
  requirements:
99
99
  - - ~>
100
100
  - !ruby/object:Gem::Version
101
- version: 1.3.6
101
+ version: 0.3.11
102
102
  type: :development
103
103
  prerelease: false
104
104
  version_requirements: !ruby/object:Gem::Requirement
@@ -106,7 +106,7 @@ dependencies:
106
106
  requirements:
107
107
  - - ~>
108
108
  - !ruby/object:Gem::Version
109
- version: 1.3.6
109
+ version: 0.3.11
110
110
  description: ''
111
111
  email:
112
112
  - george.ogata@gmail.com
@@ -126,6 +126,7 @@ files:
126
126
  - lib/db_nazi/abstract_adapter.rb
127
127
  - lib/db_nazi/migration.rb
128
128
  - lib/db_nazi/migration_proxy.rb
129
+ - lib/db_nazi/table.rb
129
130
  - lib/db_nazi/table_definition.rb
130
131
  - lib/db_nazi/version.rb
131
132
  - test/database.yml
@@ -134,6 +135,7 @@ files:
134
135
  - test/unit/db_nazi/test_abstract_adapter.rb
135
136
  - test/unit/db_nazi/test_migration.rb
136
137
  - test/unit/db_nazi/test_migration_proxy.rb
138
+ - test/unit/db_nazi/test_table.rb
137
139
  - test/unit/db_nazi/test_table_definition.rb
138
140
  - test/unit/test_db_nazi.rb
139
141
  homepage: ''
@@ -151,7 +153,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
151
153
  version: '0'
152
154
  segments:
153
155
  - 0
154
- hash: 2002143158366431765
156
+ hash: -1208224069343605588
155
157
  required_rubygems_version: !ruby/object:Gem::Requirement
156
158
  none: false
157
159
  requirements:
@@ -160,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
160
162
  version: '0'
161
163
  segments:
162
164
  - 0
163
- hash: 2002143158366431765
165
+ hash: -1208224069343605588
164
166
  requirements: []
165
167
  rubyforge_project:
166
168
  rubygems_version: 1.8.24
@@ -174,5 +176,6 @@ test_files:
174
176
  - test/unit/db_nazi/test_abstract_adapter.rb
175
177
  - test/unit/db_nazi/test_migration.rb
176
178
  - test/unit/db_nazi/test_migration_proxy.rb
179
+ - test/unit/db_nazi/test_table.rb
177
180
  - test/unit/db_nazi/test_table_definition.rb
178
181
  - test/unit/test_db_nazi.rb