Commit 2c76259315d468c50e51599ab25394f207eb0f32

Authored by Victor Costa
1 parent fc9326ee

Display available templates filtered by owner type

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