lportal 1.0.7 → 1.0.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,113 @@
1
+ module Web
2
+ # Typesettings for portlets. Used in Web::Layout.
3
+ class Typesettings
4
+
5
+ attr_accessor :template_id
6
+ attr_accessor :portlets
7
+
8
+ # Takes either existing raw typesettings string (to be parsed) or a Hash, when clean Typesettings is created.
9
+ def initialize(params={})
10
+ @portlets = {}
11
+ if params.is_a?(String)
12
+ self.read(params)
13
+ else
14
+ self.columns = (params[:columns] || 2)
15
+ end
16
+ end
17
+
18
+ # Parses raw typesettings String into internal format.
19
+ def read(raw)
20
+ _x = raw.split(/\n/)
21
+ #puts _x.inspect
22
+
23
+ template_id = _x.find{|z| z[/layout-template-id.*/]}
24
+ if template_id
25
+ _x.delete_at(_x.index(template_id))
26
+ @template_id = template_id[/=(.*)/,1]
27
+ end
28
+
29
+ _x.each do |col|
30
+ @portlets[col[/-(.)=/,1].to_i] = col[/=(.*)/,1].split(/,/)
31
+ end
32
+ end
33
+
34
+ # Choose the number of columns in the Layout
35
+ def columns=(nr)
36
+ @template_id = (
37
+ case nr
38
+ when 1
39
+ '1_column'
40
+ when 2
41
+ '2_columns_ii'
42
+ else
43
+ raise 'Invalid column number'
44
+ end
45
+ )
46
+ end
47
+
48
+ # Output String
49
+ def to_s
50
+ s = ''
51
+ s << "layout-template-id=%s\n" % @template_id if @template_id
52
+ s << self.parse
53
+ return s
54
+ end
55
+
56
+ # Accepts a PortletName as the first parameter,
57
+ # the second parameter acceps a Hash {:column => nr} where nr is the column to place the portlet.
58
+ def method_missing(method, *args, &block)
59
+ begin
60
+ portlet = Web::PortletName.find_by_name(method.to_s)
61
+ return nil unless portlet
62
+
63
+ column = 1
64
+ if args.any?
65
+ if args.first[:column]
66
+ column = args.first[:column]
67
+ end
68
+ end
69
+
70
+ @portlets.update(column => [portlet.portletid])
71
+
72
+ rescue
73
+ STDERR.puts $!.message
74
+ STDERR.puts 'Have you installed Caterpillar?'
75
+ return nil
76
+ end
77
+ self
78
+ end
79
+
80
+ # Formulates the typesettings columns string for portlets
81
+ def parse
82
+ columns = []
83
+ @portlets.each_pair do |column,portlets|
84
+ columns << "column-%i=%s," % [column, portlets.join(",")]
85
+ end
86
+ columns.join("\n")
87
+ end
88
+
89
+ # Does this Typesettings include this portlet?
90
+ # Params:
91
+ # - portlet (either name as String, or Web::PortletName)
92
+ def include?(args)
93
+ if args.is_a?(String)
94
+ p = Web::PortletName.find_by_name args
95
+ elsif args.is_a?(Web::PortletName)
96
+ p = args
97
+ else
98
+ raise 'Invalid input class: %s' % args.class
99
+ end
100
+
101
+ #!@portlets_s[/[=,]#{p.portletid},/].nil?
102
+
103
+ # this may be handy if columns are needed
104
+ #_x = @portlets.find{|k,v| v.include?(p.portletid)}
105
+ #return false if _x.nil?
106
+ #column = _x.first[0]
107
+ #return true
108
+
109
+ @portlets.any?{|k,v| v.include?(p.portletid)}
110
+ end
111
+
112
+ end
113
+ end
@@ -14,6 +14,7 @@ module Wiki
14
14
  :foreign_key => "nodeid"
15
15
 
16
16
  has_one :asset,
17
+ :class_name => 'Tag::Asset',
17
18
  :foreign_key => 'classpk'
18
19
 
19
20
  end
@@ -35,4 +35,10 @@ class AssetTest < ActiveSupport::TestCase
35
35
  # end
36
36
  # end
37
37
 
