test_assistant 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fd9da0b295791c6249e94172857509c44b58b7ac
4
- data.tar.gz: ffb211e31de33220bfeea704961e844738597308
3
+ metadata.gz: 48905c8c6be7fc91de87ac31c24b5314338b0bf9
4
+ data.tar.gz: c39d609ffb786a18edb427ca959ac0e0ae47bb2c
5
5
  SHA512:
6
- metadata.gz: 3c98c15b60558a8615edfdfc7336e307848eb481f8167574a7208d559d48220b1f6686b454b38e9c6f9932329158d5fbac98b40f470b71e89e956b62cb6f34db
7
- data.tar.gz: 3d0500451574c4b9bffd61a05b5a8380a9fc5a8eeac1bc555b5e38348945c3d7f7b8bf931fb832fc6faf419b20fcf8ee98792ccd8a754c0de5668481e9b3f804
6
+ metadata.gz: 3e6c40ca210cb0a3d2ad25394cecbb2c564bedf9e0f8313b9581103ea71e73088fb492ff7f6579c6bb419e2ade754c87083dad260396074145a9bf3fb0b6b350
7
+ data.tar.gz: 8ad25ab4b5b18080abb83f1d42a489ba93db0ea23cae04c439429adce73c8d1873dd2e5b4722b45d47121bc9831a87dfcc90ce3d3eeae67c2dea5570eab2240e
data/README.md CHANGED
@@ -105,6 +105,12 @@ RSpec.describe 'making some valid request', type: :request do
105
105
  .with_selector('#password').and('#username')
106
106
  .with_link('www.site.com/onboarding/1')
107
107
  .with_image('www.site.com/assets/images/welcome.png')
108
+
109
+ clear_emails
110
+
111
+ # further actions
112
+
113
+ expect(email).to have_been_sent.to('user@email.com')
108
114
  end
109
115
  end
110
116
  end
@@ -1,5 +1,5 @@
1
1
  module TestAssistant
2
- autoload :JSONHelpers, 'test_assistant/json_helpers'
2
+ autoload :Json, 'test_assistant/json/helpers'
3
3
  autoload :Email, 'test_assistant/email/helpers'
4
4
  autoload :FailureReporter, 'test_assistant/failure_reporter'
5
5
 
@@ -9,7 +9,7 @@ module TestAssistant
9
9
  end
10
10
 
11
11
  def include_json_helpers(options = {})
12
- @rspec_config.include JSONHelpers, options
12
+ @rspec_config.include Json::Helpers, options
13
13
  end
14
14
 
15
15
  def include_email_helpers(options = {})
@@ -6,6 +6,10 @@ module TestAssistant::Email
6
6
  ActionMailer::Base.deliveries
7
7
  end
8
8
 
9
+ def clear_emails
10
+ ActionMailer::Base.deliveries = []
11
+ end
12
+
9
13
  def have_been_sent
10
14
  TestAssistant::Email::Expectation.new
11
15
  end
@@ -0,0 +1,68 @@
1
+ require 'capybara/rspec'
2
+ require 'hashdiff'
3
+
4
+ module TestAssistant::Json
5
+ class Expectation
6
+ def initialize(expected)
7
+ @expected = expected
8
+ end
9
+
10
+ def diffable?
11
+ false
12
+ end
13
+
14
+ def matches?(actual)
15
+ @actual = actual
16
+ @expected.eql?(@actual)
17
+ end
18
+
19
+ def failure_message
20
+ message = ''
21
+ message += "Expected: #{@expected}\n\n"
22
+ message += "Actual: #{@actual}\n\n"
23
+ message += "Differences\n\n"
24
+
25
+ differences = HashDiff.diff(@actual, @expected)
26
+
27
+ differences.each do |difference|
28
+ operator, *operands = difference
29
+
30
+ case operator
31
+ when '-'
32
+ attribute, value = operands
33
+
34
+ message += format_diff(attribute, nil, value)
35
+ when '+'
36
+ attribute, value = operands
37
+
38
+ message += format_diff(attribute, value, nil)
39
+ else
40
+ attribute, actual_value, expected_value = operands
41
+
42
+ message += format_diff(attribute, expected_value, actual_value)
43
+ end
44
+ end
45
+
46
+ message
47
+ end
48
+
49
+ private
50
+
51
+ def format_diff(attribute, expected, actual)
52
+ diff_description = ''
53
+ diff_description += "#{attribute}\n"
54
+ diff_description += "Expected: #{format_value(expected)}\n"
55
+ diff_description += "Actual: #{format_value(actual)}\n\n"
56
+ diff_description
57
+ end
58
+
59
+ def format_value(value)
60
+ if value.kind_of?(String)
61
+ "'#{value}'"
62
+ else
63
+ value
64
+ end
65
+ end
66
+
67
+ end
68
+ end
@@ -0,0 +1,17 @@
1
+ require 'test_assistant/json/expectation'
2
+
3
+ module TestAssistant::Json
4
+ module Helpers
5
+ def json_response
6
+ begin
7
+ JSON.parse(response.body)
8
+ rescue JSON::ParserError
9
+ '< INVALID JSON RESPONSE >'.freeze
10
+ end
11
+ end
12
+
13
+ def eql_json(expected)
14
+ TestAssistant::Json::Expectation.new(expected)
15
+ end
16
+ end
17
+ end
@@ -1,3 +1,3 @@
1
1
  module TestAssistant
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_dependency "rspec-rails", "~> 3.0"
22
22
  spec.add_dependency 'capybara', '~> 2.5', '>= 2.5.0'
23
+ spec.add_dependency 'hashdiff', '~> 0'
23
24
  spec.add_development_dependency "bundler", "~> 1.6"
24
25
  spec.add_development_dependency "rake", "~> 0"
25
26
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: test_assistant
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aleck Greenham
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-06-07 00:00:00.000000000 Z
11
+ date: 2016-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec-rails
@@ -44,6 +44,20 @@ dependencies:
44
44
  - - ">="
45
45
  - !ruby/object:Gem::Version
46
46
  version: 2.5.0
47
+ - !ruby/object:Gem::Dependency
48
+ name: hashdiff
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :runtime
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
47
61
  - !ruby/object:Gem::Dependency
48
62
  name: bundler
49
63
  requirement: !ruby/object:Gem::Requirement
@@ -90,7 +104,8 @@ files:
90
104
  - lib/test_assistant/email/expectation.rb
91
105
  - lib/test_assistant/email/helpers.rb
92
106
  - lib/test_assistant/failure_reporter.rb
93
- - lib/test_assistant/json_helpers.rb
107
+ - lib/test_assistant/json/expectation.rb
108
+ - lib/test_assistant/json/helpers.rb
94
109
  - lib/test_assistant/version.rb
95
110
  - test_assistant.gemspec
96
111
  homepage: https://github.com/greena13/test_assistant
@@ -1,9 +0,0 @@
1
- module TestAssistant::JSONHelpers
2
- def json_response
3
- begin
4
- JSON.parse(response.body)
5
- rescue JSON::ParserError
6
- '< INVALID JSON RESPONSE >'.freeze
7
- end
8
- end
9
- end