schema_plus 1.5.2 → 1.5.3

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.
@@ -46,13 +46,13 @@ describe "with multiple schemas" do
46
46
 
47
47
  it "should not find indexes in other schema" do
48
48
  User.reset_column_information
49
- User.indexes.should be_empty
49
+ expect(User.indexes).to be_empty
50
50
  end
51
51
 
52
52
  it "should find index in current schema" do
53
53
  connection.execute 'CREATE INDEX index_users_on_login ON users (login)'
54
54
  User.reset_column_information
55
- User.indexes.map(&:name).should == ['index_users_on_login']
55
+ expect(User.indexes.map(&:name)).to eq(['index_users_on_login'])
56
56
  end
57
57
  end
58
58
 
@@ -72,12 +72,12 @@ describe "with multiple schemas" do
72
72
  end
73
73
 
74
74
  it "should not find views in other schema" do
75
- connection.views.should be_empty
75
+ expect(connection.views).to be_empty
76
76
  end
77
77
 
78
78
  it "should find views in this schema" do
79
79
  connection.execute 'CREATE VIEW myview AS SELECT * FROM users'
80
- connection.views.should == ['myview']
80
+ expect(connection.views).to eq(['myview'])
81
81
  end
82
82
  end
83
83
 
@@ -106,9 +106,9 @@ describe "with multiple schemas" do
106
106
  t.integer :user_id, :foreign_key => false
107
107
  end
108
108
  Comment.reset_column_information
109
- Comment.foreign_keys.length.should == 0
109
+ expect(Comment.foreign_keys.length).to eq(0)
110
110
  User.reset_column_information
111
- User.reverse_foreign_keys.length.should == 0
111
+ expect(User.reverse_foreign_keys.length).to eq(0)
112
112
  end
113
113
 
114
114
  it "should find foreign keys in this schema" do
@@ -116,9 +116,9 @@ describe "with multiple schemas" do
116
116
  t.integer :user_id, :foreign_key => true
117
117
  end
118
118
  Comment.reset_column_information
119
- Comment.foreign_keys.map(&:column_names).flatten.should == ["user_id"]
119
+ expect(Comment.foreign_keys.map(&:column_names).flatten).to eq(["user_id"])
120
120
  User.reset_column_information
121
- User.reverse_foreign_keys.map(&:column_names).flatten.should == ["user_id"]
121
+ expect(User.reverse_foreign_keys.map(&:column_names).flatten).to eq(["user_id"])
122
122
  end
123
123
 
124
124
  end
@@ -157,25 +157,25 @@ describe "with multiple schemas" do
157
157
  end
158
158
 
159
159
  it "should find foreign keys" do
160
- Member.foreign_keys.should_not be_empty
160
+ expect(Member.foreign_keys).not_to be_empty
161
161
  end
162
162
 
163
163
  it "should find reverse foreign keys" do
164
- Group.reverse_foreign_keys.should_not be_empty
164
+ expect(Group.reverse_foreign_keys).not_to be_empty
165
165
  end
166
166
 
167
167
  it "should reference table in same schema" do
168
- Member.foreign_keys.map(&:references_table_name).should include "schema_plus_test2.groups"
168
+ expect(Member.foreign_keys.map(&:references_table_name)).to include "schema_plus_test2.groups"
169
169
  end
170
170
 
171
171
  it "should reference table in default schema" do
172
- Member.foreign_keys.map(&:references_table_name).should include "items"
172
+ expect(Member.foreign_keys.map(&:references_table_name)).to include "items"
173
173
  end unless SchemaPlusHelpers.mysql?
174
174
 
175
175
  it "should include the schema in the constraint name" do
176
176
  expected_names = ["fk_schema_plus_test2_members_group_id"]
177
177
  expected_names << "fk_schema_plus_test2_members_item_id" unless SchemaPlusHelpers.mysql?
178
- Member.foreign_keys.map(&:name).should =~ expected_names
178
+ expect(Member.foreign_keys.map(&:name).sort).to match_array(expected_names.sort)
179
179
  end
180
180
  end
181
181
 
