diff --git a/app/controllers/my_profile/email_templates_controller.rb b/app/controllers/my_profile/email_templates_controller.rb index 6c0d25f..3429ebc 100644 --- a/app/controllers/my_profile/email_templates_controller.rb +++ b/app/controllers/my_profile/email_templates_controller.rb @@ -22,7 +22,7 @@ class EmailTemplatesController < MyProfileController end def new - @email_template = profile.email_templates.build + @email_template = profile.email_templates.build(:owner => profile) end def edit diff --git a/app/models/email_template.rb b/app/models/email_template.rb index 3be426a..4a75a63 100644 --- a/app/models/email_template.rb +++ b/app/models/email_template.rb @@ -18,13 +18,17 @@ class EmailTemplate < ActiveRecord::Base @parsed_subject ||= parse(subject, params) end + def self.available_types + { + :task_rejection => {:description => _('Task Rejection'), :owner_type => Profile}, + :task_acceptance => {:description => _('Task Acceptance'), :owner_type => Profile}, + :organization_members => {:description => _('Organization Members'), :owner_type => Profile}, + :user_activation => {:description => _('User Activation'), :unique => true, :owner_type => Environment} + } + end + def available_types - HashWithIndifferentAccess.new ({ - :task_rejection => {:description => _('Task Rejection')}, - :task_acceptance => {:description => _('Task Acceptance')}, - :organization_members => {:description => _('Organization Members')}, - :user_activation => {:description => _('User Activation'), :unique => true} - }) + HashWithIndifferentAccess.new EmailTemplate.available_types.select {|k, v| owner.kind_of?(v[:owner_type])} end def unique_by_type? diff --git a/test/unit/email_template_test.rb b/test/unit/email_template_test.rb index e29894f..ff8f1ce 100644 --- a/test/unit/email_template_test.rb +++ b/test/unit/email_template_test.rb @@ -20,24 +20,34 @@ class EmailTemplateTest < ActiveSupport::TestCase end should 'not create template with the same name of other' do - template1 = EmailTemplate.new(:template_type => :type1, :name => 'template') - template2 = EmailTemplate.new(:template_type => :type1, :name => 'template') + template1 = EmailTemplate.new(:template_type => :type1, :name => 'template', :owner => Environment.default) + template2 = EmailTemplate.new(:template_type => :type1, :name => 'template', :owner => Environment.default) assert template1.save assert !template2.save end should 'not create duplicated template when template type is unique' do - template1 = EmailTemplate.new(:template_type => :user_activation, :name => 'template1') - template2 = EmailTemplate.new(:template_type => :user_activation, :name => 'template2') + template1 = EmailTemplate.new(:template_type => :user_activation, :name => 'template1', :owner => Environment.default) + template2 = EmailTemplate.new(:template_type => :user_activation, :name => 'template2', :owner => Environment.default) assert template1.save assert !template2.save end should 'create duplicated template when template type is not unique' do - template1 = EmailTemplate.new(:template_type => :task_rejection, :name => 'template1') - template2 = EmailTemplate.new(:template_type => :task_rejection, :name => 'template2') + template1 = EmailTemplate.new(:template_type => :task_rejection, :name => 'template1', :owner => Environment.default) + template2 = EmailTemplate.new(:template_type => :task_rejection, :name => 'template2', :owner => Environment.default) assert template1.save assert template2.save end + should 'return available types when the owner is an environment' do + template = EmailTemplate.new(:owner => Environment.default) + assert_equal [:user_activation], template.available_types.symbolize_keys.keys + end + + should 'return available types when the owner is a profile' do + template = EmailTemplate.new(:owner => Profile.new) + assert_equal [:task_rejection, :task_acceptance, :organization_members], template.available_types.symbolize_keys.keys + end + end -- libgit2 0.21.2