mail_form 1.0.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/test/errors_test.rb DELETED
@@ -1,85 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper'
2
-
3
- class MailFormErrorsTest < ActiveSupport::TestCase
4
-
5
- def test_errors_respond_to_some_hash_methods
6
- assert ContactForm.new.errors.respond_to?(:each)
7
- assert ContactForm.new.errors.respond_to?(:each_pair)
8
- assert ContactForm.new.errors.respond_to?(:size)
9
- end
10
-
11
- def test_count_is_an_alias_to_size
12
- errors = ContactForm.new.errors
13
- assert_equal errors.size, errors.count
14
- end
15
-
16
- def test_on_returns_the_message_in_the_given_attribute
17
- form = ContactForm.new(:email => 'not_valid')
18
- form.valid?
19
- assert_equal "can't be blank", form.errors.on(:name)
20
- assert_equal "is invalid", form.errors.on(:email)
21
- assert_equal nil, form.errors.on(:message)
22
- end
23
-
24
- def test_on_returns_a_default_localized_message_in_the_given_attribute
25
- I18n.backend.store_translations(:en, :mail_form => { :messages => { :invalid => 'is not valid', :blank => 'should be filled' } })
26
-
27
- form = ContactForm.new(:email => 'not_valid')
28
- form.valid?
29
-
30
- assert_equal "should be filled", form.errors.on(:name)
31
- assert_equal "is not valid", form.errors.on(:email)
32
- assert_equal nil, form.errors.on(:message)
33
- end
34
-
35
- def test_on_returns_an_attribute_localized_message_in_the_given_attribute
36
- I18n.backend.store_translations(:en, :mail_form => { :messages => { :email => 'fill in the email', :name => 'fill in the name' } })
37
-
38
- form = ContactForm.new(:email => 'not_valid')
39
- form.valid?
40
-
41
- assert_equal "fill in the name", form.errors.on(:name)
42
- assert_equal "fill in the email", form.errors.on(:email)
43
- assert_equal nil, form.errors.on(:message)
44
- end
45
-
46
- def test_array_like_option_acts_as_an_alias_for_on
47
- form = ContactForm.new(:email => 'not_valid')
48
- form.valid?
49
- assert_equal "can't be blank", form.errors[:name]
50
- assert_equal form.errors.on(:name), form.errors[:name]
51
- assert_equal "is invalid", form.errors[:email]
52
- assert_equal form.errors.on(:email), form.errors[:email]
53
- assert_equal nil, form.errors[:message]
54
- end
55
-
56
- def test_get_returns_the_real_value_in_the_given_attribute
57
- form = ContactForm.new(:email => 'not_valid')
58
- form.valid?
59
- assert_equal :blank, form.errors.get(:name)
60
- assert_equal :invalid, form.errors.get(:email)
61
- assert_equal nil, form.errors.get(:message)
62
- end
63
-
64
- def test_full_messages
65
- form = ContactForm.new(:email => 'not_valid')
66
- form.valid?
67
-
68
- assert form.errors.full_messages.include?("Name can't be blank")
69
- assert form.errors.full_messages.include?("Email is invalid")
70
- end
71
-
72
- def test_full_localized_messages
73
- I18n.backend.store_translations(:en, :mail_form => { :messages => { :email => 'is not valid', :blank => 'should be filled' }, :attributes => { :email => 'E-mail' } })
74
-
75
- form = ContactForm.new(:email => 'not_valid')
76
- form.valid?
77
-
78
- assert form.errors.full_messages.include?("Name should be filled")
79
- assert form.errors.full_messages.include?("E-mail is not valid")
80
- end
81
-
82
- def teardown
83
- I18n.reload!
84
- end
85
- end
@@ -1,183 +0,0 @@
1
- require File.dirname(__FILE__) + '/test_helper'
2
-
3
- class MailFormNotifierTest < ActiveSupport::TestCase
4
-
5
- def setup
6
- @form = ContactForm.new(:name => 'José', :email => 'my.email@my.domain.com', :message => 'Cool')
7
-
8
- @request = ActionController::TestRequest.new
9
- @valid_attributes = { :name => 'José', :email => 'my.email@my.domain.com', :message => "Cool\nno?" }
10
- @advanced = AdvancedForm.new(@valid_attributes, @request)
11
-
12
- test_file = ActionController::TestUploadedFile.new(File.join(File.dirname(__FILE__), 'test_file.txt'))
13
- @with_file = FileForm.new(:name => 'José', :email => 'my.email@my.domain.com', :message => "Cool", :file => test_file)
14
-
15
- @template = TemplateForm.new(@valid_attributes)
16
-
17
- ActionMailer::Base.deliveries = []
18
- end
19
-
20
- def test_email_is_sent
21
- @form.deliver
22
- assert_equal 1, ActionMailer::Base.deliveries.size
23
- end
24
-
25
- def test_subject_defaults_to_class_human_name
26
- @form.deliver
27
- assert_equal 'Contact form', ActionMailer::Base.deliveries.first.subject
28
- end
29
-
30
- def test_subject_is_a_string
31
- @advanced.deliver
32
- assert_equal 'My Advanced Form', ActionMailer::Base.deliveries.first.subject
33
- end
34
-
35
- def test_sender_defaults_to_form_email
36
- @form.deliver
37
- assert_equal ['my.email@my.domain.com'], ActionMailer::Base.deliveries.first.from
38
- end
39
-
40
- def test_error_is_raised_when_recipients_is_nil
41
- assert_raise ScriptError do
42
- NullRecipient.new.deliver
43
- end
44
- end
45
-
46
- def test_recipients_is_a_string
47
- @form.deliver
48
- assert_equal ['my.email@my.domain.com'], ActionMailer::Base.deliveries.first.to
49
- end
50
-
51
- def test_recipients_is_an_array
52
- @advanced.deliver
53
- assert_equal ['my.first@email.com', 'my.second@email.com'], ActionMailer::Base.deliveries.first.to
54
- end
55
-
56
- def test_recipients_is_a_symbold
57
- @with_file.deliver
58
- assert_equal ['contact_file@my.domain.com'], ActionMailer::Base.deliveries.first.to
59
- end
60
-
61
- def test_headers_is_a_hash
62
- @advanced.deliver
63
- assert_equal '<mypath>', ActionMailer::Base.deliveries.first.header['return-path'].to_s
64
- end
65
-
66
- def test_body_contains_subject
67
- @form.deliver
68
- assert_match /Contact form/, ActionMailer::Base.deliveries.first.body
69
- end
70
-
71
- def test_body_contains_attributes_values
72
- @form.deliver
73
- assert_match /José/, ActionMailer::Base.deliveries.first.body
74
- assert_match /my.email@my.domain.com/, ActionMailer::Base.deliveries.first.body
75
- assert_match /Cool/, ActionMailer::Base.deliveries.first.body
76
- end
77
-
78
- def test_body_contains_attributes_names
79
- @form.deliver
80
- assert_match /Name:/, ActionMailer::Base.deliveries.first.body
81
- assert_match /Email:/, ActionMailer::Base.deliveries.first.body
82
- assert_match /Message:/, ActionMailer::Base.deliveries.first.body
83
- end
84
-
85
- def test_body_contains_localized_attributes_names
86
- I18n.backend.store_translations(:en, :mail_form => { :attributes => { :message => 'Sent message' } })
87
- @form.deliver
88
- assert_match /Sent message:/, ActionMailer::Base.deliveries.first.body
89
- assert_no_match /Message:/, ActionMailer::Base.deliveries.first.body
90
- end
91
-
92
- def test_body_mail_format_messages_with_break_line
93
- @form.deliver
94
- assert_no_match /<p>Cool/, ActionMailer::Base.deliveries.first.body
95
-
96
- @advanced.deliver
97
- assert_match /<p>Cool/, ActionMailer::Base.deliveries.last.body
98
- end
99
-
100
- def test_body_does_not_append_request_if_append_is_not_called
101
- @form.deliver
102
- assert_no_match /Request information/, ActionMailer::Base.deliveries.first.body
103
- end
104
-
105
- def test_body_does_append_request_if_append_is_called
106
- @advanced.deliver
107
- assert_match /Request information/, ActionMailer::Base.deliveries.last.body
108
- end
109
-
110
- def test_request_title_is_localized
111
- I18n.backend.store_translations(:en, :mail_form => { :request => { :title => 'Information about the request' } })
112
- @advanced.deliver
113
- assert_no_match /Request information/, ActionMailer::Base.deliveries.last.body
114
- assert_match /Information about the request/, ActionMailer::Base.deliveries.last.body
115
- end
116
-
117
- def test_request_info_attributes_are_printed
118
- @advanced.deliver
119
- assert_match /Remote ip/, ActionMailer::Base.deliveries.last.body
120
- assert_match /User agent/, ActionMailer::Base.deliveries.last.body
121
- end
122
-
123
- def test_request_info_attributes_are_localized
124
- I18n.backend.store_translations(:en, :mail_form => { :request => { :remote_ip => 'IP Address' } })
125
- @advanced.deliver
126
- assert_match /IP Address/, ActionMailer::Base.deliveries.last.body
127
- assert_no_match /Remote ip/, ActionMailer::Base.deliveries.last.body
128
- end
129
-
130
- def test_request_info_values_are_printed
131
- @advanced.deliver
132
- assert_match /0\.0\.0\.0/, ActionMailer::Base.deliveries.last.body
133
- assert_match /Rails Testing/, ActionMailer::Base.deliveries.last.body
134
- end
135
-
136
- def test_request_info_hashes_are_print_inside_lis
137
- @request.session = { :my => :session, :user => "data" }
138
- @advanced.deliver
139
- assert_match /<li>my: :session<\/li>/, ActionMailer::Base.deliveries.last.body
140
- assert_match /<li>user: &quot;data&quot;<\/li>/, ActionMailer::Base.deliveries.last.body
141
- end
142
-
143
- def test_error_is_raised_when_append_is_given_but_no_request_is_given
144
- assert_raise ScriptError do
145
- @advanced.request = nil
146
- @advanced.deliver
147
- end
148
- end
149
-
150
- def test_form_with_file_includes_an_attachment
151
- @with_file.deliver
152
-
153
- #For some reason I need to encode the mail before the attachments array returns values
154
- ActionMailer::Base.deliveries.first.to_s
155
- assert_equal 1, ActionMailer::Base.deliveries.first.attachments.size
156
- end
157
-
158
- def test_form_with_file_does_not_output_attachment_as_attribute
159
- @with_file.deliver
160
- assert_no_match /File/, ActionMailer::Base.deliveries.first.body
161
- end
162
-
163
- def test_form_with_customized_template_raise_missing_template_if_not_found
164
- assert_raise ActionView::MissingTemplate do
165
- @template.deliver
166
- end
167
- end
168
-
169
- def test_form_with_customized_template_render_correct_template
170
- begin
171
- default_template_root = MailForm::Notifier.template_root
172
- MailForm::Notifier.template_root = File.join(File.dirname(__FILE__), 'views')
173
- @template.deliver
174
- assert_match 'Hello from my cystom template!', ActionMailer::Base.deliveries.last.body
175
- ensure
176
- MailForm::Notifier.template_root = default_template_root
177
- end
178
- end
179
-
180
- def teardown
181
- I18n.reload!
182
- end
183
- end
@@ -1,30 +0,0 @@
1
- <h4 style="text-decoration:underline"><%=h @subject %></h4>
2
-
3
- <% @form.class.form_attributes.each do |attribute|
4
- value = @form.send(attribute)
5
- next if value.blank? %>
6
-
7
- <p><b><%= @form.class.human_attribute_name(attribute) %>:</b>
8
- <%= value.include?("\n") ? simple_format(h(value)) : h(value) %></p>
9
- <% end %>
10
-
11
- <% unless @form.class.form_appendable.blank? %>
12
- <br /><h4 style="text-decoration:underline"><%= I18n.t :title, :scope => [ :mail_form, :request ], :default => 'Request information' %></h4>
13
-
14
- <% @form.class.form_appendable.each do |attribute|
15
- value = @form.request.send(attribute)
16
-
17
- value = if value.is_a?(Hash) && !value.empty?
18
- content_tag(:ul, value.to_a.map{|k,v| content_tag(:li, h("#{k}: #{v.inspect}")) }.join("\n"), :style => "list-style:none;")
19
- elsif value.is_a?(String)
20
- h(value)
21
- else
22
- h(value.inspect)
23
- end
24
- %>
25
-
26
- <p><b><%= I18n.t attribute, :scope => [ :mail_form, :request ], :default => attribute.to_s.humanize %>:</b>
27
- <%= value.include?("\n") ? simple_format(value) : value %></p>
28
- <% end %>
29
- <br />
30
- <% end %>