@@ -199,14 +199,14 @@ describe "with multiple schemas" do
199
199
  end
200
200
 
201
201
  before(:each) do
202
- connection.stub :adapter_name => 'PostGIS'
202
+ allow(connection).to receive(:adapter_name).and_return('PostGIS')
203
203
  end
204
204
 
205
205
  it "should hide views in postgis schema" do
206
206
  begin
207
207
  connection.create_view "postgis.hidden", "select 1", :force => true
208
208
  connection.create_view :myview, "select 2", :force => true
209
- connection.views.should == ["myview"]
209
+ expect(connection.views).to eq(["myview"])
210
210
  ensure
211
211
  connection.execute 'DROP VIEW postgis.hidden' rescue nil
212
212
  connection.execute 'DROP VIEW myview' rescue nil
@@ -49,39 +49,39 @@ describe "Schema dump" do
49
49
 
50
50
  it "should include foreign_key definition" do
51
51
  with_foreign_key Post, :user_id, :users, :id do
52
- dump_posts.should match(to_regexp(%q{t.foreign_key ["user_id"], "users", ["id"]}))
52
+ expect(dump_posts).to match(to_regexp(%q{t.foreign_key ["user_id"], "users", ["id"]}))
53
53
  end
54
54
  end
55
55
 
56
56
  it "should include foreign_key name" do
57
57
  with_foreign_key Post, :user_id, :users, :id, :name => "yippee" do
58
- dump_posts.should match /foreign_key.*user_id.*users.*id.*:name => "yippee"/
58
+ expect(dump_posts).to match /foreign_key.*user_id.*users.*id.*:name => "yippee"/
59
59
  end
60
60
  end
61
61
 
62
62
  it "should sort foreign_key definitions" do
63
63
  with_foreign_keys Comment, [ [ :post_id, :posts, :id ], [ :commenter_id, :users, :id ]] do
64
- dump_schema.should match(/foreign_key.+commenter_id.+foreign_key.+post_id/m)
64
+ expect(dump_schema).to match(/foreign_key.+commenter_id.+foreign_key.+post_id/m)
65
65
  end
66
66
  end
67
67
 
68
68
  context "with constraint dependencies" do
69
69
  it "should sort in Posts => Comments direction" do
70
70
  with_foreign_key Comment, :post_id, :posts, :id do
71
- dump_schema.should match(%r{create_table "posts".*create_table "comments"}m)
71
+ expect(dump_schema).to match(%r{create_table "posts".*create_table "comments"}m)
72
72
  end
73
73
  end
74
74
  it "should sort in Comments => Posts direction" do
75
75
  with_foreign_key Post, :first_comment_id, :comments, :id do
76
- dump_schema.should match(%r{create_table "comments".*create_table "posts"}m)
76
+ expect(dump_schema).to match(%r{create_table "comments".*create_table "posts"}m)
77
77
  end
78
78
  end
79
79
 
80
80
  it "should handle regexp in ignore_tables" do
81
81
  with_foreign_key Comment, :post_id, :posts, :id do
82
82
  dump = dump_schema(:ignore => /post/)
83
- dump.should match /create_table "comments"/
84
- dump.should_not match /create_table "posts"/
83
+ expect(dump).to match /create_table "comments"/
84
+ expect(dump).not_to match /create_table "posts"/
85
85
  end
86
86
  end
87
87
 
@@ -91,19 +91,19 @@ describe "Schema dump" do
91
91
  if SchemaPlusHelpers.postgresql?
92
92
  it "should dump the default hash expr as now()" do
93
93
  with_additional_column Post, :posted_at, :datetime, :default => :now do
94
- dump_posts.should match(%r{t\.datetime\s+"posted_at",\s*(?:default:|:default =>)\s*\{\s*(?:expr:|:expr\s*=>)\s*"now\(\)"\s*\}})
94
+ expect(dump_posts).to match(%r{t\.datetime\s+"posted_at",\s*(?:default:|:default =>)\s*\{\s*(?:expr:|:expr\s*=>)\s*"now\(\)"\s*\}})
95
95
  end
96
96
  end
