aboutsummaryrefslogtreecommitdiffstats
path: root/spec/models/application_mailer_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/models/application_mailer_spec.rb')
-rw-r--r--spec/models/application_mailer_spec.rb162
1 files changed, 0 insertions, 162 deletions
diff --git a/spec/models/application_mailer_spec.rb b/spec/models/application_mailer_spec.rb
deleted file mode 100644
index acf5f43bc..000000000
--- a/spec/models/application_mailer_spec.rb
+++ /dev/null
@@ -1,162 +0,0 @@
-require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
-
-
-describe ApplicationMailer do
-
- context 'when using plugins' do
-
- def set_base_views
- ApplicationMailer.class_eval do
- @previous_view_paths = self.view_paths.dup
- self.view_paths.clear
- self.view_paths << File.join(Rails.root, 'spec', 'fixtures', 'theme_views', 'core')
- end
- end
-
- def add_mail_methods(method_names)
- method_names.each{ |method_name| ApplicationMailer.send(:define_method, method_name){} }
- end
-
- def remove_mail_methods(method_names)
- method_names.each do |method_name|
- if ApplicationMailer.respond_to?(method_name)
- ApplicationMailer.send(:remove_method, method_name)
- end
- end
- end
-
- def prepend_theme_views(theme_name)
- ApplicationMailer.class_eval do
- view_paths.unshift File.join(Rails.root, 'spec', 'fixtures', 'theme_views', theme_name)
- end
- end
-
- def append_theme_views(theme_name)
- ApplicationMailer.class_eval do
- view_paths << File.join(Rails.root, 'spec', 'fixtures', 'theme_views', theme_name)
- end
- end
-
- def reset_views
- ApplicationMailer.class_eval do
- self.view_paths = @previous_view_paths
- end
- end
-
- def create_multipart_method(method_name)
- ApplicationMailer.send(:define_method, method_name) do
- attachment :content_type => 'message/rfc822',
- :body => 'xxx',
- :filename => "original.eml",
- :transfer_encoding => '7bit',
- :content_disposition => 'inline'
- end
- end
-
- before do
- set_base_views
- add_mail_methods(['simple', 'theme_only', 'core_only', 'neither'])
- end
-
- describe 'when a plugin prepends its mail templates to the view paths' do
-
- it 'should render a theme template in preference to a core template' do
- prepend_theme_views('theme_one')
- @mail = ApplicationMailer.create_simple()
- @mail.body.should match('Theme simple')
- end
-
- it 'should render the template provided by the theme if no template is available in core' do
- prepend_theme_views('theme_one')
- @mail = ApplicationMailer.create_theme_only()
- @mail.body.should match('Theme only')
- end
-
- it 'should render the template provided by core if there is no theme template' do
- prepend_theme_views('theme_one')
- @mail = ApplicationMailer.create_core_only()
- @mail.body.should match('Core only')
- end
-
- it 'should raise an error if the template is in neither core nor theme' do
- prepend_theme_views('theme_one')
- expected_error = 'Missing template application_mailer/neither.erb in view path'
- lambda{ ApplicationMailer.create_neither() }.should raise_error(/#{expected_error}/)
- end
-
- it 'should render a multipart email using a theme template' do
- prepend_theme_views('theme_one')
- create_multipart_method('multipart_theme_only')
- @mail = ApplicationMailer.create_multipart_theme_only()
- @mail.parts.size.should == 2
- message_part = @mail.parts[0].to_s
- message_part.should match("Theme multipart")
- end
-
- it 'should render a multipart email using a core template' do
- prepend_theme_views('theme_one')
- create_multipart_method('multipart_core_only')
- @mail = ApplicationMailer.create_multipart_core_only()
- @mail.parts.size.should == 2
- message_part = @mail.parts[0].to_s
- message_part.should match("Core multipart")
- end
-
- end
-
- describe 'when a plugin appends its mail templates to the view paths' do
-
- it 'should render a core template in preference to a theme template' do
- append_theme_views('theme_one')
- @mail = ApplicationMailer.create_simple()
- @mail.body.should match('Core simple')
- end
-
- it 'should render the template provided by the theme if no template is available in core' do
- append_theme_views('theme_one')
- @mail = ApplicationMailer.create_theme_only()
- @mail.body.should match('Theme only')
- end
-
- it 'should render the template provided by core if there is no theme template' do
- append_theme_views('theme_one')
- @mail = ApplicationMailer.create_core_only()
- @mail.body.should match('Core only')
- end
-
- it 'should raise an error if the template is in neither core nor theme' do
- append_theme_views('theme_one')
- expected_error = 'Missing template application_mailer/neither.erb in view path'
- lambda{ ApplicationMailer.create_neither() }.should raise_error(/#{expected_error}/)
- end
-
- it 'should render a multipart email using a core template' do
- append_theme_views('theme_one')
- create_multipart_method('multipart_core_only')
- @mail = ApplicationMailer.create_multipart_core_only()
- @mail.parts.size.should == 2
- message_part = @mail.parts[0].to_s
- message_part.should match("Core multipart")
- end
-
- it 'should render a multipart email using a theme template' do
- append_theme_views('theme_one')
- create_multipart_method('multipart_theme_only')
- @mail = ApplicationMailer.create_multipart_theme_only()
- @mail.parts.size.should == 2
- message_part = @mail.parts[0].to_s
- message_part.should match("Theme multipart")
- end
-
- end
-
- after do
- reset_views
- remove_mail_methods(['simple', 'theme_only', 'core_only', 'neither', 'multipart'])
- end
- end
-
-end
-
-
-