expresenter 1.0.1 → 1.1.0

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
  SHA256:
3
- metadata.gz: f131ba55891e3abc10e518e86df59ab1ed2051f8c8dcdaddfe06ad40f62bde85
4
- data.tar.gz: 1e717b60df591416909fa9d4d1772347924dd99904e2d5f85efb6cfbd4ba0bdb
3
+ metadata.gz: 3fa35d343813c6913d049086af460babf8a5a84b18c7058853fe956c50a3f143
4
+ data.tar.gz: cbcd35e730fd41b653b7ea944a3b2d0861229e204919747e60940074964aa97d
5
5
  SHA512:
6
- metadata.gz: eff6bc9cb5101af90834ee70cc856ddcd3796bb848e0c30eda86227293058dec97bcf401cd8807238282dd790fddb3d7c3792b9a304ddf96866a97c156750663
7
- data.tar.gz: 2104cc18ff071a607e8e5a932f5c85c537f06f0f41060a849b4d6954b306e6a00dff1bf4f2f55d1e4647dbeb9b13dd5f9893287e5f531d229b189c10ffa0baa3
6
+ metadata.gz: 6d4e83fd46dc38ac64bae7ebf4577a0d964d11aa49e4ff88c573e294d943a3c450dc2212678b97d6976f7bc3850936db0df3f946b80da22e0d00615c76d48f97
7
+ data.tar.gz: 4ad82f7aa266fc139e166821a3b18766c24c50ef5ee92fad16f013d8b4240cfd6ea135e105606dab014ea9afffccb8036b669950d0b8254cf576913aa363dba1
data/README.md CHANGED
@@ -41,7 +41,7 @@ Then,
41
41
  * for a `true` assertion, a `Expresenter::Pass` instance can be returned;
42
42
  * for a `false` assertion, a `Expresenter::Fail` exception can be raised.
43
43
 
44
- Both class share a common interface.
44
+ Both class share a same `Common` interface.
45
45
 
46
46
  Passed expectations can be classified as:
47
47
 
@@ -54,10 +54,25 @@ Failed expectations can be classified as:
54
54
  * ❌ failure
55
55
  * 💥 error
56
56
 
57
- ## Example
57
+ ### Instantiation
58
+
59
+ The following parameters are required to instantiate the result:
60
+
61
+ * `actual`: Returned value by the challenged subject.
62
+ * `error`: Any possible raised exception.
63
+ * `expected`: The expected value.
64
+ * `got`: The result of the boolean comparison between the actual value and the expected value through the matcher.
65
+ * `negate`: Evaluated to a negative assertion?
66
+ * `valid`: Report if the test was `true` or `false`.
67
+ * `matcher`: The symbol representing a matcher.
68
+ * `level`: The requirement level (`:MUST`, `:SHOULD` or `:MAY`).
69
+
70
+ #### Examples
71
+
72
+ A passed expectation:
58
73
 
59
74
  ```ruby
60
- result = Expresenter.call(true).with(actual: "FOO", error: nil, expected: "foo", got: true, negate: true, valid: true, matcher: :eql, level: :MUST)
75
+ result = Expresenter.call(true).new(actual: "FOO", error: nil, expected: "foo", got: true, negate: true, valid: true, matcher: :eql, level: :MUST)
61
76
 
62
77
  result.failed? # => false
63
78
  result.failure? # => false
@@ -82,6 +97,56 @@ result.to_s # => "Success: expected \"FOO\" not to eql \"foo\"."
82
97
  result.titre # => "Success"
83
98
  ```
84
99
 
