Commit bdf53d0ec87af3cf7f912414744d7ba9ef241d78
1 parent
5281e384
Exists in
master
and in
29 other branches
ActionItem68: renaming files
git-svn-id: https://svn.colivre.coop.br/svn/noosfero/trunk@513 3f533792-8f58-4932-b0fe-aaf55b0a4547
Showing
8 changed files
with
252 additions
and
252 deletions
Show diff stats
... | ... | @@ -0,0 +1,132 @@ |
1 | +# A Environment is like a website to be hosted in the platform. It may | |
2 | +# contain multiple Profile's and can be identified by several different | |
3 | +# domains. | |
4 | +class Environment < ActiveRecord::Base | |
5 | + | |
6 | + # returns the available features for a Environment, in the form of a | |
7 | + # hash, with pairs in the form <tt>'feature_name' => 'Feature name'</tt>. | |
8 | + def self.available_features | |
9 | + { | |
10 | + 'some_feature' => _('Some feature'), | |
11 | + 'other_feature' => _('Other feature'), | |
12 | + } | |
13 | + end | |
14 | + | |
15 | + # ################################################# | |
16 | + # Relationships and applied behaviour | |
17 | + # ################################################# | |
18 | + | |
19 | + acts_as_design | |
20 | + | |
21 | + # One Environment can be reached by many domains | |
22 | + has_many :domains, :as => :owner | |
23 | + has_many :profiles | |
24 | + | |
25 | + # ################################################# | |
26 | + # Attributes | |
27 | + # ################################################# | |
28 | + | |
29 | + # store the Environment settings as YAML-serialized Hash. | |
30 | + serialize :settings | |
31 | + | |
32 | + # returns a Hash containing the Environment configuration | |
33 | + def settings | |
34 | + self[:settings] ||= {} | |
35 | + end | |
36 | + | |
37 | + # Enables a feature identified by its name | |
38 | + def enable(feature) | |
39 | + self.settings["#{feature}_enabled"] = true | |
40 | + end | |
41 | + | |
42 | + # Disables a feature identified by its name | |
43 | + def disable(feature) | |
44 | + self.settings["#{feature}_enabled"] = false | |
45 | + end | |
46 | + | |
47 | + # Tells if a feature, identified by its name, is enabled | |
48 | + def enabled?(feature) | |
49 | + self.settings["#{feature}_enabled"] == true | |
50 | + end | |
51 | + | |
52 | + # enables the features identified by <tt>features</tt>, which is expected to | |
53 | + # be an Enumarable object containing the identifiers of the desired features. | |
54 | + # Passing <tt>nil</tt> is the same as passing an empty Array. | |
55 | + def enabled_features=(features) | |
56 | + features ||= [] | |
57 | + self.class.available_features.keys.each do |feature| | |
58 | + if features.include? feature | |
59 | + self.enable(feature) | |
60 | + else | |
61 | + self.disable(feature) | |
62 | + end | |
63 | + end | |
64 | + end | |
65 | + | |
66 | + # the virtual community's terms of use: every user must accept them before | |
67 | + # registering. | |
68 | + def terms_of_use | |
69 | + self.settings['terms_of_use'] | |
70 | + end | |
71 | + | |
72 | + # sets the virtual community's terms of use. | |
73 | + def terms_of_use=(value) | |
74 | + self.settings['terms_of_use'] = value | |
75 | + end | |
76 | + | |
77 | + # returns <tt>true</tt> if this Environment has terms of use to be | |
78 | + # accepted by users before registration. | |
79 | + def has_terms_of_use? | |
80 | + ! self.settings['terms_of_use'].nil? | |
81 | + end | |
82 | + | |
83 | + # Returns the template used by +flexible_template+ plugin. | |
84 | + def flexible_template_template | |
85 | + self.settings['flexible_template_template'] | |
86 | + end | |
87 | + | |
88 | + # Sets the template used by +flexible_template+ plugin. | |
89 | + def flexible_template_template=(value) | |
90 | + self.settings['flexible_template_template'] = value | |
91 | + end | |
92 | + | |
93 | + # Returns the theme used by +flexible_template+ plugin | |
94 | + def flexible_template_theme | |
95 | + self.settings['flexible_template_theme'] | |
96 | + end | |
97 | + | |
98 | + # Sets the theme used by +flexible_template+ plugin | |
99 | + def flexible_template_theme=(value) | |
100 | + self.settings['flexible_template_theme'] = value | |
101 | + end | |
102 | + | |
103 | + # Returns the icon theme used by +flexible_template+ plugin | |
104 | + def flexible_template_icon_theme | |
105 | + self.settings['flexible_template_icon_theme'] | |
106 | + end | |
107 | + | |
108 | + # Sets the icon theme used by +flexible_template+ plugin | |
109 | + def flexible_template_icon_theme=(value) | |
110 | + self.settings['flexible_template_icon_theme'] = value | |
111 | + end | |
112 | + | |
113 | + # ################################################# | |
114 | + # Validations | |
115 | + # ################################################# | |
116 | + | |
117 | + # <tt>name</tt> is mandatory | |
118 | + validates_presence_of :name | |
119 | + | |
120 | + # only one virtual community can be the default one | |
121 | + validates_uniqueness_of :is_default, :if => (lambda do |environment| environment.is_default? end), :message => _('Only one Virtual Community can be the default one') | |
122 | + | |
123 | + # ################################################# | |
124 | + # Business logic in general | |
125 | + # ################################################# | |
126 | + | |
127 | + # the default Environment. | |
128 | + def self.default | |
129 | + self.find(:first, :conditions => [ 'is_default = ?', true ] ) | |
130 | + end | |
131 | + | |
132 | +end | ... | ... |
app/models/virtual_community.rb
... | ... | @@ -1,132 +0,0 @@ |
1 | -# A Environment is like a website to be hosted in the platform. It may | |
2 | -# contain multiple Profile's and can be identified by several different | |
3 | -# domains. | |
4 | -class Environment < ActiveRecord::Base | |
5 | - | |
6 | - # returns the available features for a Environment, in the form of a | |
7 | - # hash, with pairs in the form <tt>'feature_name' => 'Feature name'</tt>. | |
8 | - def self.available_features | |
9 | - { | |
10 | - 'some_feature' => _('Some feature'), | |
11 | - 'other_feature' => _('Other feature'), | |
12 | - } | |
13 | - end | |
14 | - | |
15 | - # ################################################# | |
16 | - # Relationships and applied behaviour | |
17 | - # ################################################# | |
18 | - | |
19 | - acts_as_design | |
20 | - | |
21 | - # One Environment can be reached by many domains | |
22 | - has_many :domains, :as => :owner | |
23 | - has_many :profiles | |
24 | - | |
25 | - # ################################################# | |
26 | - # Attributes | |
27 | - # ################################################# | |
28 | - | |
29 | - # store the Environment settings as YAML-serialized Hash. | |
30 | - serialize :settings | |
31 | - | |
32 | - # returns a Hash containing the Environment configuration | |
33 | - def settings | |
34 | - self[:settings] ||= {} | |
35 | - end | |
36 | - | |
37 | - # Enables a feature identified by its name | |
38 | - def enable(feature) | |
39 | - self.settings["#{feature}_enabled"] = true | |
40 | - end | |
41 | - | |
42 | - # Disables a feature identified by its name | |
43 | - def disable(feature) | |
44 | - self.settings["#{feature}_enabled"] = false | |
45 | - end | |
46 | - | |
47 | - # Tells if a feature, identified by its name, is enabled | |
48 | - def enabled?(feature) | |
49 | - self.settings["#{feature}_enabled"] == true | |
50 | - end | |
51 | - | |
52 | - # enables the features identified by <tt>features</tt>, which is expected to | |
53 | - # be an Enumarable object containing the identifiers of the desired features. | |
54 | - # Passing <tt>nil</tt> is the same as passing an empty Array. | |
55 | - def enabled_features=(features) | |
56 | - features ||= [] | |
57 | - self.class.available_features.keys.each do |feature| | |
58 | - if features.include? feature | |
59 | - self.enable(feature) | |
60 | - else | |
61 | - self.disable(feature) | |
62 | - end | |
63 | - end | |
64 | - end | |
65 | - | |
66 | - # the virtual community's terms of use: every user must accept them before | |
67 | - # registering. | |
68 | - def terms_of_use | |
69 | - self.settings['terms_of_use'] | |
70 | - end | |
71 | - | |
72 | - # sets the virtual community's terms of use. | |
73 | - def terms_of_use=(value) | |
74 | - self.settings['terms_of_use'] = value | |
75 | - end | |
76 | - | |
77 | - # returns <tt>true</tt> if this Environment has terms of use to be | |
78 | - # accepted by users before registration. | |
79 | - def has_terms_of_use? | |
80 | - ! self.settings['terms_of_use'].nil? | |
81 | - end | |
82 | - | |
83 | - # Returns the template used by +flexible_template+ plugin. | |
84 | - def flexible_template_template | |
85 | - self.settings['flexible_template_template'] | |
86 | - end | |
87 | - | |
88 | - # Sets the template used by +flexible_template+ plugin. | |
89 | - def flexible_template_template=(value) | |
90 | - self.settings['flexible_template_template'] = value | |
91 | - end | |
92 | - | |
93 | - # Returns the theme used by +flexible_template+ plugin | |
94 | - def flexible_template_theme | |
95 | - self.settings['flexible_template_theme'] | |
96 | - end | |
97 | - | |
98 | - # Sets the theme used by +flexible_template+ plugin | |
99 | - def flexible_template_theme=(value) | |
100 | - self.settings['flexible_template_theme'] = value | |
101 | - end | |
102 | - | |
103 | - # Returns the icon theme used by +flexible_template+ plugin | |
104 | - def flexible_template_icon_theme | |
105 | - self.settings['flexible_template_icon_theme'] | |
106 | - end | |
107 | - | |
108 | - # Sets the icon theme used by +flexible_template+ plugin | |
109 | - def flexible_template_icon_theme=(value) | |
110 | - self.settings['flexible_template_icon_theme'] = value | |
111 | - end | |
112 | - | |
113 | - # ################################################# | |
114 | - # Validations | |
115 | - # ################################################# | |
116 | - | |
117 | - # <tt>name</tt> is mandatory | |
118 | - validates_presence_of :name | |
119 | - | |
120 | - # only one virtual community can be the default one | |
121 | - validates_uniqueness_of :is_default, :if => (lambda do |environment| environment.is_default? end), :message => _('Only one Virtual Community can be the default one') | |
122 | - | |
123 | - # ################################################# | |
124 | - # Business logic in general | |
125 | - # ################################################# | |
126 | - | |
127 | - # the default Environment. | |
128 | - def self.default | |
129 | - self.find(:first, :conditions => [ 'is_default = ?', true ] ) | |
130 | - end | |
131 | - | |
132 | -end |
test/fixtures/virtual_communities.yml
... | ... | @@ -0,0 +1,11 @@ |
1 | +require File.expand_path(File.dirname(__FILE__) + "/../../../app/models/environment") | |
2 | + | |
3 | +class Environment < ActiveRecord::Base | |
4 | + def self.available_features | |
5 | + { | |
6 | + 'feature1' => 'Enable Feature 1', | |
7 | + 'feature2' => 'Enable Feature 2', | |
8 | + 'feature3' => 'Enable Feature 3', | |
9 | + } | |
10 | + end | |
11 | +end | ... | ... |
test/mocks/test/virtual_community.rb
... | ... | @@ -1,11 +0,0 @@ |
1 | -require File.expand_path(File.dirname(__FILE__) + "/../../../app/models/environment") | |
2 | - | |
3 | -class Environment < ActiveRecord::Base | |
4 | - def self.available_features | |
5 | - { | |
6 | - 'feature1' => 'Enable Feature 1', | |
7 | - 'feature2' => 'Enable Feature 2', | |
8 | - 'feature3' => 'Enable Feature 3', | |
9 | - } | |
10 | - end | |
11 | -end |
... | ... | @@ -0,0 +1,100 @@ |
1 | +require File.dirname(__FILE__) + '/../test_helper' | |
2 | + | |
3 | +class EnvironmentTest < Test::Unit::TestCase | |
4 | + fixtures :virtual_communities | |
5 | + | |
6 | + def test_exists_default_and_it_is_unique | |
7 | + Environment.delete_all | |
8 | + vc = Environment.new(:name => 'Test Community') | |
9 | + vc.is_default = true | |
10 | + assert vc.save | |
11 | + | |
12 | + vc2 = Environment.new(:name => 'Another Test Community') | |
13 | + vc2.is_default = true | |
14 | + assert !vc2.valid? | |
15 | + assert vc2.errors.invalid?(:is_default) | |
16 | + | |
17 | + assert_equal vc, Environment.default | |
18 | + end | |
19 | + | |
20 | + def test_acts_as_configurable | |
21 | + vc = Environment.new(:name => 'Testing Environment') | |
22 | + assert_kind_of Hash, vc.settings | |
23 | + vc.settings[:some_setting] = 1 | |
24 | + assert vc.save | |
25 | + assert_equal 1, vc.settings[:some_setting] | |
26 | + end | |
27 | + | |
28 | + def test_available_features | |
29 | + assert_kind_of Hash, Environment.available_features | |
30 | + end | |
31 | + | |
32 | + def test_mock | |
33 | + assert_equal ['feature1', 'feature2', 'feature3'], Environment.available_features.keys.sort | |
34 | + end | |
35 | + | |
36 | + def test_features | |
37 | + v = virtual_communities(:colivre_net) | |
38 | + v.enable('feature1') | |
39 | + assert v.enabled?('feature1') | |
40 | + v.disable('feature1') | |
41 | + assert !v.enabled?('feature1') | |
42 | + end | |
43 | + | |
44 | + def test_enabled_features | |
45 | + v = virtual_communities(:colivre_net) | |
46 | + v.enabled_features = [ 'feature1', 'feature2' ] | |
47 | + assert v.enabled?('feature1') && v.enabled?('feature2') && !v.enabled?('feature3') | |
48 | + end | |
49 | + | |
50 | + def test_enabled_features_no_features_enabled | |
51 | + v = virtual_communities(:colivre_net) | |
52 | + v.enabled_features = nil | |
53 | + assert !v.enabled?('feature1') && !v.enabled?('feature2') && !v.enabled?('feature3') | |
54 | + end | |
55 | + | |
56 | + def test_name_is_mandatory | |
57 | + v = Environment.new | |
58 | + v.valid? | |
59 | + assert v.errors.invalid?(:name) | |
60 | + v.name = 'blablabla' | |
61 | + v.valid? | |
62 | + assert !v.errors.invalid?(:name) | |
63 | + end | |
64 | + | |
65 | + def test_terms_of_use | |
66 | + v = Environment.new(:name => 'My test virtual community') | |
67 | + assert_nil v.terms_of_use | |
68 | + v.terms_of_use = 'To be part of this virtual community, you must accept the following terms: ...' | |
69 | + assert v.save | |
70 | + id = v.id | |
71 | + assert_equal 'To be part of this virtual community, you must accept the following terms: ...', Environment.find(id).terms_of_use | |
72 | + end | |
73 | + | |
74 | + def test_has_terms_of_use | |
75 | + v = Environment.new | |
76 | + assert !v.has_terms_of_use? | |
77 | + v.terms_of_use = 'some terms of use' | |
78 | + assert v.has_terms_of_use? | |
79 | + end | |
80 | + | |
81 | + def test_should_profive_flexible_template_stuff | |
82 | + v = Environment.new | |
83 | + | |
84 | + # template | |
85 | + assert_nil v.flexible_template_template | |
86 | + v.flexible_template_template = 'bli' | |
87 | + assert_equal 'bli', v.flexible_template_template | |
88 | + | |
89 | + # theme | |
90 | + assert_nil v.flexible_template_theme | |
91 | + v.flexible_template_theme = 'bli' | |
92 | + assert_equal 'bli', v.flexible_template_theme | |
93 | + | |
94 | + # icon theme | |
95 | + assert_nil v.flexible_template_icon_theme | |
96 | + v.flexible_template_icon_theme = 'bli' | |
97 | + assert_equal 'bli', v.flexible_template_icon_theme | |
98 | + end | |
99 | + | |
100 | +end | ... | ... |
test/unit/virtual_community_test.rb
... | ... | @@ -1,100 +0,0 @@ |
1 | -require File.dirname(__FILE__) + '/../test_helper' | |
2 | - | |
3 | -class EnvironmentTest < Test::Unit::TestCase | |
4 | - fixtures :virtual_communities | |
5 | - | |
6 | - def test_exists_default_and_it_is_unique | |
7 | - Environment.delete_all | |
8 | - vc = Environment.new(:name => 'Test Community') | |
9 | - vc.is_default = true | |
10 | - assert vc.save | |
11 | - | |
12 | - vc2 = Environment.new(:name => 'Another Test Community') | |
13 | - vc2.is_default = true | |
14 | - assert !vc2.valid? | |
15 | - assert vc2.errors.invalid?(:is_default) | |
16 | - | |
17 | - assert_equal vc, Environment.default | |
18 | - end | |
19 | - | |
20 | - def test_acts_as_configurable | |
21 | - vc = Environment.new(:name => 'Testing Environment') | |
22 | - assert_kind_of Hash, vc.settings | |
23 | - vc.settings[:some_setting] = 1 | |
24 | - assert vc.save | |
25 | - assert_equal 1, vc.settings[:some_setting] | |
26 | - end | |
27 | - | |
28 | - def test_available_features | |
29 | - assert_kind_of Hash, Environment.available_features | |
30 | - end | |
31 | - | |
32 | - def test_mock | |
33 | - assert_equal ['feature1', 'feature2', 'feature3'], Environment.available_features.keys.sort | |
34 | - end | |
35 | - | |
36 | - def test_features | |
37 | - v = virtual_communities(:colivre_net) | |
38 | - v.enable('feature1') | |
39 | - assert v.enabled?('feature1') | |
40 | - v.disable('feature1') | |
41 | - assert !v.enabled?('feature1') | |
42 | - end | |
43 | - | |
44 | - def test_enabled_features | |
45 | - v = virtual_communities(:colivre_net) | |
46 | - v.enabled_features = [ 'feature1', 'feature2' ] | |
47 | - assert v.enabled?('feature1') && v.enabled?('feature2') && !v.enabled?('feature3') | |
48 | - end | |
49 | - | |
50 | - def test_enabled_features_no_features_enabled | |
51 | - v = virtual_communities(:colivre_net) | |
52 | - v.enabled_features = nil | |
53 | - assert !v.enabled?('feature1') && !v.enabled?('feature2') && !v.enabled?('feature3') | |
54 | - end | |
55 | - | |
56 | - def test_name_is_mandatory | |
57 | - v = Environment.new | |
58 | - v.valid? | |
59 | - assert v.errors.invalid?(:name) | |
60 | - v.name = 'blablabla' | |
61 | - v.valid? | |
62 | - assert !v.errors.invalid?(:name) | |
63 | - end | |
64 | - | |
65 | - def test_terms_of_use | |
66 | - v = Environment.new(:name => 'My test virtual community') | |
67 | - assert_nil v.terms_of_use | |
68 | - v.terms_of_use = 'To be part of this virtual community, you must accept the following terms: ...' | |
69 | - assert v.save | |
70 | - id = v.id | |
71 | - assert_equal 'To be part of this virtual community, you must accept the following terms: ...', Environment.find(id).terms_of_use | |
72 | - end | |
73 | - | |
74 | - def test_has_terms_of_use | |
75 | - v = Environment.new | |
76 | - assert !v.has_terms_of_use? | |
77 | - v.terms_of_use = 'some terms of use' | |
78 | - assert v.has_terms_of_use? | |
79 | - end | |
80 | - | |
81 | - def test_should_profive_flexible_template_stuff | |
82 | - v = Environment.new | |
83 | - | |
84 | - # template | |
85 | - assert_nil v.flexible_template_template | |
86 | - v.flexible_template_template = 'bli' | |
87 | - assert_equal 'bli', v.flexible_template_template | |
88 | - | |
89 | - # theme | |
90 | - assert_nil v.flexible_template_theme | |
91 | - v.flexible_template_theme = 'bli' | |
92 | - assert_equal 'bli', v.flexible_template_theme | |
93 | - | |
94 | - # icon theme | |
95 | - assert_nil v.flexible_template_icon_theme | |
96 | - v.flexible_template_icon_theme = 'bli' | |
97 | - assert_equal 'bli', v.flexible_template_icon_theme | |
98 | - end | |
99 | - | |
100 | -end |