38
+ # def test_path
39
+ # @posts.each do |p|
40
+ # assert_not_nil p.path
41
+ # end
42
+ # end
43
+
38
44
  end
@@ -1,11 +1,92 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class GroupTest < ActiveSupport::TestCase
4
- fixtures :organization_
4
+ fixtures [
5
+ :organization_,
6
+ :users_orgs,
7
+ :usergroup,
8
+ :role_,
9
+ :classname_
10
+ ]
5
11
 
6
12
  def setup
7
13
  @groups = Group.find :all
8
14
  assert !@groups.empty?, "No groups"
15
+
16
+ @company = Company.first
17
+ flunk 'No company!' unless @company
18
+ end
19
+
20
+ def test_create_group
21
+ user = @company.administrators.first
22
+ flunk 'No user!' unless user
23
+
24
+ # Type Group
25
+ group = Group.create(
26
+ :name => 'Test',
27
+ :company => @company,
28
+ :creatoruserid => user.id
29
+ )
30
+ assert_not_nil group
31
+
32
+ assert_equal @company, group.company
33
+ assert_equal user.id, group.creatoruserid
34
+ assert_equal 0, group.classnameid
35
+ assert_equal 0, group.classpk
36
+ assert_equal 1, group.type_ # open
37
+
38
+ rc = group.resource_code(4)
39
+ assert_not_nil rc
40
+ r = Resource.find(:first, :conditions => "codeid=#{rc.id} AND primkey='#{group.id}'")
41
+ assert_not_nil r
42
+
43
+ group.class.actions.each do |actionid|
44
+ p = Permission.find(:first,
45
+ :conditions => "companyid=#{group.companyid} AND actionid='#{actionid}' AND resourceid=#{r.id}")
46
+ assert_not_nil p
47
+
48
+ # Permissions to administrators
49
+ group.company.administrators.each do |user|
50
+ assert user.user_permissions.include?(p)
51
+ end
52
+ end
53
+ end
54
+
55
+ def test_create_user_group
56
+ user = User.first
57
+ flunk 'No user!' unless user
58
+
59
+ # Type User
60
+ group = Group.create(
61
+ :company => user.company,
62
+ :creatoruserid => user.id,
63
+ :classnameid => Classname.find_by_value(User.liferay_class).id,
64
+ :classpk => user.id,
65
+ :friendlyurl => '/'+user.screenname
66
+ )
67
+
68
+ assert_not_nil group
69
+
70
+ assert_equal user.companyid, group.companyid
71
+ assert_equal user.id, group.creatoruserid
72
+ assert_equal Classname.find_by_value(User.liferay_class).id, group.classnameid
73
+ assert_equal user.id, group.classpk
74
+ assert_equal 0, group.parentgroupid
75
+ assert_equal 0, group.livegroupid
76
+ assert_equal 0, group.type_
77
+ assert_equal '/'+user.screenname, group.friendlyurl
78
+ assert group.is_active?
79
+
80
+ assert_not_nil group.public_layoutset
81
+ assert_not_nil group.private_layoutset
82
+
83
+ group.layoutsets.each do |ls|
84
+ assert_equal user.companyid, ls.companyid
85
+ assert_equal false, ls.logo
86
+ assert_equal 0, ls.logoid
87
+ assert_equal 0, ls.pagecount
88
+ end
89
+
9
90
  end
10
91
 
11
92
  # each group must belong to a company
@@ -64,15 +145,40 @@ class GroupTest < ActiveSupport::TestCase
64
145
  # each group must have one or more layouts
65
146
  def test_layoutsets
66
147
  @groups.each do |x|
67
- assert !x.layoutsets.empty?, "#{x.id} has no layoutsets"
68
- assert !(x.layoutsets.size > 2), "#{x.id} has more than 2 layoutsets"
148
+ assert !x.layoutsets.empty?, "#{x.id} (#{x.name}) has no layoutsets"
149
+ assert !(x.layoutsets.size > 2), "#{x.id} (#{x.name}) has more than 2 layoutsets"
150
+ assert_not_nil x.public_layoutset
151
+ assert_not_nil x.private_layoutset
69
152
  end
