schema_plus 2.0.0.pre5 → 2.0.0.pre6
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.
- checksums.yaml +4 -4
- data/README.md +41 -51
- data/lib/schema_plus.rb +10 -10
- data/lib/schema_plus/db_default.rb +7 -0
- data/lib/{schema_plus_db_default → schema_plus/db_default}/active_record/attribute.rb +1 -1
- data/lib/{schema_plus_db_default → schema_plus/db_default}/db_default.rb +2 -2
- data/lib/{schema_plus_db_default → schema_plus/db_default}/middleware.rb +1 -1
- data/lib/{schema_plus_default_expr.rb → schema_plus/default_expr.rb} +8 -8
- data/lib/{schema_plus_default_expr → schema_plus/default_expr}/active_record/connection_adapters/column.rb +1 -1
- data/lib/{schema_plus_default_expr → schema_plus/default_expr}/active_record/connection_adapters/mysql2_adapter.rb +1 -1
- data/lib/{schema_plus_default_expr → schema_plus/default_expr}/active_record/connection_adapters/postgresql_adapter.rb +1 -1
- data/lib/{schema_plus_default_expr → schema_plus/default_expr}/active_record/connection_adapters/sqlite3_adapter.rb +1 -1
- data/lib/{schema_plus_default_expr → schema_plus/default_expr}/middleware.rb +1 -1
- data/lib/schema_plus/enums.rb +6 -0
- data/lib/{schema_plus_enums → schema_plus/enums}/active_record.rb +1 -1
- data/lib/{schema_plus_enums → schema_plus/enums}/middleware.rb +1 -1
- data/lib/{schema_plus_foreign_keys.rb → schema_plus/foreign_keys.rb} +21 -21
- data/lib/{schema_plus_foreign_keys → schema_plus/foreign_keys}/active_record/base.rb +2 -2
- data/lib/{schema_plus_foreign_keys → schema_plus/foreign_keys}/active_record/connection_adapters/abstract_adapter.rb +5 -5
- data/lib/{schema_plus_foreign_keys → schema_plus/foreign_keys}/active_record/connection_adapters/foreign_key_definition.rb +2 -2
- data/lib/{schema_plus_foreign_keys → schema_plus/foreign_keys}/active_record/connection_adapters/mysql2_adapter.rb +2 -2
- data/lib/{schema_plus_foreign_keys → schema_plus/foreign_keys}/active_record/connection_adapters/postgresql_adapter.rb +2 -2
- data/lib/{schema_plus_foreign_keys → schema_plus/foreign_keys}/active_record/connection_adapters/sqlite3_adapter.rb +2 -2
- data/lib/{schema_plus_foreign_keys → schema_plus/foreign_keys}/active_record/connection_adapters/table_definition.rb +8 -8
- data/lib/{schema_plus_foreign_keys → schema_plus/foreign_keys}/active_record/migration/command_recorder.rb +1 -1
- data/lib/{schema_plus_foreign_keys → schema_plus/foreign_keys}/active_record/schema.rb +4 -4
- data/lib/{schema_plus_foreign_keys → schema_plus/foreign_keys}/middleware/dumper.rb +2 -2
- data/lib/{schema_plus_foreign_keys → schema_plus/foreign_keys}/middleware/migration.rb +2 -2
- data/lib/{schema_plus_foreign_keys → schema_plus/foreign_keys}/middleware/model.rb +1 -1
- data/lib/{schema_plus_foreign_keys → schema_plus/foreign_keys}/middleware/sql.rb +1 -1
- data/lib/schema_plus/foreign_keys/version.rb +3 -0
- data/lib/schema_plus/tables.rb +15 -0
- data/lib/{schema_plus_tables → schema_plus/tables}/active_record/connection_adapters/abstract_adapter.rb +2 -2
- data/lib/{schema_plus_tables → schema_plus/tables}/active_record/connection_adapters/mysql2_adapter.rb +2 -2
- data/lib/{schema_plus_tables → schema_plus/tables}/active_record/connection_adapters/postgresql_adapter.rb +2 -2
- data/lib/{schema_plus_tables → schema_plus/tables}/active_record/connection_adapters/sqlite3_adapter.rb +1 -1
- data/lib/schema_plus/version.rb +1 -1
- data/schema_plus.gemspec +2 -1
- data/spec/schema_plus_db_default/column_spec.rb +1 -1
- data/spec/schema_plus_default_expr/schema_dumper_spec.rb +1 -1
- data/spec/schema_plus_foreign_keys/migration_spec.rb +13 -13
- data/spec/schema_plus_foreign_keys/schema_dumper_spec.rb +78 -11
- data/spec/schema_plus_foreign_keys/schema_spec.rb +6 -6
- data/spec/spec_helper.rb +5 -5
- data/spec/support/helpers.rb +1 -1
- data/spec/support/matchers/have_index.rb +1 -1
- data/spec/support/matchers/reference.rb +1 -1
- metadata +51 -42
- data/lib/schema_plus_columns.rb +0 -7
- data/lib/schema_plus_columns/active_record/connection_adapters/column.rb +0 -65
- data/lib/schema_plus_columns/middleware/model.rb +0 -16
- data/lib/schema_plus_db_default.rb +0 -7
- data/lib/schema_plus_enums.rb +0 -6
- data/lib/schema_plus_foreign_keys/version.rb +0 -3
- data/lib/schema_plus_tables.rb +0 -15
- data/spec/schema_plus_columns/column_spec.rb +0 -156
data/spec/spec_helper.rb
CHANGED
@@ -18,18 +18,18 @@ SchemaDev::Rspec.setup
|
|
18
18
|
Dir[File.dirname(__FILE__) + "/support/**/*.rb"].each {|f| require f}
|
19
19
|
|
20
20
|
RSpec.configure do |config|
|
21
|
-
config.include(
|
22
|
-
config.include(
|
21
|
+
config.include(SchemaPlus::Matchers)
|
22
|
+
config.include(SchemaPlus::Helpers)
|
23
23
|
config.warnings = true
|
24
24
|
end
|
25
25
|
|
26
26
|
def with_fk_config(opts, &block)
|
27
|
-
save = Hash[opts.keys.collect{|key| [key,
|
27
|
+
save = Hash[opts.keys.collect{|key| [key, SchemaPlus::ForeignKeys.config.send(key)]}]
|
28
28
|
begin
|
29
|
-
|
29
|
+
SchemaPlus::ForeignKeys.config.update_attributes(opts)
|
30
30
|
yield
|
31
31
|
ensure
|
32
|
-
|
32
|
+
SchemaPlus::ForeignKeys.config.update_attributes(save)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
data/spec/support/helpers.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: schema_plus
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.
|
4
|
+
version: 2.0.0.pre6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ronen Barzel
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2015-02-
|
12
|
+
date: 2015-02-13 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activerecord
|
@@ -73,6 +73,20 @@ dependencies:
|
|
73
73
|
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
75
|
version: 0.1.2
|
76
|
+
- !ruby/object:Gem::Dependency
|
77
|
+
name: schema_plus_columns
|
78
|
+
requirement: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0.1'
|
83
|
+
type: :runtime
|
84
|
+
prerelease: false
|
85
|
+
version_requirements: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.1'
|
76
90
|
- !ruby/object:Gem::Dependency
|
77
91
|
name: schema_plus_indexes
|
78
92
|
requirement: !ruby/object:Gem::Requirement
|
@@ -82,7 +96,7 @@ dependencies:
|
|
82
96
|
version: '0.1'
|
83
97
|
- - ">="
|
84
98
|
- !ruby/object:Gem::Version
|
85
|
-
version: 0.1.
|
99
|
+
version: 0.1.3
|
86
100
|
type: :runtime
|
87
101
|
prerelease: false
|
88
102
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -92,7 +106,7 @@ dependencies:
|
|
92
106
|
version: '0.1'
|
93
107
|
- - ">="
|
94
108
|
- !ruby/object:Gem::Version
|
95
|
-
version: 0.1.
|
109
|
+
version: 0.1.3
|
96
110
|
- !ruby/object:Gem::Dependency
|
97
111
|
name: schema_plus_pg_indexes
|
98
112
|
requirement: !ruby/object:Gem::Requirement
|
@@ -236,48 +250,44 @@ files:
|
|
236
250
|
- gemfiles/activerecord-4.2/Gemfile.postgresql
|
237
251
|
- gemfiles/activerecord-4.2/Gemfile.sqlite3
|
238
252
|
- lib/schema_plus.rb
|
253
|
+
- lib/schema_plus/db_default.rb
|
254
|
+
- lib/schema_plus/db_default/active_record/attribute.rb
|
255
|
+
- lib/schema_plus/db_default/db_default.rb
|
256
|
+
- lib/schema_plus/db_default/middleware.rb
|
257
|
+
- lib/schema_plus/default_expr.rb
|
258
|
+
- lib/schema_plus/default_expr/active_record/connection_adapters/column.rb
|
259
|
+
- lib/schema_plus/default_expr/active_record/connection_adapters/mysql2_adapter.rb
|
260
|
+
- lib/schema_plus/default_expr/active_record/connection_adapters/postgresql_adapter.rb
|
261
|
+
- lib/schema_plus/default_expr/active_record/connection_adapters/sqlite3_adapter.rb
|
262
|
+
- lib/schema_plus/default_expr/middleware.rb
|
263
|
+
- lib/schema_plus/enums.rb
|
264
|
+
- lib/schema_plus/enums/active_record.rb
|
265
|
+
- lib/schema_plus/enums/middleware.rb
|
266
|
+
- lib/schema_plus/foreign_keys.rb
|
267
|
+
- lib/schema_plus/foreign_keys/active_record/base.rb
|
268
|
+
- lib/schema_plus/foreign_keys/active_record/connection_adapters/abstract_adapter.rb
|
269
|
+
- lib/schema_plus/foreign_keys/active_record/connection_adapters/foreign_key_definition.rb
|
270
|
+
- lib/schema_plus/foreign_keys/active_record/connection_adapters/mysql2_adapter.rb
|
271
|
+
- lib/schema_plus/foreign_keys/active_record/connection_adapters/postgresql_adapter.rb
|
272
|
+
- lib/schema_plus/foreign_keys/active_record/connection_adapters/sqlite3_adapter.rb
|
273
|
+
- lib/schema_plus/foreign_keys/active_record/connection_adapters/table_definition.rb
|
274
|
+
- lib/schema_plus/foreign_keys/active_record/migration/command_recorder.rb
|
275
|
+
- lib/schema_plus/foreign_keys/active_record/schema.rb
|
276
|
+
- lib/schema_plus/foreign_keys/middleware/dumper.rb
|
277
|
+
- lib/schema_plus/foreign_keys/middleware/migration.rb
|
278
|
+
- lib/schema_plus/foreign_keys/middleware/model.rb
|
279
|
+
- lib/schema_plus/foreign_keys/middleware/sql.rb
|
280
|
+
- lib/schema_plus/foreign_keys/version.rb
|
281
|
+
- lib/schema_plus/tables.rb
|
282
|
+
- lib/schema_plus/tables/active_record/connection_adapters/abstract_adapter.rb
|
283
|
+
- lib/schema_plus/tables/active_record/connection_adapters/mysql2_adapter.rb
|
284
|
+
- lib/schema_plus/tables/active_record/connection_adapters/postgresql_adapter.rb
|
285
|
+
- lib/schema_plus/tables/active_record/connection_adapters/sqlite3_adapter.rb
|
239
286
|
- lib/schema_plus/version.rb
|
240
|
-
- lib/schema_plus_columns.rb
|
241
|
-
- lib/schema_plus_columns/active_record/connection_adapters/column.rb
|
242
|
-
- lib/schema_plus_columns/middleware/model.rb
|
243
|
-
- lib/schema_plus_db_default.rb
|
244
|
-
- lib/schema_plus_db_default/active_record/attribute.rb
|
245
|
-
- lib/schema_plus_db_default/db_default.rb
|
246
|
-
- lib/schema_plus_db_default/middleware.rb
|
247
|
-
- lib/schema_plus_default_expr.rb
|
248
|
-
- lib/schema_plus_default_expr/active_record/connection_adapters/column.rb
|
249
|
-
- lib/schema_plus_default_expr/active_record/connection_adapters/mysql2_adapter.rb
|
250
|
-
- lib/schema_plus_default_expr/active_record/connection_adapters/postgresql_adapter.rb
|
251
|
-
- lib/schema_plus_default_expr/active_record/connection_adapters/sqlite3_adapter.rb
|
252
|
-
- lib/schema_plus_default_expr/middleware.rb
|
253
|
-
- lib/schema_plus_enums.rb
|
254
|
-
- lib/schema_plus_enums/active_record.rb
|
255
|
-
- lib/schema_plus_enums/middleware.rb
|
256
|
-
- lib/schema_plus_foreign_keys.rb
|
257
|
-
- lib/schema_plus_foreign_keys/active_record/base.rb
|
258
|
-
- lib/schema_plus_foreign_keys/active_record/connection_adapters/abstract_adapter.rb
|
259
|
-
- lib/schema_plus_foreign_keys/active_record/connection_adapters/foreign_key_definition.rb
|
260
|
-
- lib/schema_plus_foreign_keys/active_record/connection_adapters/mysql2_adapter.rb
|
261
|
-
- lib/schema_plus_foreign_keys/active_record/connection_adapters/postgresql_adapter.rb
|
262
|
-
- lib/schema_plus_foreign_keys/active_record/connection_adapters/sqlite3_adapter.rb
|
263
|
-
- lib/schema_plus_foreign_keys/active_record/connection_adapters/table_definition.rb
|
264
|
-
- lib/schema_plus_foreign_keys/active_record/migration/command_recorder.rb
|
265
|
-
- lib/schema_plus_foreign_keys/active_record/schema.rb
|
266
|
-
- lib/schema_plus_foreign_keys/middleware/dumper.rb
|
267
|
-
- lib/schema_plus_foreign_keys/middleware/migration.rb
|
268
|
-
- lib/schema_plus_foreign_keys/middleware/model.rb
|
269
|
-
- lib/schema_plus_foreign_keys/middleware/sql.rb
|
270
|
-
- lib/schema_plus_foreign_keys/version.rb
|
271
|
-
- lib/schema_plus_tables.rb
|
272
|
-
- lib/schema_plus_tables/active_record/connection_adapters/abstract_adapter.rb
|
273
|
-
- lib/schema_plus_tables/active_record/connection_adapters/mysql2_adapter.rb
|
274
|
-
- lib/schema_plus_tables/active_record/connection_adapters/postgresql_adapter.rb
|
275
|
-
- lib/schema_plus_tables/active_record/connection_adapters/sqlite3_adapter.rb
|
276
287
|
- schema_dev.yml
|
277
288
|
- schema_plus.gemspec
|
278
289
|
- spec/schema/auto_schema.rb
|
279
290
|
- spec/schema/core_schema.rb
|
280
|
-
- spec/schema_plus_columns/column_spec.rb
|
281
291
|
- spec/schema_plus_db_default/column_spec.rb
|
282
292
|
- spec/schema_plus_default_expr/column_default_spec.rb
|
283
293
|
- spec/schema_plus_default_expr/migration_spec.rb
|
@@ -323,7 +333,6 @@ summary: Enhances ActiveRecord schema mechanism, including more DRY index creati
|
|
323
333
|
test_files:
|
324
334
|
- spec/schema/auto_schema.rb
|
325
335
|
- spec/schema/core_schema.rb
|
326
|
-
- spec/schema_plus_columns/column_spec.rb
|
327
336
|
- spec/schema_plus_db_default/column_spec.rb
|
328
337
|
- spec/schema_plus_default_expr/column_default_spec.rb
|
329
338
|
- spec/schema_plus_default_expr/migration_spec.rb
|
data/lib/schema_plus_columns.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
module SchemaPlusColumns
|
2
|
-
module ActiveRecord
|
3
|
-
module ConnectionAdapters
|
4
|
-
|
5
|
-
#
|
6
|
-
# SchemaPlusIndex adds several methods to Column
|
7
|
-
#
|
8
|
-
module Column
|
9
|
-
|
10
|
-
attr_writer :model # model assigned set by Middleware::Model::Columns
|
11
|
-
|
12
|
-
# Returns the list of IndexDefinition instances for each index that
|
13
|
-
# refers to this column. Returns an empty list if there are no
|
14
|
-
# such indexes.
|
15
|
-
def indexes
|
16
|
-
@indexes ||= @model.indexes.select{|index| index.columns.include? self.name}
|
17
|
-
end
|
18
|
-
|
19
|
-
# If the column is in a unique index, returns a list of names of other columns in
|
20
|
-
# the index. Returns an empty list if it's a single-column index.
|
21
|
-
# Returns nil if the column is not in a unique index.
|
22
|
-
def unique_scope
|
23
|
-
if index = indexes.select{|i| i.unique}.sort_by{|i| i.columns.size}.first
|
24
|
-
index.columns.reject{|name| name == self.name}
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
# Returns true if the column is in a unique index. See also
|
29
|
-
# unique_scope
|
30
|
-
def unique?
|
31
|
-
indexes.any?{|i| i.unique}
|
32
|
-
end
|
33
|
-
|
34
|
-
# Returns true if the column is in one or more indexes that are
|
35
|
-
# case sensitive. Will raise exception if
|
36
|
-
# IndexDefinition#case_sensitive? isn't defined, i.e. if
|
37
|
-
# schema_plus_pg_indexes hasn't been loaded.
|
38
|
-
def case_sensitive?
|
39
|
-
indexes.any?{|i| i.case_sensitive?}
|
40
|
-
end
|
41
|
-
|
42
|
-
# The default as_jon includes all instance variables. but
|
43
|
-
# @model can't be dumped (it contains circular references)
|
44
|
-
def as_json(options=nil)
|
45
|
-
instance_values.except "model", "adapter"
|
46
|
-
end
|
47
|
-
|
48
|
-
# Returns the circumstance in which the column must have a value:
|
49
|
-
# nil if the column may be null
|
50
|
-
# :save if the column has no default value
|
51
|
-
# :update otherwise
|
52
|
-
def required_on
|
53
|
-
if null
|
54
|
-
nil
|
55
|
-
elsif default.nil?
|
56
|
-
:save
|
57
|
-
else
|
58
|
-
:update
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
data/lib/schema_plus_enums.rb
DELETED
data/lib/schema_plus_tables.rb
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
require 'schema_monkey'
|
2
|
-
|
3
|
-
require_relative 'schema_plus_tables/active_record/connection_adapters/abstract_adapter'
|
4
|
-
|
5
|
-
module SchemaPlusTables
|
6
|
-
module ActiveRecord
|
7
|
-
module ConnectionAdapters
|
8
|
-
autoload :Mysql2Adapter, 'schema_plus_tables/active_record/connection_adapters/mysql2_adapter'
|
9
|
-
autoload :PostgresqlAdapter, 'schema_plus_tables/active_record/connection_adapters/postgresql_adapter'
|
10
|
-
autoload :Sqlite3Adapter, 'schema_plus_tables/active_record/connection_adapters/sqlite3_adapter'
|
11
|
-
end
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
SchemaMonkey.register(SchemaPlusTables)
|
@@ -1,156 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "Column" do
|
4
|
-
|
5
|
-
before(:all) do
|
6
|
-
class User < ::ActiveRecord::Base ; end
|
7
|
-
end
|
8
|
-
|
9
|
-
let(:migration) { ::ActiveRecord::Migration }
|
10
|
-
|
11
|
-
context "JSON serialization" do
|
12
|
-
before(:each) do
|
13
|
-
create_table(User, :login => { :index => true})
|
14
|
-
@login = User.columns.find{|column| column.name == "login"}
|
15
|
-
end
|
16
|
-
it "works properly" do
|
17
|
-
type = case
|
18
|
-
when SchemaDev::Rspec::Helpers.mysql?
|
19
|
-
{ "sql_type" => "varchar(255)" }
|
20
|
-
when SchemaDev::Rspec::Helpers.postgresql?
|
21
|
-
{ "sql_type" => "character varying" }
|
22
|
-
when SchemaDev::Rspec::Helpers.sqlite3?
|
23
|
-
{ "sql_type" => "varchar" }
|
24
|
-
end
|
25
|
-
expect(JSON.parse(@login.to_json)).to include(type.merge("name" => "login"))
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
context "regarding indexes" do
|
30
|
-
|
31
|
-
context "if not unique" do
|
32
|
-
|
33
|
-
before(:each) do
|
34
|
-
create_table(User, :login => { :index => true})
|
35
|
-
@login = User.columns.find{|column| column.name == "login"}
|
36
|
-
end
|
37
|
-
|
38
|
-
it "should report not unique" do
|
39
|
-
expect(@login).not_to be_unique
|
40
|
-
end
|
41
|
-
|
42
|
-
it "should report nil unique scope" do
|
43
|
-
create_table(User, :login => { :index => true})
|
44
|
-
expect(@login.unique_scope).to be_nil
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
context "if unique single column" do
|
49
|
-
before(:each) do
|
50
|
-
create_table(User, :login => { :index => :unique})
|
51
|
-
@login = User.columns.find{|column| column.name == "login"}
|
52
|
-
end
|
53
|
-
|
54
|
-
it "should report unique" do
|
55
|
-
expect(@login).to be_unique
|
56
|
-
end
|
57
|
-
|
58
|
-
it "should report an empty unique scope" do
|
59
|
-
expect(@login.unique_scope).to eq([])
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
context "if unique multicolumn" do
|
64
|
-
|
65
|
-
before(:each) do
|
66
|
-
create_table(User, :first => {}, :middle => {}, :last => { :index => {:with => [:first, :middle], :unique => true}})
|
67
|
-
@first = User.columns.find{|column| column.name == "first"}
|
68
|
-
@middle = User.columns.find{|column| column.name == "middle"}
|
69
|
-
@last = User.columns.find{|column| column.name == "last"}
|
70
|
-
end
|
71
|
-
|
72
|
-
it "should report unique for each" do
|
73
|
-
expect(@first).to be_unique
|
74
|
-
expect(@middle).to be_unique
|
75
|
-
expect(@last).to be_unique
|
76
|
-
end
|
77
|
-
|
78
|
-
it "should report unique scope for each" do
|
79
|
-
expect(@first.unique_scope).to match_array(%W[middle last])
|
80
|
-
expect(@middle.unique_scope).to match_array(%W[first last])
|
81
|
-
expect(@last.unique_scope).to match_array(%W[first middle])
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
context "with case insensitive" do
|
86
|
-
before(:each) do
|
87
|
-
create_table(User, :login => { :index => {}})
|
88
|
-
User.reset_column_information
|
89
|
-
@column = User.columns.find(&its.name == "login")
|
90
|
-
end
|
91
|
-
|
92
|
-
context "index", :mysql => :skip do
|
93
|
-
|
94
|
-
it "reports column as case insensitive" do
|
95
|
-
allow(User.indexes.first).to receive(:case_sensitive?).and_return(false);
|
96
|
-
expect(@column).not_to be_case_sensitive
|
97
|
-
end
|
98
|
-
end
|
99
|
-
|
100
|
-
context "database", :mysql => :only do
|
101
|
-
|
102
|
-
# make sure we haven't broken mysql's method
|
103
|
-
it "reports column as case insensitive" do
|
104
|
-
allow(migration).to receive(:collation).and_return("utf8_unicode_ci") # mysql determines case insensitivity its own way
|
105
|
-
expect(@column).not_to be_case_sensitive
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
end
|
111
|
-
|
112
|
-
context "regarding when it requires a value" do
|
113
|
-
|
114
|
-
it "not required if the column can be null" do
|
115
|
-
create_table(User, :login => { :null => true})
|
116
|
-
expect(User.columns.find{|column| column.name == "login"}.required_on).to be_nil
|
117
|
-
end
|
118
|
-
|
119
|
-
it "must have a value on :save if there's no default" do
|
120
|
-
create_table(User, :login => { :null => false })
|
121
|
-
expect(User.columns.find{|column| column.name == "login"}.required_on).to eq(:save)
|
122
|
-
end
|
123
|
-
|
124
|
-
it "must have a value on :update if there's default" do
|
125
|
-
create_table(User, :login => { :null => false, :default => "foo" })
|
126
|
-
expect(User.columns.find{|column| column.name == "login"}.required_on).to eq(:update)
|
127
|
-
end
|
128
|
-
|
129
|
-
end
|
130
|
-
|
131
|
-
context "Postgresql array", :postgresql => :only do
|
132
|
-
|
133
|
-
before(:each) do
|
134
|
-
create_table(User, :alpha => { :default => [], :array => true })
|
135
|
-
end
|
136
|
-
|
137
|
-
it "respects array: true" do
|
138
|
-
column = User.columns.find(&its.name == "alpha")
|
139
|
-
expect(column.array).to be_truthy
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
protected
|
144
|
-
|
145
|
-
def create_table(model, columns_with_options)
|
146
|
-
migration.suppress_messages do
|
147
|
-
migration.create_table model.table_name, :force => true do |t|
|
148
|
-
columns_with_options.each_pair do |column, options|
|
149
|
-
t.send :string, column, options
|
150
|
-
end
|
151
|
-
end
|
152
|
-
model.reset_column_information
|
153
|
-
end
|
154
|
-
end
|
155
|
-
|
156
|
-
end
|