spreewald 0.6.7 → 0.7.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/Rakefile +2 -2
- data/lib/spreewald/email_steps.rb +10 -7
- data/lib/spreewald_support/mail_finder.rb +1 -0
- data/lib/spreewald_support/version.rb +1 -1
- data/tests/rails-2.3/Gemfile.lock +1 -1
- data/tests/rails-2.3/Rakefile +2 -1
- data/tests/rails-2.3/config/database.yml +1 -0
- data/tests/rails-2.3/config/environments/cucumber.rb +0 -3
- data/tests/rails-3.2/Gemfile.lock +1 -1
- data/tests/rails-3.2/Rakefile +2 -1
- data/tests/rails-3.2/config/database.yml +1 -0
- data/tests/shared/app/controllers/emails_controller.rb +2 -4
- data/tests/shared/app/models/mailer.rb +20 -11
- data/tests/shared/features/shared/email_steps.feature +102 -3
- data/tests/shared/features/shared/step_definitions/test_steps.rb +1 -1
- metadata +4 -4
data/Rakefile
CHANGED
@@ -22,8 +22,8 @@ namespace :tests do
|
|
22
22
|
success = true
|
23
23
|
for_each_directory_of('tests/**/Rakefile') do |directory|
|
24
24
|
Bundler.with_clean_env do
|
25
|
-
env = "
|
26
|
-
success &= system("cd #{directory} &&
|
25
|
+
env = "FEATURE=../../#{ENV['FEATURE']}" if ENV['FEATURE']
|
26
|
+
success &= system("cd #{directory} && bundle exec rake features #{env}")
|
27
27
|
end
|
28
28
|
end
|
29
29
|
fail "Tests failed" unless success
|
@@ -15,24 +15,27 @@ end
|
|
15
15
|
# Then an email should have been sent with:
|
16
16
|
# """
|
17
17
|
# From: max.mustermann@example.com
|
18
|
+
# Reply-To: mmuster@gmail.com
|
18
19
|
# To: john.doe@example.com
|
19
20
|
# Subject: Unter anderem der Betreff kann auch "Anführungszeichen" enthalten
|
20
|
-
# Body: ...
|
21
21
|
# Attachments: ...
|
22
|
+
#
|
23
|
+
# Message body goes here.
|
22
24
|
# """
|
23
25
|
#
|
24
26
|
# You can skip lines, of course.
|
25
27
|
Then /^(an|no) e?mail should have been sent with:$/ do |mode, raw_data|
|
26
28
|
patiently do
|
27
29
|
raw_data.strip!
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
30
|
+
header, body = raw_data.split(/\n\n/)
|
31
|
+
conditions = {}
|
32
|
+
header.split("\n").each do |row|
|
33
|
+
if row.match(/^[a-z\-]+: /i)
|
34
|
+
key, value = row.split(": ", 2)
|
35
|
+
conditions[key.underscore.to_sym] = value
|
34
36
|
end
|
35
37
|
end
|
38
|
+
conditions[:body] = body if body
|
36
39
|
@mail = MailFinder.find(conditions)
|
37
40
|
expectation = mode == 'no' ? 'should_not' : 'should'
|
38
41
|
@mail.send(expectation, be_present)
|
@@ -13,6 +13,7 @@ class MailFinder
|
|
13
13
|
conditions[:cc].nil? || mail.cc.andand.include?(resolve_email conditions[:cc]),
|
14
14
|
conditions[:bcc].nil? || mail.bcc.andand.include?(resolve_email conditions[:bcc]),
|
15
15
|
conditions[:from].nil? || mail.from.include?(resolve_email conditions[:from]),
|
16
|
+
conditions[:reply_to].nil? || mail.reply_to.include?(resolve_email conditions[:reply_to]),
|
16
17
|
conditions[:subject].nil? || mail.subject.include?(conditions[:subject]),
|
17
18
|
conditions[:body].nil? || mail_body.include?(conditions[:body]),
|
18
19
|
conditions[:attachments].nil? || conditions[:attachments].split(/\s*,\s*/).sort == Array(mail.attachments).collect(&:"#{filename_method}").sort
|
data/tests/rails-2.3/Rakefile
CHANGED
@@ -7,5 +7,6 @@ task :default => :features
|
|
7
7
|
desc 'Run all specs for rails 2.3'
|
8
8
|
Cucumber::Rake::Task.new(:features) do |t|
|
9
9
|
# tell cucumber where it finds it files (subdirectories and symlinks are confusing it)
|
10
|
-
|
10
|
+
feature = ENV['FEATURE'] || "features/shared"
|
11
|
+
t.cucumber_opts = "--require features --require features/shared #{feature}"
|
11
12
|
end
|
data/tests/rails-3.2/Rakefile
CHANGED
@@ -7,6 +7,7 @@ task :default => :features
|
|
7
7
|
desc 'Run all specs for rails 3.2'
|
8
8
|
Cucumber::Rake::Task.new(:features) do |t|
|
9
9
|
# tell cucumber where it finds it files (subdirectories and symlinks are confusing it)
|
10
|
-
|
10
|
+
feature = ENV['FEATURE'] || "features/shared"
|
11
|
+
t.cucumber_opts = "--require features --require features/shared #{feature}"
|
11
12
|
end
|
12
13
|
|
@@ -5,12 +5,10 @@ class EmailsController < ApplicationController
|
|
5
5
|
end
|
6
6
|
|
7
7
|
def send_email
|
8
|
-
text = params[:id].to_s
|
9
|
-
|
10
8
|
if Rails.version >= "3"
|
11
|
-
Mailer.email
|
9
|
+
Mailer.email.deliver
|
12
10
|
else
|
13
|
-
Mailer.deliver_email
|
11
|
+
Mailer.deliver_email
|
14
12
|
end
|
15
13
|
|
16
14
|
render :nothing => true
|
@@ -1,23 +1,32 @@
|
|
1
1
|
class Mailer < ActionMailer::Base
|
2
2
|
|
3
|
-
|
3
|
+
REPLY_TO = "reply-to@example.com"
|
4
|
+
TO = "to@example.com"
|
5
|
+
FROM = "from@example.com"
|
6
|
+
SUBJECT = "SUBJECT"
|
7
|
+
BODY = "BODY"
|
4
8
|
|
5
|
-
|
6
|
-
:to => "to@example.com"
|
9
|
+
if Rails.version >= "3"
|
7
10
|
|
8
|
-
def email
|
9
|
-
mail(
|
10
|
-
|
11
|
+
def email
|
12
|
+
mail(
|
13
|
+
:from => FROM,
|
14
|
+
:reply_to => REPLY_TO,
|
15
|
+
:to => TO,
|
16
|
+
:subject => SUBJECT
|
17
|
+
) do |format|
|
18
|
+
format.text { render :text => BODY }
|
11
19
|
end
|
12
20
|
end
|
13
21
|
|
14
22
|
else
|
15
23
|
|
16
|
-
def email
|
17
|
-
recipients
|
18
|
-
|
19
|
-
|
20
|
-
|
24
|
+
def email
|
25
|
+
recipients TO
|
26
|
+
reply_to REPLY_TO
|
27
|
+
from FROM
|
28
|
+
subject SUBJECT
|
29
|
+
body BODY
|
21
30
|
end
|
22
31
|
|
23
32
|
end
|
@@ -9,8 +9,107 @@ Feature: Test Spreewald's email steps
|
|
9
9
|
Then the following step should fail:
|
10
10
|
| no email should have been sent |
|
11
11
|
|
12
|
-
|
13
12
|
Scenario: /^I should see "([^\"]*)" in the e?mail$/
|
14
|
-
When I go to "/emails/send_email
|
13
|
+
When I go to "/emails/send_email"
|
15
14
|
Then the following step should succeed:
|
16
|
-
| I should see "
|
15
|
+
| I should see "BODY" in the email |
|
16
|
+
But the following step should fail:
|
17
|
+
| I should see "XYZ" in the email |
|
18
|
+
|
19
|
+
Scenario: /^(an|no) e?mail should have been sent with:$/
|
20
|
+
When I go to "/emails/send_email"
|
21
|
+
|
22
|
+
# Test without body
|
23
|
+
Then the following multiline step should succeed:
|
24
|
+
"""
|
25
|
+
Then an email should have been sent with:
|
26
|
+
'''
|
27
|
+
From: from@example.com
|
28
|
+
Reply-To: reply-to@example.com
|
29
|
+
To: to@example.com
|
30
|
+
Subject: SUBJECT
|
31
|
+
'''
|
32
|
+
"""
|
33
|
+
|
34
|
+
# Test with body
|
35
|
+
Then the following multiline step should succeed:
|
36
|
+
"""
|
37
|
+
Then an email should have been sent with:
|
38
|
+
'''
|
39
|
+
From: from@example.com
|
40
|
+
Reply-To: reply-to@example.com
|
41
|
+
To: to@example.com
|
42
|
+
Subject: SUBJECT
|
43
|
+
|
44
|
+
BODY
|
45
|
+
'''
|
46
|
+
"""
|
47
|
+
|
48
|
+
# Test with incorrect From header
|
49
|
+
Then the following multiline step should fail:
|
50
|
+
"""
|
51
|
+
Then an email should have been sent with:
|
52
|
+
'''
|
53
|
+
From: other-from@example.com
|
54
|
+
Reply-To: reply-to@example.com
|
55
|
+
To: to@example.com
|
56
|
+
Subject: SUBJECT
|
57
|
+
|
58
|
+
BODY
|
59
|
+
'''
|
60
|
+
"""
|
61
|
+
|
62
|
+
# Test with incorrect Reply-To header
|
63
|
+
Then the following multiline step should fail:
|
64
|
+
"""
|
65
|
+
Then an email should have been sent with:
|
66
|
+
'''
|
67
|
+
From: from@example.com
|
68
|
+
Reply-To: other-reply-to@example.com
|
69
|
+
To: to@example.com
|
70
|
+
Subject: SUBJECT
|
71
|
+
|
72
|
+
BODY
|
73
|
+
'''
|
74
|
+
"""
|
75
|
+
# Test with incorrect To header
|
76
|
+
Then the following multiline step should fail:
|
77
|
+
"""
|
78
|
+
Then an email should have been sent with:
|
79
|
+
'''
|
80
|
+
From: from@example.com
|
81
|
+
Reply-To: reply-to@example.com
|
82
|
+
To: other-to@example.com
|
83
|
+
Subject: SUBJECT
|
84
|
+
|
85
|
+
BODY
|
86
|
+
'''
|
87
|
+
"""
|
88
|
+
|
89
|
+
# Test with incorrect Subject header
|
90
|
+
Then the following multiline step should fail:
|
91
|
+
"""
|
92
|
+
Then an email should have been sent with:
|
93
|
+
'''
|
94
|
+
From: from@example.com
|
95
|
+
Reply-To: reply-to@example.com
|
96
|
+
To: to@example.com
|
97
|
+
Subject: OTHER-SUBJECT
|
98
|
+
|
99
|
+
BODY
|
100
|
+
'''
|
101
|
+
"""
|
102
|
+
|
103
|
+
# Test with incorrect body
|
104
|
+
Then the following multiline step should fail:
|
105
|
+
"""
|
106
|
+
Then an email should have been sent with:
|
107
|
+
'''
|
108
|
+
From: from@example.com
|
109
|
+
Reply-To: reply-to@example.com
|
110
|
+
To: to@example.com
|
111
|
+
Subject: SUBJECT
|
112
|
+
|
113
|
+
OTHER-BODY
|
114
|
+
'''
|
115
|
+
"""
|
@@ -21,7 +21,7 @@ When /^I run the following steps?:$/ do |steps_table|
|
|
21
21
|
end
|
22
22
|
|
23
23
|
Then /^the following multiline step should (fail|succeed):$/ do |expectation, multiline_step|
|
24
|
-
|
24
|
+
multiline_step = multiline_step.gsub(%{'''}, %{"""})
|
25
25
|
if expectation == 'fail'
|
26
26
|
expect { steps(multiline_step) }.to raise_error(RSPEC_EXPECTATION_NOT_MET_ERROR)
|
27
27
|
else # succeed
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spreewald
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 3
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
- 6
|
9
8
|
- 7
|
10
|
-
|
9
|
+
- 0
|
10
|
+
version: 0.7.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Tobias Kraze
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2013-10-
|
18
|
+
date: 2013-10-30 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|