70
153
  end
71
154
 
72
- def test_resource
155
+ def test_members
73
156
  @groups.each do |x|
74
- # assert !x.resource.nil?, "#{x.id} has no resource"
157
+ if x.owner.kind_of?(Organization)
158
+ assert_equal x.owner.members, x.members
159
+ end
75
160
  end
76
161
  end
77
162
 
163
+ def test_path
164
+ @groups.each do |x|
165
+ if x.private_layouts.any?
166
+ assert_not_nil x.path(:private)
167
+ else
168
+ assert_nil x.path(:private)
169
+ end
170
+ if x.public_layouts.any?
171
+ assert_not_nil x.path(:public)
172
+ else
173
+ assert_nil x.path(:public)
174
+ end
175
+ end
176
+ end
177
+
178
+ # def test_resource
179
+ # @groups.each do |x|
180
+ # # assert !x.resource.nil?, "#{x.id} has no resource"
181
+ # end
182
+ # end
183
+
78
184
  end
@@ -5,7 +5,10 @@ class MB::CategoryTest < ActiveSupport::TestCase
5
5
  :mbcategory,
6
6
  :mbdiscussion,
7
7
  :mbmessage,
8
- :mbthread
8
+ :mbthread,
9
+ :group_,
10
+ :layout,
11
+ :portlet_names
9
12
  ]
10
13
 
11
14
  def setup
@@ -14,6 +17,55 @@ class MB::CategoryTest < ActiveSupport::TestCase
14
17
  @categories.delete @rootcategory
15
18
  end
16
19
 
20
+ def test_create
21
+ # find first user that has a personal group
22
+ user = nil
23
+ User.all.each do |user|
24
+ break if user.hive
25
+ end
26
+ group = user.hive
27
+ assert_not_nil group
28
+
29
+ category = MB::Category.create(
30
+ :name => 'Test',
31
+ :group => group,
32
+ :user => user
33
+ )
34
+ assert_not_nil category
35
+
36
+ assert_equal group, category.group
37
+ assert_equal user, category.user
38
+ assert_equal user.fullname, category.username
39
+ assert_equal 0, category.parentcategoryid
40
+
41
+ # ResourceCode with scope 1 => Resource for Company
42
+ # ResourceCode with scope 2 => Resource for this Group and Guest's Group
43
+ # ResourceCode with scope 4 => Resource for self
44
+
45
+ rc = category.resource_code(1)
46
+ assert_not_nil rc
47
+ assert_not_nil Resource.find(:first,
48
+ :conditions => "codeid=#{rc.id} AND primkey='#{group.companyid}'")
49
+
50
+ rc = category.resource_code(2)
51
+ assert_not_nil rc
52
+ assert_not_nil Resource.find(:first,
53
+ :conditions => "codeid=#{rc.id} AND primkey='#{group.id}'")
54
+
55
+ rc = category.resource_code(4)
56
+ assert_not_nil rc
57
+ resource = Resource.find(:first,
58
+ :conditions => "codeid=#{rc.id} AND primkey='#{category.id}'")
59
+ assert_not_nil resource
60
+
61
+ category.class.actions.each do |actionid|
62
+ p = Permission.find(:first,
63
+ :conditions => "companyid=#{category.companyid} AND actionid='#{actionid}' AND resourceid=#{resource.id}")
64
+ assert_not_nil p
65
+ assert user.user_permissions.include?(p)
66
+ end
67
+ end
68
+
17
69
  # each article must belong to a company
18
70
  def test_company
19
71
  @categories.each do |x|
@@ -48,4 +100,14 @@ class MB::CategoryTest < ActiveSupport::TestCase
48
100
  assert_equal 0, @rootcategory.parentcategoryid
49
101
  end
50
102
 
103
+ def test_path
104
+ @categories.each do |x|
105
+ if x.group.layouts_include?('message_boards')
106
+ assert_not_nil x.path
107
+ else
108
+ assert_nil x.path
109
+ end
110
+ end
111
+ end
112
+
51
113
  end
