Skip to content

Commit

Permalink
[webui] Fix test failure caused by broken validations
Browse files Browse the repository at this point in the history
  • Loading branch information
bgeuken committed Aug 20, 2015
1 parent 35c0ef2 commit 9cc765b
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 17 deletions.
4 changes: 2 additions & 2 deletions src/api/app/mixins/has_relationships.rb
Expand Up @@ -204,12 +204,12 @@ def update_generic_relationships(xmlhash)
pcache[role.title] = :keep
else
#new role
record = self.relationships.build(role: role)
record = self.relationships.new(role: role)
@updater.set_item(record, item)
pcache[role.title] = :new
end
else
record = self.relationships.build(role: role)
record = self.relationships.new(role: role)
@updater.set_item(record, item)
cache[id] = { role.title => :new }
end
Expand Down
37 changes: 22 additions & 15 deletions src/api/app/models/relationship.rb
Expand Up @@ -12,22 +12,29 @@ class Relationship < ActiveRecord::Base
validates :role, presence: true

validate :check_global_role
validates_uniqueness_of :project_id, :scope => :role_id

validates :project_id, uniqueness: { scope: [:role_id, :group_id] }
validates :project_id, uniqueness: { scope: [:role_id, :user_id] }
validates :package_id, uniqueness: { scope: [:role_id, :group_id] }
validates :package_id, uniqueness: { scope: [:role_id, :user_id] }

validates :package, presence: true, unless: 'project_id.present?'
validates :package, absence: true, if: 'project_id.present?'

validates :project, presence: true, unless: 'package_id.present?'

validates :user, presence: true, unless: 'group_id.present?'
validates :user, absence: true, if: 'group_id.present?'

validates :group, presence: true, unless: 'user_id.present?'
validates_uniqueness_of :project_id, {
scope: [:role_id, :group_id, :user_id], allow_nil: true,
message: "Project has non unique id"
}
validates_uniqueness_of :package_id, {
scope: [:role_id, :group_id, :user_id], allow_nil: true,
message: "Package has non unique id"
}

validates :package, presence: {
message: "Neither package nor project exists"
}, unless: 'project.present?'
validates :package, absence: {
message: "Package and project can not exist at the same time"
}, if: 'project.present?'

validates :user, presence: {
message: "Neither user nor group exists"
}, unless: 'group.present?'
validates :user, absence: {
message: "User and group can not exist at the same time"
}, if: 'group.present?'

def check_global_role
return unless self.role && self.role.global
Expand Down
1 change: 1 addition & 0 deletions src/api/test/unit/package_test.rb
Expand Up @@ -202,6 +202,7 @@ def test_add_user
test "names are case sensitive" do
np = @package.project.packages.new(name: 'testpack')
xh = Xmlhash.parse(@package.to_axml)
np.save!
np.update_from_xml(xh)
assert_equal np.name, 'testpack'
assert np.id > 0
Expand Down

0 comments on commit 9cc765b

Please sign in to comment.