Skip to content

Commit 3ec2599

Browse files
author
Jon Yurek
committed
Refactor previous into its own matcher
1 parent 6ea7c26 commit 3ec2599

File tree

2 files changed

+27
-22
lines changed

2 files changed

+27
-22
lines changed

spec/paperclip/schema_spec.rb

+13-22
Original file line numberDiff line numberDiff line change
@@ -62,21 +62,17 @@
6262
context "using #attachment with options" do
6363
before do
6464
Dummy.connection.create_table :dummies, force: true do |t|
65-
t.attachment :avatar, default: '1', file_name: { default: 'default' }
65+
t.attachment :avatar, default: 1, file_name: { default: 'default' }
6666
end
6767
end
6868

6969
it "sets defaults on columns" do
7070
defaults_columns = ["avatar_file_name", "avatar_content_type", "avatar_file_size"]
7171
columns = Dummy.columns.select { |e| defaults_columns.include? e.name }
7272

73-
columns.each do |column|
74-
if column.name == 'avatar_file_name'
75-
expect(column.default).to eq('default')
76-
else
77-
expect(column.default.to_i).to eq(1)
78-
end
79-
end
73+
expect(columns).to have_column("avatar_file_name").with_default("default")
74+
expect(columns).to have_column("avatar_content_type").with_default("1")
75+
expect(columns).to have_column("avatar_file_size").with_default(1)
8076
end
8177
end
8278
end
@@ -111,13 +107,9 @@
111107
defaults_columns = ["avatar_file_name", "avatar_content_type", "avatar_file_size"]
112108
columns = Dummy.columns.select { |e| defaults_columns.include? e.name }
113109

114-
columns.each do |column|
115-
if column.name == 'avatar_file_name'
116-
expect(column.default).to eq('default')
117-
else
118-
expect(column.default.to_i).to eq(1)
119-
end
120-
end
110+
expect(columns).to have_column("avatar_file_name").with_default("default")
111+
expect(columns).to have_column("avatar_content_type").with_default("1")
112+
expect(columns).to have_column("avatar_file_size").with_default(1)
121113
end
122114
end
123115

@@ -149,13 +141,12 @@
149141
defaults_columns = ["avatar_file_name", "avatar_content_type", "avatar_file_size", "photo_file_name", "photo_content_type", "photo_file_size"]
150142
columns = Dummy.columns.select { |e| defaults_columns.include? e.name }
151143

152-
columns.each do |column|
153-
if column.name == 'avatar_file_name' || column.name == 'photo_file_name'
154-
expect(column.default).to eq('default')
155-
else
156-
expect(column.default.to_i).to eq(1)
157-
end
158-
end
144+
expect(columns).to have_column("avatar_file_name").with_default("default")
145+
expect(columns).to have_column("avatar_content_type").with_default("1")
146+
expect(columns).to have_column("avatar_file_size").with_default(1)
147+
expect(columns).to have_column("photo_file_name").with_default("default")
148+
expect(columns).to have_column("photo_content_type").with_default("1")
149+
expect(columns).to have_column("photo_file_size").with_default(1)
159150
end
160151
end
161152

spec/support/matchers/have_column.rb

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
RSpec::Matchers.define :have_column do |column_name|
2+
chain :with_default do |default|
3+
@default = default
4+
end
5+
6+
match do |columns|
7+
column = columns.detect{|column| column.name == column_name }
8+
column && column.default == @default
9+
end
10+
11+
failure_message_for_should do |columns|
12+
"expected to find #{column_name}, default #{@default} in #{columns.map{|column| [column.name, column.default] }}"
13+
end
14+
end

0 commit comments

Comments
 (0)