97
97
 
98
98
  it "should dump the default hash expr as CURRENT_TIMESTAMP" do
99
99
  with_additional_column Post, :posted_at, :datetime, :default => {:expr => 'date \'2001-09-28\''} do
100
- dump_posts.should match(%r{t\.datetime\s+"posted_at",\s*(?:default:|:default =>)\s*'2001-09-28 00:00:00'})
100
+ expect(dump_posts).to match(%r{t\.datetime\s+"posted_at",\s*(?:default:|:default =>)\s*'2001-09-28 00:00:00'})
101
101
  end
102
102
  end
103
103
 
104
104
  it "can dump a complex default expression" do
105
105
  with_additional_column Post, :name, :string, :default => {:expr => 'substring(random()::text from 3 for 6)'} do
106
- dump_posts.should match(%r{t\.string\s+"name",\s*(?:default:|:default\s*=>)\s*{\s*(?:expr:|:expr\s*=>)\s*"\\"substring\\"\(\(random\(\)\)::text, 3, 6\)"\s*}})
106
+ expect(dump_posts).to match(%r{t\.string\s+"name",\s*(?:default:|:default\s*=>)\s*{\s*(?:expr:|:expr\s*=>)\s*"\\"substring\\"\(\(random\(\)\)::text, 3, 6\)"\s*}})
107
107
  end
108
108
  end
109
109
  end
@@ -111,19 +111,19 @@ describe "Schema dump" do
111
111
  if SchemaPlusHelpers.sqlite3?
112
112
  it "should dump the default hash expr as now" do
113
113
  with_additional_column Post, :posted_at, :datetime, :default => :now do
114
- dump_posts.should match(%r{t\.datetime\s+"posted_at",\s*(?:default:|:default =>)\s*\{\s*(?:expr:|:expr =>)\s*"\(DATETIME\('now'\)\)"\s*\}})
114
+ expect(dump_posts).to match(%r{t\.datetime\s+"posted_at",\s*(?:default:|:default =>)\s*\{\s*(?:expr:|:expr =>)\s*"\(DATETIME\('now'\)\)"\s*\}})
115
115
  end
116
116
  end
117
117
 
118
118
  it "should dump the default hash expr string as now" do
119
119
  with_additional_column Post, :posted_at, :datetime, :default => { :expr => "(DATETIME('now'))" } do
120
- dump_posts.should match(%r{t\.datetime\s+"posted_at",\s*(?:default:|:default =>)\s*\{\s*(?:expr:|:expr =>)\s*"\(DATETIME\('now'\)\)"\s*\}})
120
+ expect(dump_posts).to match(%r{t\.datetime\s+"posted_at",\s*(?:default:|:default =>)\s*\{\s*(?:expr:|:expr =>)\s*"\(DATETIME\('now'\)\)"\s*\}})
121
121
  end
122
122
  end
123
123
 
124
124
  it "should dump the default value normally" do
125
125
  with_additional_column Post, :posted_at, :string, :default => "now" do
126
- dump_posts.should match(%r{t\.string\s*"posted_at",\s*(?:default:|:default =>)\s*"now"})
126
+ expect(dump_posts).to match(%r{t\.string\s*"posted_at",\s*(?:default:|:default =>)\s*"now"})
127
127
  end
128
128
  end
129
129
  end
@@ -134,37 +134,37 @@ describe "Schema dump" do
134
134
  ActiveRecord::Migration.suppress_messages do
135
135
  ActiveRecord::Migration.change_column_default :posts, :string_no_default, nil
136
136
  end
137
- dump_posts.should match(%r{t\.string\s+"string_no_default"\s*$})
137
+ expect(dump_posts).to match(%r{t\.string\s+"string_no_default"\s*$})
138
138
  end
139
139
 
140
140
  it "should include foreign_key options" do
141
141
  with_foreign_key Post, :user_id, :users, :id, :on_update => :cascade, :on_delete => :set_null do