@@ -0,0 +1,33 @@
1
+ require 'test_helper'
2
+
3
+ class PhoneTest < ActiveSupport::TestCase
4
+ fixtures [
5
+ :company,
6
+ :user_,
7
+ :phone,
8
+ :contact_,
9
+ :classname_,
10
+ :listtype
11
+ ]
12
+
13
+ def setup
14
+ @phones = Phone.all
15
+ end
16
+
17
+ def test_phones
18
+ @phones.each do |phone|
19
+ assert_not_nil phone.company
20
+ assert_not_nil phone.user
21
+ assert_equal phone.company, phone.user.company
22
+
23
+ classnameid = Classname.find_by_value('com.liferay.portal.model.Contact').id
24
+ assert_equal classnameid, phone.classnameid
25
+
26
+ assert_equal phone.user.contact.id, phone.classpk
27
+
28
+ # mobile = ListType.find_by_name('Mobile').id
29
+ # assert_equal mobile, phone.typeid
30
+ end
31
+ end
32
+
33
+ end
@@ -1,24 +1,143 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class RoleTest < ActiveSupport::TestCase
4
- fixtures :role_
4
+ fixtures [
5
+ :role_,
6
+ :users_roles,
7
+ :groups_roles,
8
+ :permission_,
9
+ :users_permissions,
10
+ :groups_permissions,
11
+ :resource_,
12
+ :resourcecode
13
+ ]
5
14
 
6
15
  def setup
7
16
  @roles = Role.all
17
+ @company = Company.first
18
+ flunk 'No company!' unless @company
8
19
  end
9
20
 
21
+ def test_create
22
+ name = 'Regular role'
23
+ description = 'test'
24
+
25
+ role = Role.create(
26
+ :company => @company,
27
+ :name => name,
28
+ :description => description
29
+ )
30
+ role.reload
31
+
32
+ assert_equal @company, role.company
33
+ assert_equal name, role.name
34
+ assert_equal description, role.description
35
+ assert_equal 0, role.classnameid
36
+ assert_equal 0, role.classpk
37
+ assert_equal 1, role.type_
38
+
39
+ # ResourceCode & Resource
40
+ rc = role.resource_code(1)
41
+ assert_not_nil rc
42
+ r = Resource.find(:first, :conditions => "codeid=#{rc.id} AND primkey='#{role.companyid}'")
43
+ assert_not_nil r
44
+
45
+ rc = role.resource_code(4)
46
+ assert_not_nil rc
47
+ r = Resource.find(:first, :conditions => "codeid=#{rc.id} AND primkey='#{role.id}'")
48
+ assert_not_nil r
49
+
50
+ role.class.actions.each do |actionid|
51
+ p = Permission.find(:first,
52
+ :conditions => "companyid=#{role.companyid} AND actionid='#{actionid}' AND resourceid=#{r.id}")
53
+ assert_not_nil p
54
+
55
+ # Permissions to administrators
56
+ role.company.administrators.each do |user|
57
+ assert user.user_permissions.include?(p)
58
+ end
59
+ end
60
+ end
61
+
62
+ def test_destroy
63
+ Role.all.each do |role|
64
+ rc = role.resource_code(4)
65
+
66
+ company = role.company
67
+ users = role.users
68
+ groups = role.groups
69
+
70
+ role.destroy
71
+
72
+ users.each do |user|
73
+ assert !user.roles.include?(role)
74
+ end
75
+
76
+ groups.each do |group|
77
+ assert !group.roles.include?(role)
78
+ end
79
+
80
+ assert_raise(ActiveRecord::RecordNotFound) { role.reload }
81
+
82
+
83
+ next unless rc
84
+ r = Resource.find(:first, :conditions => "codeid=#{rc.id} AND primkey='#{role.id}'")
85
+ next unless r
86
+
87
+ %w{
88
+ ASSIGN_MEMBERS
89
+ DEFINE_PERMISSIONS
90
+ DELETE
91
+ MANAGE_ANNOUNCEMENTS
92
+ PERMISSIONS
93
+ UPDATE
94
+ VIEW }.each do |actionid|
95
+ p = Permission.find(:first,
96
+ :conditions => "companyid=#{company.id} AND actionid='#{actionid}' AND resourceid=#{r.id}")
97
+ assert_nil p
98
+
99
+ # User + group permissions
100
+ users.each do |user|
101
+ assert !user.user_permissions.include?(p)
102
+ end
103
+ groups.each do |group|
104
+ assert !group.permissions.include?(p)
105
+ end
106
+ end
107
+ assert_raise(ActiveRecord::RecordNotFound) { r.reload }
108
+ end
109
+ end
110
+
111
+
10
112
  # each role must belong to a company
