Commit 2c76259315d468c50e51599ab25394f207eb0f32
1 parent
fc9326ee
Exists in
theme-brasil-digital-from-staging
and in
9 other branches
Display available templates filtered by owner type
Showing
3 changed files
with
27 additions
and
13 deletions
Show diff stats
app/controllers/my_profile/email_templates_controller.rb
@@ -22,7 +22,7 @@ class EmailTemplatesController < MyProfileController | @@ -22,7 +22,7 @@ class EmailTemplatesController < MyProfileController | ||
22 | end | 22 | end |
23 | 23 | ||
24 | def new | 24 | def new |
25 | - @email_template = profile.email_templates.build | 25 | + @email_template = profile.email_templates.build(:owner => profile) |
26 | end | 26 | end |
27 | 27 | ||
28 | def edit | 28 | def edit |
app/models/email_template.rb
@@ -18,13 +18,17 @@ class EmailTemplate < ActiveRecord::Base | @@ -18,13 +18,17 @@ class EmailTemplate < ActiveRecord::Base | ||
18 | @parsed_subject ||= parse(subject, params) | 18 | @parsed_subject ||= parse(subject, params) |
19 | end | 19 | end |
20 | 20 | ||
21 | + def self.available_types | ||
22 | + { | ||
23 | + :task_rejection => {:description => _('Task Rejection'), :owner_type => Profile}, | ||
24 | + :task_acceptance => {:description => _('Task Acceptance'), :owner_type => Profile}, | ||
25 | + :organization_members => {:description => _('Organization Members'), :owner_type => Profile}, | ||
26 | + :user_activation => {:description => _('User Activation'), :unique => true, :owner_type => Environment} | ||
27 | + } | ||
28 | + end | ||
29 | + | ||
21 | def available_types | 30 | def available_types |
22 | - HashWithIndifferentAccess.new ({ | ||
23 | - :task_rejection => {:description => _('Task Rejection')}, | ||
24 | - :task_acceptance => {:description => _('Task Acceptance')}, | ||
25 | - :organization_members => {:description => _('Organization Members')}, | ||
26 | - :user_activation => {:description => _('User Activation'), :unique => true} | ||
27 | - }) | 31 | + HashWithIndifferentAccess.new EmailTemplate.available_types.select {|k, v| owner.kind_of?(v[:owner_type])} |
28 | end | 32 | end |
29 | 33 | ||
30 | def unique_by_type? | 34 | def unique_by_type? |
test/unit/email_template_test.rb
@@ -20,24 +20,34 @@ class EmailTemplateTest < ActiveSupport::TestCase | @@ -20,24 +20,34 @@ class EmailTemplateTest < ActiveSupport::TestCase | ||
20 | end | 20 | end |
21 | 21 | ||
22 | should 'not create template with the same name of other' do | 22 | should 'not create template with the same name of other' do |
23 | - template1 = EmailTemplate.new(:template_type => :type1, :name => 'template') | ||
24 | - template2 = EmailTemplate.new(:template_type => :type1, :name => 'template') | 23 | + template1 = EmailTemplate.new(:template_type => :type1, :name => 'template', :owner => Environment.default) |
24 | + template2 = EmailTemplate.new(:template_type => :type1, :name => 'template', :owner => Environment.default) | ||
25 | assert template1.save | 25 | assert template1.save |
26 | assert !template2.save | 26 | assert !template2.save |
27 | end | 27 | end |
28 | 28 | ||
29 | should 'not create duplicated template when template type is unique' do | 29 | should 'not create duplicated template when template type is unique' do |
30 | - template1 = EmailTemplate.new(:template_type => :user_activation, :name => 'template1') | ||
31 | - template2 = EmailTemplate.new(:template_type => :user_activation, :name => 'template2') | 30 | + template1 = EmailTemplate.new(:template_type => :user_activation, :name => 'template1', :owner => Environment.default) |
31 | + template2 = EmailTemplate.new(:template_type => :user_activation, :name => 'template2', :owner => Environment.default) | ||
32 | assert template1.save | 32 | assert template1.save |
33 | assert !template2.save | 33 | assert !template2.save |
34 | end | 34 | end |
35 | 35 | ||
36 | should 'create duplicated template when template type is not unique' do | 36 | should 'create duplicated template when template type is not unique' do |
37 | - template1 = EmailTemplate.new(:template_type => :task_rejection, :name => 'template1') | ||
38 | - template2 = EmailTemplate.new(:template_type => :task_rejection, :name => 'template2') | 37 | + template1 = EmailTemplate.new(:template_type => :task_rejection, :name => 'template1', :owner => Environment.default) |
38 | + template2 = EmailTemplate.new(:template_type => :task_rejection, :name => 'template2', :owner => Environment.default) | ||
39 | assert template1.save | 39 | assert template1.save |
40 | assert template2.save | 40 | assert template2.save |
41 | end | 41 | end |
42 | 42 | ||
43 | + should 'return available types when the owner is an environment' do | ||
44 | + template = EmailTemplate.new(:owner => Environment.default) | ||
45 | + assert_equal [:user_activation], template.available_types.symbolize_keys.keys | ||
46 | + end | ||
47 | + | ||
48 | + should 'return available types when the owner is a profile' do | ||
49 | + template = EmailTemplate.new(:owner => Profile.new) | ||
50 | + assert_equal [:task_rejection, :task_acceptance, :organization_members], template.available_types.symbolize_keys.keys | ||
51 | + end | ||
52 | + | ||
43 | end | 53 | end |