142
- dump_posts.should match(to_regexp(%q{t.foreign_key ["user_id"], "users", ["id"], :on_update => :cascade, :on_delete => :set_null}))
142
+ expect(dump_posts).to match(to_regexp(%q{t.foreign_key ["user_id"], "users", ["id"], :on_update => :cascade, :on_delete => :set_null}))
143
143
  end
144
144
  end
145
145
 
146
146
  it "should include index definition" do
147
147
  with_index Post, :user_id do
148
- dump_posts.should match(to_regexp(%q{t.index ["user_id"]}))
148
+ expect(dump_posts).to match(to_regexp(%q{t.index ["user_id"]}))
149
149
  end
150
150
  end
151
151
 
152
152
  it "should include index name" do
153
153
  with_index Post, :user_id, :name => "custom_name" do
154
- dump_posts.should match(to_regexp(%q{t.index ["user_id"], :name => "custom_name"}))
154
+ expect(dump_posts).to match(to_regexp(%q{t.index ["user_id"], :name => "custom_name"}))
155
155
  end
156
156
  end
157
157
 
158
158
  it "should define unique index" do
159
159
  with_index Post, :user_id, :name => "posts_user_id_index", :unique => true do
160
- dump_posts.should match(to_regexp(%q{t.index ["user_id"], :name => "posts_user_id_index", :unique => true}))
160
+ expect(dump_posts).to match(to_regexp(%q{t.index ["user_id"], :name => "posts_user_id_index", :unique => true}))
161
161
  end
162
162
  end
163
163
 
164
164
  it "should sort indexes" do
165
165
  with_index Post, :user_id do
166
166
  with_index Post, :short_id do
167
- dump_posts.should match(/on_short_id.+on_user_id/m)
167
+ expect(dump_posts).to match(/on_short_id.+on_user_id/m)
168
168
  end
169
169
  end
170
170
  end
@@ -173,7 +173,7 @@ describe "Schema dump" do
173
173
 
174
174
  it "should include index order" do
175
175
  with_index Post, [:user_id, :first_comment_id, :short_id], :order => { :user_id => :asc, :first_comment_id => :desc } do
176
- dump_posts.should match(%r{t.index \["user_id", "first_comment_id", "short_id"\],.*:order => {"user_id" => :asc, "first_comment_id" => :desc, "short_id" => :asc}})
176
+ expect(dump_posts).to match(%r{t.index \["user_id", "first_comment_id", "short_id"\],.*:order => {"user_id" => :asc, "first_comment_id" => :desc, "short_id" => :asc}})
177
177
  end
178
178
  end
179
179
 
@@ -183,20 +183,20 @@ describe "Schema dump" do
183
183
 
184
184
  it "should define case insensitive index" do
185
185
  with_index Post, [:body, :string_no_default], :case_sensitive => false do
186
- dump_posts.should match(to_regexp(%q{t.index ["body", "string_no_default"], :name => "index_posts_on_body_and_string_no_default", :case_sensitive => false}))
186
+ expect(dump_posts).to match(to_regexp(%q{t.index ["body", "string_no_default"], :name => "index_posts_on_body_and_string_no_default", :case_sensitive => false}))
187
187
  end
188
188
  end
189
189
 
190
190
  it "should define index with type cast" do
191
191
  with_index Post, [:integer_col], :name => "index_with_type_cast", :expression => "LOWER(integer_col::text)" do
192
- dump_posts.should match(to_regexp(%q{t.index :name => "index_with_type_cast", :expression => "lower((integer_col)::text)"}))
192
+ expect(dump_posts).to match(to_regexp(%q{t.index :name => "index_with_type_cast", :expression => "lower((integer_col)::text)"}))
193
193
  end
194
194
  end
195
195
 
196
196
 
197
197
  it "should define case insensitive index with mixed ids and strings" do
198
198
  with_index Post, [:user_id, :str_short, :short_id, :body], :case_sensitive => false do
199
- dump_posts.should match(to_regexp(%q{t.index ["user_id", "str_short", "short_id", "body"], :name => "index_posts_on_user_id_and_str_short_and_short_id_and_body", :case_sensitive => false}))
199
+ expect(dump_posts).to match(to_regexp(%q{t.index ["user_id", "str_short", "short_id", "body"], :name => "index_posts_on_user_id_and_str_short_and_short_id_and_body", :case_sensitive => false}))
200
200
  end
