From dafd5d13b298a251a19ac378c077674b7d83fcac Mon Sep 17 00:00:00 2001 From: Brady Clark Date: Tue, 28 May 2024 13:02:06 +0800 Subject: [PATCH 1/2] handle rollback when options are included on enum creation --- lib/active_record/postgres_enum/command_recorder.rb | 2 +- spec/active_record/migrations_spec.rb | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/active_record/postgres_enum/command_recorder.rb b/lib/active_record/postgres_enum/command_recorder.rb index 37518cf..32769ad 100644 --- a/lib/active_record/postgres_enum/command_recorder.rb +++ b/lib/active_record/postgres_enum/command_recorder.rb @@ -3,7 +3,7 @@ module ActiveRecord module PostgresEnum module CommandRecorder - def create_enum(name, values) + def create_enum(name, values, _opts) record(:create_enum, [name, values]) end diff --git a/spec/active_record/migrations_spec.rb b/spec/active_record/migrations_spec.rb index ac0de8b..1788070 100644 --- a/spec/active_record/migrations_spec.rb +++ b/spec/active_record/migrations_spec.rb @@ -6,7 +6,7 @@ let(:connection) { ActiveRecord::Base.connection } it "reverts create_enum" do - migration = build_migration { create_enum :genre, %w[drama comedy] } + migration = build_migration { create_enum :genre, %w[drama comedy], if_not_exists: true } migration.migrate(:up) From 6f572cd1d0f8fa7d6c38cdcf3b69da1f49a5c181 Mon Sep 17 00:00:00 2001 From: Brady Clark Date: Tue, 28 May 2024 13:11:01 +0800 Subject: [PATCH 2/2] handle when no options included, additional spec fix spec --- .../postgres_enum/command_recorder.rb | 2 +- spec/active_record/migrations_spec.rb | 16 ++++++++++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/lib/active_record/postgres_enum/command_recorder.rb b/lib/active_record/postgres_enum/command_recorder.rb index 32769ad..2e7fbf8 100644 --- a/lib/active_record/postgres_enum/command_recorder.rb +++ b/lib/active_record/postgres_enum/command_recorder.rb @@ -3,7 +3,7 @@ module ActiveRecord module PostgresEnum module CommandRecorder - def create_enum(name, values, _opts) + def create_enum(name, values, _opts = nil) record(:create_enum, [name, values]) end diff --git a/spec/active_record/migrations_spec.rb b/spec/active_record/migrations_spec.rb index 1788070..4bde5e4 100644 --- a/spec/active_record/migrations_spec.rb +++ b/spec/active_record/migrations_spec.rb @@ -5,8 +5,20 @@ RSpec.describe ActiveRecord::PostgresEnum::CommandRecorder do let(:connection) { ActiveRecord::Base.connection } - it "reverts create_enum" do - migration = build_migration { create_enum :genre, %w[drama comedy], if_not_exists: true } + it "reverts create_enum with no options" do + migration = build_migration { create_enum :genre, %w[drama comedy] } + + migration.migrate(:up) + + expect(connection.enum_types[:genre]).to eq %w[drama comedy] + + migration.migrate(:down) + + expect(connection.enum_types[:genre]).to be_nil + end + + it "reverts create_enum with options" do + migration = build_migration { create_enum :genre, %w[drama comedy], force: true, if_not_exists: true } migration.migrate(:up)