C0 code coverage information
Generated on Sun Oct 05 08:42:20 +0800 2008 with rcov 0.8.1.2
Code reported as executed by Ruby looks like this...
and this: this line is also marked as covered.
Lines considered as run by rcov, but not reported by Ruby, look like this,
and this: these lines were inferred by rcov (using simple heuristics).
Finally, here's a line marked as not executed.
1 class Group < ActiveRecord::Base
2 validates_presence_of :name
3 validates_length_of :name, :within => 1..40
4 validates_length_of :desc, :maximum => 100
5
6 before_destroy :check_system_group
7 before_save :check_parent
8
9 acts_as_tree :order => "id"
10
11 has_many :group_roles
12 has_many :roles, :through => :group_roles
13 has_many :user_group_roles, :through => :group_roles
14 # has_many :users, :through => :user_group_roles
15 has_many :sub_groups, :class_name => 'Group', :foreign_key => 'parent_id'
16 belongs_to :parent_group, :class_name => 'Group', :foreign_key => 'parent_id'
17 has_many :users, :class_name => 'User',
18 :finder_sql => 'SELECT * FROM users
19 WHERE
20 users.id IN
21 (SELECT user_group_roles.user_id FROM user_group_roles
22 WHERE
23 user_group_roles.group_role_id IN
24 (SELECT group_roles.id FROM group_roles
25 WHERE
26 group_roles.group_id = #{id}))
27 ORDER BY users.id;',
28 :counter_sql => 'SELECT count(*) FROM users
29 WHERE
30 users.id IN
31 (SELECT user_group_roles.user_id FROM user_group_roles
32 WHERE
33 user_group_roles.group_role_id IN
34 (SELECT group_roles.id FROM group_roles
35 WHERE
36 group_roles.group_id = #{id}));'
37
38 def all_users
39 us = users
40 sub_groups.each do |g|
41 us += g.all_users
42 end
43 return us.uniq.sort{|x,y| x.id <=> y.id }
44 end
45
46 def all_subgroups
47 sg = sub_groups
48 sub_groups.each do |g|
49 sg += g.all_subgroups
50 end
51 return sg.uniq.sort{|x,y| x.id <=> y.id }
52 end
53
54 def add_role(role)
55 begin
56 self.roles << role
57 self.save
58 rescue ErrorHelper::DefenceError
59 return false
60 end
61 return true
62 end
63
64 def remove_role(role, force)
65 gr = GroupRole.find(:first, :conditions => ["group_id = " + self.id.to_s + " AND role_id = " + role.id.to_s])
66 if force === false
67 if gr != nil
68 raise(GroupsHelper::RemoveRoleError, "Error") unless gr.users.empty?
69 end
70 end
71 gr.destroy
72 end
73
74 def self.unattached_roles(group_id, group_role_id = nil)
75 conditions = ''
76 GroupRole.find(:all, :conditions => 'group_id = ' + group_id +
77 (group_role_id.blank? ? "" : (" AND id <> " + group_role_id)) ).each {|group_role|
78 conditions += ' AND ' unless conditions.blank?
79 conditions += 'id <> ' + group_role.role.id.to_s
80 }
81 @roles = Role.find(:all, :order => 'id asc', :conditions => conditions)
82 return @roles
83 end
84 private
85 def check_system_group
86 raise ErrorHelper::DefenceError, l(:groups_delete_system_group_error) if kind == 1
87 end
88 def check_parent
89 # return true if self.kind == 1
90 raise(ErrorHelper::DefenceError, "Error") if parent_id == id
91
92 if id == 1
93 if parent_id == 0
94 return true
95 else
96 raise ErrorHelper::DefenceError, "Root group's parent_id must be set as 0!"
97 end
98 end
99 if self.parent_id.blank?
100 self.parent_id = 1
101 end
102
103 parent = Group.find(:first, :conditions => ["id = ?", self.parent_id])
104 raise(ErrorHelper::DefenceError, "Error") if parent == nil
105 raise(ErrorHelper::DefenceError, "Error") if all_subgroups.include?(parent)
106 end
107 end
Generated using the rcov code coverage analysis tool for Ruby
version 0.8.1.2.