201
201
  end
202
202
 
@@ -204,47 +204,47 @@ describe "Schema dump" do
204
204
  col_name = "#{col_type}_col"
205
205
  it "should define case insensitive index that includes an #{col_type}" do
206
206
  with_index Post, [:user_id, :str_short, col_name, :body], :case_sensitive => false do
207
- dump_posts.should match(to_regexp(%Q!t.index ["user_id", "str_short", "#{col_name}", "body"], :name => "index_posts_on_user_id_and_str_short_and_#{col_name}_and_body", :case_sensitive => false!))
207
+ expect(dump_posts).to match(to_regexp(%Q!t.index ["user_id", "str_short", "#{col_name}", "body"], :name => "index_posts_on_user_id_and_str_short_and_#{col_name}_and_body", :case_sensitive => false!))
208
208
  end
209
209
  end
210
210
  end
211
211
 
212
212
  it "should define conditions" do
213
213
  with_index Post, :user_id, :name => "posts_user_id_index", :conditions => "user_id IS NOT NULL" do
214
- dump_posts.should match(to_regexp(%q{t.index ["user_id"], :name => "posts_user_id_index", :conditions => "(user_id IS NOT NULL)"}))
214
+ expect(dump_posts).to match(to_regexp(%q{t.index ["user_id"], :name => "posts_user_id_index", :conditions => "(user_id IS NOT NULL)"}))
215
215
  end
216
216
  end
217
217
 
218
218
  it "should define expression" do
219
219
  with_index Post, :name => "posts_freaky_index", :expression => "USING hash (least(id, user_id))" do
220
- dump_posts.should match(to_regexp(%q{t.index :name => "posts_freaky_index", :kind => "hash", :expression => "LEAST(id, user_id)"}))
220
+ expect(dump_posts).to match(to_regexp(%q{t.index :name => "posts_freaky_index", :kind => "hash", :expression => "LEAST(id, user_id)"}))
221
221
  end
222
222
  end
223
223
 
224
224
  it "should dump unique: true with expression (Issue #142)" do
225
225
  with_index Post, :name => "posts_user_body_index", :unique => true, :expression => "BTRIM(LOWER(body))" do
