Skip to content

Commit bdb6661

Browse files
committed
User class checks: Use duck typing
If `Alchemy.user_class` is `nil`, which it is in case of an invalid configuration, it's not a class, and we can't use the `<` operator. Let's use duck typing instead.
1 parent 192921b commit bdb6661

3 files changed

Lines changed: 12 additions & 18 deletions

File tree

app/controllers/alchemy/admin/base_controller.rb

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -80,13 +80,13 @@ def show_error_notice(error)
8080
end
8181

8282
def set_stamper
83-
if Alchemy.user_class < ActiveRecord::Base
83+
if Alchemy.user_class.respond_to?(:stamper=)
8484
Alchemy.user_class.stamper = current_alchemy_user
8585
end
8686
end
8787

8888
def reset_stamper
89-
if Alchemy.user_class < ActiveRecord::Base
89+
if Alchemy.user_class.respond_to?(:reset_stamper)
9090
Alchemy.user_class.reset_stamper
9191
end
9292
end

app/models/alchemy/folded_page.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ class FoldedPage < BaseRecord
1616
belongs_to :user, inverse_of: :folded_pages, class_name: Alchemy.user_class_name
1717

1818
def self.folded_for_user(user)
19-
return none unless Alchemy.user_class < ActiveRecord::Base
19+
return none unless Alchemy.user_class.respond_to?(:where)
2020

2121
where(user: user, folded: true)
2222
end

spec/models/alchemy/page_spec.rb

Lines changed: 9 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1213,25 +1213,19 @@ module Alchemy
12131213
end
12141214
end
12151215

1216-
context "with user is a active record model" do
1217-
before do
1218-
allow(Alchemy.user_class).to receive(:<).and_return(true)
1216+
context "if page is folded" do
1217+
let!(:folded_page) do
1218+
Alchemy::FoldedPage.create!(page: page, user: user, folded: true)
12191219
end
12201220

1221-
context "if page is folded" do
1222-
let!(:folded_page) do
1223-
Alchemy::FoldedPage.create!(page: page, user: user, folded: true)
1224-
end
1225-
1226-
it "should return true" do
1227-
is_expected.to eq(true)
1228-
end
1221+
it "should return true" do
1222+
is_expected.to eq(true)
12291223
end
1224+
end
12301225

1231-
context "if page is not folded" do
1232-
it "should return false" do
1233-
is_expected.to eq(false)
1234-
end
1226+
context "if page is not folded" do
1227+
it "should return false" do
1228+
is_expected.to eq(false)
12351229
end
12361230
end
12371231
end

0 commit comments

Comments
 (0)