11
113
  def test_company
12
- @roles.each do |x|
13
- assert_not_nil x.company, "#{x.id} belongs to no companies"
114
+ @roles.each do |r|
115
+ assert_not_nil r.company, "#{r.id} belongs to no companies"
14
116
  end
15
117
  end
16
118
 
17
- def test_rigidity
18
- # each user must exist!
19
- users = @roles.map{|x| x.users}.uniq
20
- users.each do |user|
21
- assert_not_nil user
119
+ def test_users
120
+ @roles.each do |r|
121
+ r.users.each do |user|
122
+ assert_not_nil user
123
+ end
22
124
  end
23
125
  end
126
+
127
+ def test_groups
128
+ @roles.each do |r|
129
+ r.groups.each do |group|
130
+ assert_not_nil group
131
+ end
132
+ end
133
+ end
134
+
135
+ def test_permissions
136
+ @roles.each do |r|
137
+ r.permissions.each do |permission|
138
+ assert_not_nil permission
139
+ end
140
+ end
141
+ end
142
+
24
143
  end
@@ -18,40 +18,52 @@ class Tag::AssetTest < ActiveSupport::TestCase
18
18
  @assets = Tag::Asset.all
19
19
  end
20
20
 
21
- # each asset _must_ belong to a company
22
- def test_company
21
+ def test_resource
23
22
  @assets.each do |asset|
24
23
  assert_not_nil asset.company
25
- end
26
- end
27
24
 
28
- # each asset's resource _must_ belong to a company
29
- def test_resource
30
- @assets.each do |asset|
31
25
  classname = Classname.find(asset.classnameid).value
26
+ assert_not_nil classname
27
+
32
28
  resource = asset.resource
29
+ assert_not_nil resource
30
+
31
+ assert_equal asset.company, resource.company
33
32
 
34
33
  assert_not_nil resource.liferay_class, '%s has not defined its Java class' % resource.class
35
34
  assert_equal classname,resource.liferay_class, 'Asset %i' % asset.id
36
35
 
37
- assert_not_nil resource.company, "Asset's #{asset.id} resource #{resource.id} does not belong to any company"
36
+ #assert_not_nil resource.content
37
+ end
38
+ end
38
39
 
39
- assert_equal asset.company,resource.company, "Asset #{asset.id} and resource #{resource.id} belong to a different company"
40
+ def test_label
41
+ @assets.each do |asset|
42
+ assert_not_nil asset.label
43
+ assert_not_equal '', asset.label
44
+ assert_equal asset.title, asset.label unless asset.title.empty?
45
+ end
46
+ end
47
+
48
+ def test_owner
49
+ @assets.each do |asset|
50
+ assert_not_nil asset.owner
51
+ assert_equal User, asset.owner.class
40
52
  end
41
53
  end
42
54
 
43
55
  def test_asset_types
44
- Asset.resource_types.each do |type|
56
+ Tag::Asset.resource_types.each do |type|
45
57
  type.find(:all).each do |obj|
46
58
  if defined? obj.asset
47
- assert_not_nil obj.asset
59
+ assert_not_nil obj.asset, '%s (%i) has no Tag::Asset' % [obj.class, obj.id]
48
60
 
49
61
  # problems with versioned wiki and journal pages..
50
62
  unless obj.class==Wiki::Page or obj.class==Journal::Article
51
63
  assert_equal obj,obj.asset.resource
52
64
  end
53
65
  else
54
- #STDERR.puts '%s has not defined the asset method!' % obj.class
66
+ STDERR.puts '%s has no asset relation' % obj.class
55
67
  end
56
68
 
57
69
  assert_not_nil obj.liferay_class, '%s has not defined its Java class' % obj.class