Skip to content

Commit 715f3d4

Browse files
committed
Care about constraint alias of add_constraint
1 parent acfa8dc commit 715f3d4

File tree

2 files changed

+50
-20
lines changed

2 files changed

+50
-20
lines changed

lib/rubocop/cop/sequel/not_valid_constraint.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@ module Sequel
66
# Constraint created without not_valid option
77
class NotValidConstraint < Base
88
MSG = 'Prefer creating new constraint with the `not_valid: true` option.'
9-
RESTRICT_ON_SEND = %i[add_foreign_key add_constraint].freeze
9+
RESTRICT_ON_SEND = %i[add_foreign_key constraint add_constraint].freeze
1010

1111
def_node_matcher :add_constraint_without_not_valid?, <<-MATCHER
12-
(send _ {:add_foreign_key :add_constraint} $...)
12+
(send _ {:add_foreign_key :constraint :add_constraint} $...)
1313
MATCHER
1414

1515
def on_send(node)

spec/rubocop/cop/sequel/not_valid_constraint_spec.rb

Lines changed: 48 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,30 +5,60 @@
55
describe RuboCop::Cop::Sequel::NotValidConstraint do
66
subject(:cop) { described_class.new }
77

8-
it 'registers an offense when add_constraint used without valid option' do
9-
offenses = inspect_source(<<~RUBY)
10-
add_constraint :not_valid, Sequel.lit("jsonb_typeof(column) = 'object'")
11-
add_constraint({name: "not_valid"}, Sequel.lit("jsonb_typeof(column) = 'object'"))
12-
RUBY
8+
context 'when add_constraint used' do
9+
it 'registers an offense when used without `not_valid: true` option' do
10+
offenses = inspect_source(<<~RUBY)
11+
add_constraint :not_valid, Sequel.lit("jsonb_typeof(column) = 'object'")
12+
add_constraint({name: "not_valid"}, Sequel.lit("jsonb_typeof(column) = 'object'"))
13+
RUBY
1314

14-
expect(offenses.size).to eq(2)
15+
expect(offenses.size).to eq(2)
16+
end
17+
18+
it 'does not register an offense when using `not_valid: true` option' do
19+
offenses = inspect_source(<<~RUBY)
20+
add_constraint({name: "name", not_valid: true }, Sequel.lit("jsonb_typeof(column) = 'object'"))
21+
RUBY
22+
23+
expect(offenses.size).to eq(0)
24+
end
1525
end
1626

17-
it 'registers an offense when add_foregn_key used without valid option' do
18-
offenses = inspect_source(<<~RUBY)
19-
add_foreign_key(:not_valid, :table)
20-
add_foreign_key(:not_valid, :table, name: "not_valid")
21-
RUBY
27+
context 'when constraint used' do
28+
it 'registers an offense when used without `not_valid: true` option' do
29+
offenses = inspect_source(<<~RUBY)
30+
constraint :not_valid, Sequel.lit("jsonb_typeof(column) = 'object'")
31+
constraint({name: "not_valid"}, Sequel.lit("jsonb_typeof(column) = 'object'"))
32+
RUBY
33+
34+
expect(offenses.size).to eq(2)
35+
end
2236

23-
expect(offenses.size).to eq(2)
37+
it 'does not register an offense when using `not_valid: true` option' do
38+
offenses = inspect_source(<<~RUBY)
39+
constraint({name: "name", not_valid: true }, Sequel.lit("jsonb_typeof(column) = 'object'"))
40+
RUBY
41+
42+
expect(offenses.size).to eq(0)
43+
end
2444
end
2545

26-
it 'does not register an offense when using not valid option' do
27-
offenses = inspect_source(<<~RUBY)
28-
add_constraint({name: "name", not_valid: true }, Sequel.lit("jsonb_typeof(column) = 'object'"))
29-
add_foreign_key(:not_valid, :table, name: "not_valid", not_valid: true)
30-
RUBY
46+
context 'when add_foreign_key used' do
47+
it 'registers an offense when used without `not_valid: true` option' do
48+
offenses = inspect_source(<<~RUBY)
49+
add_foreign_key(:not_valid, :table)
50+
add_foreign_key(:not_valid, :table, name: "not_valid")
51+
RUBY
52+
53+
expect(offenses.size).to eq(2)
54+
end
55+
56+
it 'does not register an offense when using `not_valid: true` option' do
57+
offenses = inspect_source(<<~RUBY)
58+
add_foreign_key(:not_valid, :table, name: "not_valid", not_valid: true)
59+
RUBY
3160

32-
expect(offenses.size).to eq(0)
61+
expect(offenses.size).to eq(0)
62+
end
3363
end
3464
end

0 commit comments

Comments
 (0)