Skip to content

Commit 9c624ba

Browse files
committed
no-jira: raise ArgumentError if enum limit: is not nil or Symbol
1 parent a13fb87 commit 9c624ba

File tree

2 files changed

+28
-5
lines changed

2 files changed

+28
-5
lines changed

lib/declare_schema/model/field_spec.rb

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,8 @@ def initialize(model, name, type, position: 0, **options)
7777
@type = :integer
7878
@options[:limit] = 8
7979
when :enum
80+
@options[:default].nil? || @options[:default].is_a?(Symbol) or
81+
raise ArgumentError, "enum default: must be nil or a Symbol; got #{@options[:default].inspect}"
8082
@options[:limit].is_a?(Array) && @options[:limit].size >= 1 && @options[:limit].all? { |value| value.is_a?(Symbol) } or
8183
raise ArgumentError, "enum limit: must be an array of 1 or more Symbols; got #{@options[:limit].inspect}"
8284
end

spec/lib/declare_schema/field_spec_spec.rb

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -127,11 +127,32 @@
127127
end
128128
end
129129

130-
it 'raises ArgumentError if any of the limit values are not Symbols' do
131-
[['first', 'second', 'third'], [1, 2, 3], nil, []].each do |limit|
132-
expect do
133-
described_class.new(model, :status, :enum, limit: limit, null: false, position: 2)
134-
end.to raise_exception(ArgumentError, /enum limit: must be an array of 1 or more Symbols; got #{Regexp.escape(limit.inspect)}/)
130+
describe 'default' do
131+
it 'allows default of nil or a Symbol' do
132+
[nil, :first].each do |default|
133+
expect do
134+
subject = described_class.new(model, :status, :enum, limit: [:first, :second, :third], default: default, null: false, position: 2)
135+
expect(subject.default).to eq(default)
136+
end.to_not raise_exception
137+
end
138+
end
139+
140+
it 'raises ArgumentError if default is not nil or a Symbol' do
141+
["first", 1].each do |default|
142+
expect do
143+
described_class.new(model, :status, :enum, limit: [:first, :second, :third], default: default, null: false, position: 2)
144+
end.to raise_exception(ArgumentError, /enum default: must be nil or a Symbol; got #{Regexp.escape(default.inspect)}/)
145+
end
146+
end
147+
end
148+
149+
describe 'limit' do
150+
it 'raises ArgumentError if any of the limit values are not Symbols' do
151+
[['first', 'second', 'third'], [1, 2, 3], nil, []].each do |limit|
152+
expect do
153+
described_class.new(model, :status, :enum, limit: limit, null: false, position: 2)
154+
end.to raise_exception(ArgumentError, /enum limit: must be an array of 1 or more Symbols; got #{Regexp.escape(limit.inspect)}/)
155+
end
135156
end
136157
end
137158
end

0 commit comments

Comments
 (0)