Skip to content

Commit d10edf4

Browse files
authored
Convert tests to rspec. (#36)
1 parent 7c4b553 commit d10edf4

File tree

14 files changed

+126
-110
lines changed

14 files changed

+126
-110
lines changed

.travis.yml

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,7 @@
1+
branches:
2+
only:
3+
- master
4+
15
language: ruby
26

37
rvm:
@@ -6,7 +10,8 @@ rvm:
610
- 2.5
711
- 2.6
812
- 2.7
9-
- jruby
13+
- jruby-9.1
14+
- jruby-9.2
1015

1116
gemfile:
1217
- gemfiles/rails-5.2.gemfile
@@ -25,5 +30,7 @@ jobs:
2530
rvm: 2.3
2631
- gemfile: gemfiles/rails-6.0.gemfile
2732
rvm: 2.4
33+
- gemfile: gemfiles/rails-6.0.gemfile
34+
rvm: jruby-9.1
2835

2936
bundler_args: --without docs release

Gemfile

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ group :development do
88
gem 'rubocop'
99
end
1010

11+
group :test do
12+
gem 'rspec'
13+
end
14+
1115
group :docs do
1216
gem 'yard'
1317
gem 'yard-sitemap', '~> 1.0'

Rakefile

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,17 @@
11
# frozen_string_literal: true
22

3-
require 'rake/testtask'
43
require 'rubocop/rake_task'
54

6-
root = File.dirname(__FILE__)
7-
8-
$VERSION = ENV['VERSION'] || File.read(File.join(root, 'VERSION')).strip
5+
$REPO_ROOT = File.dirname(__FILE__)
6+
$VERSION = ENV['VERSION'] || File.read(File.join($REPO_ROOT, 'VERSION')).strip
97

108
Dir.glob('**/*.rake').each do |task_file|
119
load task_file
1210
end
1311

14-
Rake::TestTask.new do |t|
15-
t.libs << 'test'
16-
t.pattern = 'test/**/*_test.rb'
17-
end
12+
13+
desc 'Runs unit tests'
14+
task 'test' => ['test:unit']
1815

1916
RuboCop::RakeTask.new
2017

spec/aws/rails/mailer_spec.rb

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,74 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../../spec_helper'
4+
require 'mail'
5+
6+
class TestMailer < ActionMailer::Base
7+
layout nil
8+
9+
def deliverable(options = {})
10+
mail(
11+
body: options[:body],
12+
delivery_method: :ses,
13+
from: options[:from],
14+
subject: options[:subject],
15+
to: options[:to]
16+
)
17+
end
18+
end
19+
20+
module Aws
21+
module Rails
22+
describe Mailer do
23+
let(:client_options) do
24+
{
25+
stub_responses: {
26+
send_raw_email: {
27+
message_id: ses_message_id
28+
}
29+
}
30+
}
31+
end
32+
33+
let(:mailer) { Mailer.new(client_options) }
34+
35+
let(:sample_message) do
36+
TestMailer.deliverable(
37+
body: 'Hallo',
38+
39+
subject: 'This is a test',
40+
41+
)
42+
end
43+
44+
let(:ses_message_id) do
45+
'0000000000000000-1111111-2222-3333-4444-555555555555-666666'
46+
end
47+
48+
before do
49+
ActionMailer::Base.add_delivery_method(:ses, Mailer, client_options)
50+
end
51+
52+
describe '#settings' do
53+
it 'returns an empty hash' do
54+
expect(mailer.settings).to eq({})
55+
end
56+
end
57+
58+
describe '#deliver' do
59+
it 'delivers the message' do
60+
mailer_data = mailer.deliver!(sample_message).context.params
61+
raw = mailer_data[:raw_message][:data].to_s
62+
raw.gsub!("\r\nHallo", "ses-message-id: #{ses_message_id}\r\n\r\nHallo")
63+
expect(raw).to eq sample_message.to_s
64+
expect(mailer_data[:destinations]).to eq sample_message.destinations
65+
end
66+
67+
it 'delivers with action mailer' do
68+
message = sample_message.deliver_now
69+
expect(message.header[:ses_message_id].value).to eq ses_message_id
70+
end
71+
end
72+
end
73+
end
74+
end

spec/aws/rails/railtie_spec.rb

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
# frozen_string_literal: true
2+
3+
require_relative '../../spec_helper'
4+
5+
module Aws
6+
module Rails
7+
8+
describe 'Railtie' do
9+
it 'adds action mailer delivery method' do
10+
expect(ActionMailer::Base.delivery_methods[:ses]).to eq Aws::Rails::Mailer
11+
end
12+
13+
it 'sets the Aws logger' do
14+
expect(Aws.config[:logger]).to eq ::Rails.logger
15+
end
16+
17+
context 'rails encrypted credentials' do
18+
let(:rails_creds) { ::Rails.application.credentials.aws }
19+
it 'sets aws credentials' do
20+
expect(Aws.config[:access_key_id]).to eq rails_creds[:access_key_id]
21+
expect(Aws.config[:secret_access_key]).to eq rails_creds[:secret_access_key]
22+
end
23+
24+
it 'does not load non credential keys into aws config' do
25+
expect(rails_creds[:non_credential_key]).not_to be_nil
26+
expect(Aws.config[:non_credential_key]).to be_nil
27+
end
28+
end
29+
30+
end
31+
end
32+
end
File renamed without changes.
File renamed without changes.
File renamed without changes.
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
# frozen_string_literal: true
22

3-
require 'minitest/autorun'
4-
ENV['RAILS_ENV'] = 'test'
3+
require 'rspec'
54

5+
ENV['RAILS_ENV'] = 'test'
66
require_relative 'dummy/config/application'
77

88
Rails.application.initialize!

test/aws/rails/mailer_test.rb

Lines changed: 0 additions & 71 deletions
This file was deleted.

test/aws/rails/railtie_test.rb

Lines changed: 0 additions & 27 deletions
This file was deleted.

0 commit comments

Comments
 (0)