100
+ A failed expectation:
101
+
102
+ ```ruby
103
+ result = Expresenter.call(false).new(actual: "foo", error: Exception.new("BOOM"), expected: 42, got: true, negate: true, valid: true, matcher: :eql, level: :MUST)
104
+
105
+ actual.failed? # => true
106
+ actual.failure? # => false
107
+ actual.info? # => false
108
+ actual.warning? # => false
109
+ actual.to_sym # => :error
110
+ actual.char # => "E"
111
+ actual.emoji # => "💥"
112
+ actual.passed? # => false
113
+ actual.negate? # => true
114
+ actual.error? # => true
115
+ actual.success? # => true
116
+ actual.valid? # => true
117
+ actual.inspect # => "Expresenter::Fail(actual: \"foo\", error: #<Exception: BOOM>, expected: 42, got: true, matcher: :eql, negate: true, level: :MUST, valid: true)"
118
+ actual.definition # => "eql 42"
119
+ actual.maybe_negate # => " not"
120
+ actual.summary # => "BOOM"
121
+ actual.colored_char # => "\e[32mE\e[0m"
122
+ actual.colored_string # => "\e[32mException: BOOM.\e[0m"
123
+ actual.message # => "Exception: BOOM."
124
+ actual.to_s # => "Exception: BOOM."
125
+ actual.titre # => "Exception"
126
+ ```
127
+
128
+ ### Return or Raise
129
+
130
+ To return the results which pass, and to raise the results which fail, the `with` method is available.
131
+
132
+ In this example, the result passes, the instance is therefore returned:
133
+
134
+ ```ruby
135
+ Expresenter.call(true).with(actual: "FOO", error: nil, expected: "foo", got: true, negate: true, valid: true, matcher: :eql, level: :MUST) # => Expresenter::Pass(actual: "FOO", error: nil, expected: "foo", got: true, matcher: :eql, negate: true, level: :MUST, valid: true)
136
+ ```
137
+
138
+ In this example, the result fails, so the exception is raised:
139
+
140
+ ```ruby
141
+ Expresenter.call(false).with(actual: "foo", error: Exception.new("BOOM"), expected: 42, got: true, negate: true, valid: true, matcher: :eql, level: :MUST)
142
+ ```
143
+
144
+ > Traceback (most recent call last):
145
+ > 3: from ./bin/console:7:in `<main>'
146
+ > 2: from (irb):1
147
+ > 1: from /Users/cyril/github/fixrb/expresenter/lib/expresenter/fail.rb:12:in `with'
148
+ > Expresenter::Fail (Exception: BOOM.)
149
+
85
150
  ### More Examples
86
151
 
87
152
  A full list of unit tests can be viewed (and executed) here:
data/lib/expresenter.rb CHANGED
@@ -1,9 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  # Namespace for the Expresenter library.
4
+ #
5
+ # @example A passed expectation result presenter.
6
+ # Expresenter.call(true).with(actual: "FOO", error: nil, expected: "foo", got: true, negate: true, valid: true, matcher: :eql, level: :MUST)
4
7
  module Expresenter
5
- # @raise [Fail] A failed spec result.
6
- # @return [Pass] A passed spec result.
8
+ # @param is_passed [Boolean] The value of an assertion.
9
+ # @return [Class<Pass>, Class<Fail>] The class of the result.
10
+ # @example Get the pass class result.
11
+ # call(true) # => Pass
7
12
  def self.call(is_passed)
8
13
  is_passed ? Pass : Fail
9
14
  end
@@ -1,8 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Expresenter
4
- # Common collection of methods for Result's classes.
5
- module Base
4
+ # Common collection of methods.
5
+ module Common
6
6
  # @return [#object_id] Returned value by the challenged subject.
7
7
  attr_reader :actual
8
8
 
@@ -22,32 +22,6 @@ module Expresenter
22
22
  # @return [:MUST, :SHOULD, :MAY] The requirement level of the expectation.
23
23
  attr_reader :level
24
24
 
25
- # Common initialize method.
26
- #
27
- # @param actual [#object_id] Returned value by the challenged subject.
28
- # @param error [Exception, nil] Any possible raised exception.
29
- # @param expected [#object_id] The expected value.
30
- # @param got [Boolean, nil] The result of the boolean comparison
31
- # between the actual value and the expected value through the matcher.
32
- # @param negate [Boolean] Evaluated to a negative assertion?
33
- # @param valid [Boolean] Report if the test was true or false?
34
- # @param matcher [Symbol] The matcher.
35
- # @param level [:MUST, :SHOULD, :MAY] The requirement level.
36
- def initialize(actual:, error:, expected:, got:, negate:, valid:,
37
- matcher:, level:)
38
-
39
- @actual = actual
40
- @error = error
41
- @expected = expected
42
- @got = got
43
- @negate = negate
44
- @valid = valid
45
- @matcher = matcher
46
- @level = level
47
-
48
- super(to_s) if failed?
49
- end
50
-
51
25
  # Did the test pass?
52
26
  #
53
27
  # @return [Boolean] The spec passed or failed?
