Skip to content

Commit 1133dcd

Browse files
Earlopainsmaboshe
authored andcommitted
Fix Rails 7.2/8.0 enum deprecations
> DEPRECATION WARNING: Defining enums with keyword arguments is deprecated and will be removed in Rails 8.0. Positional arguments should be used instead: > > enum :status, {:queued=>0, :started=>1, :finished=>2} The modern syntax was already introduced in 7.0
1 parent 2073d06 commit 1133dcd

File tree

1 file changed

+14
-12
lines changed

1 file changed

+14
-12
lines changed

spec/acceptance/enum_traits_spec.rb

+14-12
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,17 @@
11
describe "enum traits" do
2+
def define_model_with_enum(class_name, field, values)
3+
define_model(class_name, status: :integer) do
4+
if ActiveRecord::VERSION::STRING >= "7.0"
5+
enum field, values
6+
else
7+
enum field => values
8+
end
9+
end
10+
end
11+
212
context "when automatically_define_enum_traits is true" do
313
it "builds traits automatically for model enum field" do
4-
define_model("Task", status: :integer) do
5-
enum status: {queued: 0, started: 1, finished: 2}
6-
end
14+
define_model_with_enum("Task", :status, {queued: 0, started: 1, finished: 2})
715

816
FactoryBot.define do
917
factory :task
@@ -19,9 +27,7 @@
1927
end
2028

2129
it "prefers user defined traits over automatically built traits" do
22-
define_model("Task", status: :integer) do
23-
enum status: {queued: 0, started: 1, finished: 2}
24-
end
30+
define_model_with_enum("Task", :status, {queued: 0, started: 1, finished: 2})
2531

2632
FactoryBot.define do
2733
factory :task do
@@ -118,9 +124,7 @@ def each(&block)
118124
context "when automatically_define_enum_traits is false" do
119125
it "raises an error for undefined traits" do
120126
with_temporary_assignment(FactoryBot, :automatically_define_enum_traits, false) do
121-
define_model("Task", status: :integer) do
122-
enum status: {queued: 0, started: 1, finished: 2}
123-
end
127+
define_model_with_enum("Task", :status, {queued: 0, started: 1, finished: 2})
124128

125129
FactoryBot.define do
126130
factory :task
@@ -138,9 +142,7 @@ def each(&block)
138142

139143
it "builds traits for each enumerated value when traits_for_enum are specified" do
140144
with_temporary_assignment(FactoryBot, :automatically_define_enum_traits, false) do
141-
define_model("Task", status: :integer) do
142-
enum status: {queued: 0, started: 1, finished: 2}
143-
end
145+
define_model_with_enum("Task", :status, {queued: 0, started: 1, finished: 2})
144146

145147
FactoryBot.define do
146148
factory :task do

0 commit comments

Comments
 (0)