Skip to content

Commit

Permalink
Creating the ownership after the gem is saved
Browse files Browse the repository at this point in the history
  • Loading branch information
qrush committed Oct 16, 2009
1 parent 96d8505 commit fe0b733
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 34 deletions.
6 changes: 4 additions & 2 deletions app/models/rubygem.rb
Original file line number Diff line number Diff line change
Expand Up @@ -86,8 +86,10 @@ def pushable?
new_record? || versions_count.zero?
end

def build_ownership(user)
ownerships.build(:user => user, :approved => true) if pushable?
def create_ownership(user)
if unowned? && !user.try(:rubyforge_importer?)
ownerships.create(:user => user, :approved => true)
end
end

def update_versions!(version, spec)
Expand Down
2 changes: 1 addition & 1 deletion lib/gemcutter.rb
Original file line number Diff line number Diff line change
Expand Up @@ -46,8 +46,8 @@ def notify(message, code)

def update
Rubygem.transaction do
rubygem.build_ownership(user) unless user.try(:rubyforge_importer?)
rubygem.update_attributes_from_gem_specification!(version, spec)
rubygem.create_ownership(user)
end
true
rescue ActiveRecord::RecordInvalid, ActiveRecord::Rollback
Expand Down
40 changes: 9 additions & 31 deletions test/unit/rubygem_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -48,41 +48,19 @@ class RubygemTest < ActiveSupport::TestCase
context "with a user" do
setup do
@user = Factory(:user)
@rubygem.save
end

context "before being saved" do
should "be able to assign ownership" do
@rubygem.build_ownership(@user)
@rubygem.save
assert_contains @rubygem.owners, @user
end
end

context "after being saved" do
setup do
@new_user = Factory(:user)
@rubygem.save
end

should "be able to assign ownership" do
@rubygem.build_ownership(@new_user)
@rubygem.save
assert_contains @rubygem.owners, @new_user
end
should "be able to assign ownership when no owners exist" do
@rubygem.create_ownership(@user)
assert_equal @rubygem.reload.owners, [@user]
end

context "after being saved with a version" do
setup do
@new_user = Factory(:user)
@rubygem.save
@rubygem.update_attributes(:versions_count => 1)
end

should "not be able to assign ownership" do
@rubygem.build_ownership(@new_user)
@rubygem.save
assert_does_not_contain @rubygem.owners, @new_user
end
should "not be able to assign ownership when owners exist" do
@new_user = Factory(:user)
@rubygem.ownerships.create(:user => @new_user, :approved => true)
@rubygem.create_ownership(@user)
assert_equal @rubygem.reload.owners, [@new_user]
end
end

Expand Down

0 comments on commit fe0b733

Please sign in to comment.