Skip to content

Commit

Permalink
Rescue Likeable.setup NameError on ::User
Browse files Browse the repository at this point in the history
  • Loading branch information
bemurphy committed Nov 12, 2011
1 parent d76bc37 commit 10b1a17
Show file tree
Hide file tree
Showing 2 changed files with 54 additions and 31 deletions.
10 changes: 7 additions & 3 deletions lib/likeable/module_methods.rb
Expand Up @@ -84,7 +84,11 @@ def find_one=(find_one)
end

def user_class
@user_class ||= ::User
begin
@user_class ||= ::User
rescue NameError
nil
end
end

def user_class=(user)
Expand Down Expand Up @@ -120,7 +124,7 @@ def make_classes_likeable
end

def give_users_like_ability
include_in_class user_class, ::Likeable::UserMethods
include_in_class user_class, ::Likeable::UserMethods if user_class
end

def setup(&block)
Expand All @@ -130,4 +134,4 @@ def setup(&block)
true
end
end
end
end
75 changes: 47 additions & 28 deletions spec/likeable/setup_spec.rb
Expand Up @@ -22,45 +22,64 @@ def id
end

describe Likeable do
before(:each) do
reload_user!
Likeable.user_class = User
@user = User.new
@target = SetupCleanTestClassForLikeable.new
end


describe "Likeable setup" do
it "adds Likeable::UserMethods to User" do
describe User.ancestors do
it {should_not include Likeable::UserMethods}
describe "setup" do
context "when the User class is defined" do
before(:each) do
reload_user!
Likeable.user_class = User
@user = User.new
@target = SetupCleanTestClassForLikeable.new
end
Likeable.setup
describe User.ancestors do
it {should include Likeable::UserMethods}

it "adds Likeable::UserMethods to the class" do
describe User.ancestors do
it {should_not include Likeable::UserMethods}
end
Likeable.setup
describe User.ancestors do
it {should include Likeable::UserMethods}
end
end
end

it "adds likeable to class" do
Likeable.setup do |like|
like.classes = LikeableIncludedInSetup
it "adds likeable to class" do
Likeable.setup do |like|
like.classes = LikeableIncludedInSetup
end

describe LikeableIncludedInSetup.ancestors do
it {should include Likeable}
end
end

describe LikeableIncludedInSetup.ancestors do
it {should include Likeable}
it "" do
result = "foo"
Likeable.setup

Likeable.after_like do |like|
result = "after_like_called_successfully"
end

@user.like! @target
result.should == "after_like_called_successfully"
end
end

it "" do
result = "foo"
Likeable.setup
context "when the User class doesn't exist" do
before do
# Need a cleaner way to do this, but the setter
# prevents it
Likeable.instance_variable_set(:@user_class, nil)
unload_user!
end

Likeable.after_like do |like|
result = "after_like_called_successfully"
after do
build_user!
Likeable.setup
end

@user.like! @target
result.should == "after_like_called_successfully"
it "won't raise an exception" do
lambda { Likeable.setup }.should_not raise_error
end
end
end
end

0 comments on commit 10b1a17

Please sign in to comment.