spreewald 0.6.7 → 0.7.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|