@@ -1,17 +1,44 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "base"
3
+ require_relative "common"
4
4
 
5
5
  module Expresenter
6
- # The class that is responsible for reporting that the expectation is false.
6
+ # The class that is responsible for reporting that an expectation is false.
7
7
  class Fail < ::StandardError
8
- include Base
8
+ include Common
9
9
 
10
- # @raise [Fail] A failed spec result.
10
+ # @param (see Fail#initialize)
11
+ # @raise [Fail] A failed spec exception.
11
12
  def self.with(**details)
12
13
  raise new(**details)
13
14
  end
14
15
 
16
+ # Initialize method.
17
+ #
18
+ # @param actual [#object_id] Returned value by the challenged subject.
19
+ # @param error [Exception, nil] Any possible raised exception.
20
+ # @param expected [#object_id] The expected value.
21
+ # @param got [Boolean, nil] The result of the boolean comparison
22
+ # between the actual value and the expected value through the matcher.
23
+ # @param negate [Boolean] Evaluated to a negative assertion?
24
+ # @param valid [Boolean] Report if the test was true or false?
25
+ # @param matcher [Symbol] The matcher.
26
+ # @param level [:MUST, :SHOULD, :MAY] The requirement level.
27
+ def initialize(actual:, error:, expected:, got:, negate:, valid:,
28
+ matcher:, level:)
29
+
30
+ @actual = actual
31
+ @error = error
32
+ @expected = expected
33
+ @got = got
34
+ @negate = negate
35
+ @valid = valid
36
+ @matcher = matcher
37
+ @level = level
38
+
39
+ super(to_s)
40
+ end
41
+
15
42
  # Did the test fail?
16
43
  #
17
44
  # @return [Boolean] The spec passed or failed?
@@ -44,7 +71,11 @@ module Expresenter
44
71
  #
45
72
  # @return [Symbol] The identifier of the state.
46
73
  def to_sym
47
- failure? ? :failure : :error
74
+ if failure?
75
+ :failure
76
+ else
77
+ :error
78
+ end
48
79
  end
49
80
 
50
81
  # Express the result with one char.
@@ -1,19 +1,44 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "base"
3
+ require_relative "common"
4
4
 
5
5
  module Expresenter
6
- # The class that is responsible for reporting that the expectation is true.
6
+ # The class that is responsible for reporting that an expectation is true.
7
7
  class Pass
8
- include Base
8
+ include Common
9
9
 
10
- # @return [Pass] A passed spec result.
10
+ # @param (see Pass#initialize)
11
+ # @return [Pass] A passed spec instance.
11
12
  def self.with(**details)
12
13
  new(**details)
13
14
  end
14
15
 
15
16
  alias message to_s
16
17
 
18
+ # Initialize method.
19
+ #
20
+ # @param actual [#object_id] Returned value by the challenged subject.
21
+ # @param error [Exception, nil] Any possible raised exception.
22
+ # @param expected [#object_id] The expected value.
23
+ # @param got [Boolean, nil] The result of the boolean comparison
24
+ # between the actual value and the expected value through the matcher.
25
+ # @param negate [Boolean] Evaluated to a negative assertion?
26
+ # @param valid [Boolean] Report if the test was true or false?
27
+ # @param matcher [Symbol] The matcher.
28
+ # @param level [:MUST, :SHOULD, :MAY] The requirement level.
29
+ def initialize(actual:, error:, expected:, got:, negate:, valid:,
30
+ matcher:, level:)
31
+
32
+ @actual = actual
33
+ @error = error
34
+ @expected = expected
35
+ @got = got
36
+ @negate = negate
37
+ @valid = valid
38
+ @matcher = matcher
39
+ @level = level
40
+ end
41
+
17
42
  # Did the test fail?
18
43
  #
19
44
  # @return [Boolean] The spec passed or failed?
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: expresenter
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cyril Kato
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-05-11 00:00:00.000000000 Z
11
+ date: 2021-05-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: brutal
@@ -145,7 +145,7 @@ files:
145
145
  - LICENSE.md
146
146
  - README.md
147
147
  - lib/expresenter.rb
148
- - lib/expresenter/base.rb
148
+ - lib/expresenter/common.rb
149
149
  - lib/expresenter/fail.rb
150
150
  - lib/expresenter/pass.rb
151
151
  homepage: https://github.com/fixrb/expresenter