226
- dump_posts.should match(%r{#{to_regexp(%q{t.index :name => "posts_user_body_index", :unique => true, :expression => "btrim(lower(body))"})}$})
226
+ expect(dump_posts).to match(%r{#{to_regexp(%q{t.index :name => "posts_user_body_index", :unique => true, :expression => "btrim(lower(body))"})}$})
227
227
  end
228
228
  end
229
229
 
230
230
 
231
231
  it "should not define :case_sensitive => false with non-trivial expression" do
232
232
  with_index Post, :name => "posts_user_body_index", :expression => "BTRIM(LOWER(body))" do
233
- dump_posts.should match(%r{#{to_regexp(%q{t.index :name => "posts_user_body_index", :expression => "btrim(lower(body))"})}$})
233
+ expect(dump_posts).to match(%r{#{to_regexp(%q{t.index :name => "posts_user_body_index", :expression => "btrim(lower(body))"})}$})
234
234
  end
235
235
  end
236
236
 
237
237
 
238
238
  it "should define kind" do
239
239
  with_index Post, :name => "posts_body_index", :expression => "USING hash (body)" do
240
- dump_posts.should match(to_regexp(%q{t.index ["body"], :name => "posts_body_index", :kind => "hash"}))
240
+ expect(dump_posts).to match(to_regexp(%q{t.index ["body"], :name => "posts_body_index", :kind => "hash"}))
241
241
  end
242
242
  end
243
243
 
244
244
  it "should not include index order for non-ordered index types" do
245
245
  with_index Post, :user_id, :kind => :hash do
246
- dump_posts.should match(to_regexp(%q{t.index ["user_id"], :name => "index_posts_on_user_id", :kind => "hash"}))
247
- dump_posts.should_not match(%r{:order})
246
+ expect(dump_posts).to match(to_regexp(%q{t.index ["user_id"], :name => "index_posts_on_user_id", :kind => "hash"}))
247
+ expect(dump_posts).not_to match(%r{:order})
248
248
  end
249
249
  end
250
250
 
@@ -265,11 +265,11 @@ describe "Schema dump" do
265
265
  end
266
266
 
267
267
  it "should dump constraints after the tables they reference" do
268
- dump_schema.should match(%r{create_table "comments".*foreign_key.*\["first_comment_id"\], "comments", \["id"\]}m)
269
- dump_schema.should match(%r{create_table "posts".*foreign_key.*\["first_post_id"\], "posts", \["id"\]}m)
270
- dump_schema.should match(%r{create_table "posts".*foreign_key.*\["post_id"\], "posts", \["id"\]}m)
271
- dump_schema.should match(%r{create_table "users".*foreign_key.*\["commenter_id"\], "users", \["id"\]}m)
272
- dump_schema.should match(%r{create_table "users".*foreign_key.*\["user_id"\], "users", \["id"\]}m)
268
+ expect(dump_schema).to match(%r{create_table "comments".*foreign_key.*\["first_comment_id"\], "comments", \["id"\]}m)
269
+ expect(dump_schema).to match(%r{create_table "posts".*foreign_key.*\["first_post_id"\], "posts", \["id"\]}m)
270
+ expect(dump_schema).to match(%r{create_table "posts".*foreign_key.*\["post_id"\], "posts", \["id"\]}m)
271
+ expect(dump_schema).to match(%r{create_table "users".*foreign_key.*\["commenter_id"\], "users", \["id"\]}m)
272
+ expect(dump_schema).to match(%r{create_table "users".*foreign_key.*\["user_id"\], "users", \["id"\]}m)
273
273
  end
274
274
  end
275
275
  end
data/spec/schema_spec.rb CHANGED
@@ -23,12 +23,12 @@ describe ActiveRecord::Schema do
23
23
  it "should create only explicity added indexes" do
24
24
  do_schema
25
25
  expected = SchemaPlusHelpers.mysql? ? 2 : 1
26
- connection.tables.collect { |table| connection.indexes(table) }.flatten.should have(expected).items
26
+ expect(connection.tables.collect { |table| connection.indexes(table) }.flatten.size).to eq(expected)
27
27
  end
28
28
 
29
29
  it "should create only explicity added foriegn keys" do
30
30
  do_schema
31
- connection.tables.collect { |table| connection.foreign_keys(table) }.flatten.should have(2).items
31
+ expect(connection.tables.collect { |table| connection.foreign_keys(table) }.flatten.size).to eq(2)
32
32
  end
33
33
 
34
34
  end
data/spec/spec_helper.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require 'simplecov'
2
- require 'simplecov-gem-adapter'
2
+ require 'simplecov-gem-profile'
3
3
  SimpleCov.use_merging true
4
4
  SimpleCov.merge_timeout 3600
5
5
  SimpleCov.start "gem"
@@ -3,25 +3,34 @@ module SchemaPlusMatchers
3
3
  class HaveIndex
4
4
 
5
5
  def initialize(expectation, options = {})
6
- set_required_columns(expectation, options)
6
+ set_required_columns(expectation)
7
+ @unique = options.delete(:unique)
8
+ @name = options.delete(:name)
7
9
  end
8
10
 
9
11
  def matches?(model)
10
12
  @model = model
11
- @model.indexes.any? do |index|
12
- index.columns.to_set == @required_columns &&
13
- (@unique ? index.unique : true) &&
14
- (@name ? index.name == @name.to_s : true)
13
+ indexes = @model.indexes.select { |index| index.columns.to_set == @required_columns }
14
+ if indexes.length > 1
15
+ @too_many = indexes.length
16
+ return false
15
17
  end
18
+ index = indexes.first
19
+ return index && (@unique ? index.unique : true) && (@name ? index.name == @name.to_s : true)
16
20
  end
17
21
 
18
- def failure_message_for_should(should_not = false)
19
- invert = should_not ? "not to" : ""
20
- "Expected #{@model.table_name} to #{invert} contain index on #{@required_columns.entries.inspect}"
22
+ def failure_message(should_not = false)
23
+ invert = should_not ? "not to" : "to"
24
+ what = ""
25
+ what += "unique " if @unique
26
+ what += "named '{@name}'" if @name
27
+ msg = "Expected #{@model.table_name} #{invert} contain one #{what}index on #{@required_columns.entries.inspect}"
28
+ msg += "; found #{@too_many} indexes" if @too_many
29
+ msg
21
30
  end
22
31
 
23
- def failure_message_for_should_not
24
- failure_message_for_should(true)
32
+ def failure_message_when_negated
33
+ failure_message(true)
25
34
  end
26
35
 
27
36
  def on(expectation)
@@ -30,10 +39,8 @@ module SchemaPlusMatchers
30
39
  end
31
40
 
32
41
  private
33
- def set_required_columns(expectation, options = {})
42
+ def set_required_columns(expectation)
34
43
  @required_columns = Array(expectation).collect(&:to_s).to_set
35
- @unique = options.delete(:unique)
36
- @name = options.delete(:name)
37
44
  end
38
45
 
39
46
  end
@@ -27,7 +27,7 @@ module SchemaPlusMatchers
27
27
  !@result.empty?
28
28
  end
29
29
 
30
- def failure_message_for_should(should_not = false)
30
+ def failure_message(should_not = false)
31
31
  target_column_names = @column_names.present? ? "(#{@column_names.join(', ')})" : ""
32
32
  destinantion_column_names = @references_table_name ? "#{@references_table_name}(#{@references_column_names.join(', ')})" : "anything"
33
33
  invert = should_not ? 'not' : ''
@@ -41,8 +41,8 @@ module SchemaPlusMatchers
41
41
  msg
42
42
  end
43
43
 
44
- def failure_message_for_should_not
45
- failure_message_for_should(true)
44
+ def failure_message_when_negated
45
+ failure_message(true)
46
46
  end
47
47
 
48
48
  def on(*column_names)
data/spec/views_spec.rb CHANGED
@@ -26,36 +26,36 @@ describe ActiveRecord do
26
26
  end
27
27
 
28
28
  it "should query correctly" do
29
- AOnes.all.collect(&:s).should == %W[one_one one_two]
30
- ABOnes.all.collect(&:s).should == %W[one_one]
29
+ expect(AOnes.all.collect(&:s)).to eq(%W[one_one one_two])
30
+ expect(ABOnes.all.collect(&:s)).to eq(%W[one_one])
31
31
  end
32
32
 
33
33
  it "should instrospect" do
34
34
  # for postgresql, ignore views named pg_*
35
- connection.views.sort.should == %W[a_ones ab_ones]
36
- connection.view_definition('a_ones').should match(%r{^SELECT .*b.*,.*s.* FROM .*items.* WHERE .*a.* = 1}i)
37
- connection.view_definition('ab_ones').should match(%r{^SELECT .*s.* FROM .*a_ones.* WHERE .*b.* = 1}i)
35
+ expect(connection.views.sort).to eq(%W[a_ones ab_ones])
36
+ expect(connection.view_definition('a_ones')).to match(%r{^ ?SELECT .*b.*,.*s.* FROM .*items.* WHERE .*a.* = 1}mi)
37
+ expect(connection.view_definition('ab_ones')).to match(%r{^ ?SELECT .*s.* FROM .*a_ones.* WHERE .*b.* = 1}mi)
38
38
  end
39
39
 
40
40
  it "should not be listed as a table" do
41
- connection.tables.should_not include('a_ones')
42
- connection.tables.should_not include('ab_ones')
41
+ expect(connection.tables).not_to include('a_ones')
42
+ expect(connection.tables).not_to include('ab_ones')
43
43
  end
44
44
 
45
45
 
46
46
  it "should be included in schema dump" do
47
- dump.should match(%r{create_view "a_ones", "SELECT .*b.*,.*s.* FROM .*items.* WHERE .*a.* = 1.*, :force => true}i)
48
- dump.should match(%r{create_view "ab_ones", "SELECT .*s.* FROM .*a_ones.* WHERE .*b.* = 1.*, :force => true}i)
47
+ expect(dump).to match(%r{create_view "a_ones", " ?SELECT .*b.*,.*s.* FROM .*items.* WHERE .*a.* = 1.*, :force => true}mi)
48
+ expect(dump).to match(%r{create_view "ab_ones", " ?SELECT .*s.* FROM .*a_ones.* WHERE .*b.* = 1.*, :force => true}mi)
49
49
  end
50
50
 
51
51
  it "should be included in schema dump in dependency order" do
52
- dump.should match(%r{create_table "items".*create_view "a_ones".*create_view "ab_ones"}m)
52
+ expect(dump).to match(%r{create_table "items".*create_view "a_ones".*create_view "ab_ones"}m)
53
53
  end
54
54
 
55
55
  it "should not be included in schema if listed in ignore_tables" do
56
56
  dump(ignore_tables: /b_/) do |dump|
57
- dump.should match(%r{create_view "a_ones", "SELECT .*b.*,.*s.* FROM .*items.* WHERE .*a.* = 1.*, :force => true}i)
58
- dump.should_not match(%r{"ab_ones"})
57
+ expect(dump).to match(%r{create_view "a_ones", " ?SELECT .*b.*,.*s.* FROM .*items.* WHERE .*a.* = 1.*, :force => true}mi)
58
+ expect(dump).not_to match(%r{"ab_ones"})
59
59
  end
60
60
  end
61
61
 
@@ -69,7 +69,7 @@ describe ActiveRecord do
69
69
  # initialize the test database when testing. this meant that the
70
70
  # test database had views into the development database.
71
71
  db = connection.respond_to?(:current_database)? connection.current_database : ActiveRecord::Base.configurations['schema_plus'][:database]
72
- dump.should_not match(%r{#{connection.quote_table_name(db)}[.]})
72
+ expect(dump).not_to match(%r{#{connection.quote_table_name(db)}[.]})
73
73
  end
74
74
 
75
75
  context "duplicate view creation" do
@@ -91,7 +91,7 @@ describe ActiveRecord do
91
91
 
92
92
  it "should override existing definition if :force true" do
93
93
  migration.create_view('dupe_me', 'SELECT * FROM items WHERE (a=2)', :force => true)
94
- connection.view_definition('dupe_me').should =~ %r{WHERE .*a.*=.*2}i
94
+ expect(connection.view_definition('dupe_me')).to match(%r{WHERE .*a.*=.*2}i)
95
95
  end
96
96
  end
97
97
 
@@ -111,17 +111,17 @@ describe ActiveRecord do
111
111
 
112
112
  it "should introspect WITH CHECK OPTION" do
113
113
  migration.create_view :check, 'SELECT * FROM items WHERE (a=2) WITH CHECK OPTION'
114
- connection.view_definition('check').should match(%r{WITH CASCADED CHECK OPTION$})
114
+ expect(connection.view_definition('check')).to match(%r{WITH CASCADED CHECK OPTION$})
115
115
  end
116
116
 
117
117
  it "should introspect WITH CASCADED CHECK OPTION" do
118
118
  migration.create_view :check, 'SELECT * FROM items WHERE (a=2) WITH CASCADED CHECK OPTION'
119
- connection.view_definition('check').should match(%r{WITH CASCADED CHECK OPTION$})
119
+ expect(connection.view_definition('check')).to match(%r{WITH CASCADED CHECK OPTION$})
120
120
  end
121
121
 
122
122
  it "should introspect WITH LOCAL CHECK OPTION" do
123
123
  migration.create_view :check, 'SELECT * FROM items WHERE (a=2) WITH LOCAL CHECK OPTION'
124
- connection.view_definition('check').should match(%r{WITH LOCAL CHECK OPTION$})
124
+ expect(connection.view_definition('check')).to match(%r{WITH LOCAL CHECK OPTION$})
125
125
  end
126
126
  end
127
127
  end