rspec-expectations 2.12.1 → 2.13.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.
Files changed (76) hide show
  1. data/Changelog.md +31 -0
  2. data/README.md +1 -1
  3. data/features/built_in_matchers/be.feature +6 -4
  4. data/features/built_in_matchers/be_within.feature +3 -1
  5. data/features/built_in_matchers/cover.feature +2 -0
  6. data/features/built_in_matchers/end_with.feature +2 -0
  7. data/features/built_in_matchers/equality.feature +9 -15
  8. data/features/built_in_matchers/exist.feature +2 -0
  9. data/features/built_in_matchers/expect_error.feature +14 -8
  10. data/features/built_in_matchers/have.feature +11 -5
  11. data/features/built_in_matchers/include.feature +53 -0
  12. data/features/built_in_matchers/match.feature +2 -0
  13. data/features/built_in_matchers/operators.feature +17 -11
  14. data/features/built_in_matchers/predicates.feature +21 -13
  15. data/features/built_in_matchers/respond_to.feature +7 -1
  16. data/features/built_in_matchers/satisfy.feature +2 -0
  17. data/features/built_in_matchers/start_with.feature +2 -0
  18. data/features/built_in_matchers/throw_symbol.feature +6 -0
  19. data/features/built_in_matchers/types.feature +8 -6
  20. data/lib/rspec/expectations/deprecation.rb +1 -1
  21. data/lib/rspec/expectations/differ.rb +8 -8
  22. data/lib/rspec/expectations/fail_with.rb +17 -3
  23. data/lib/rspec/expectations/syntax.rb +46 -0
  24. data/lib/rspec/expectations/version.rb +1 -1
  25. data/lib/rspec/matchers/built_in/be.rb +7 -3
  26. data/lib/rspec/matchers/built_in/be_within.rb +13 -4
  27. data/lib/rspec/matchers/built_in/change.rb +2 -2
  28. data/lib/rspec/matchers/built_in/equal.rb +5 -1
  29. data/lib/rspec/matchers/built_in/exist.rb +1 -1
  30. data/lib/rspec/matchers/built_in/have.rb +8 -8
  31. data/lib/rspec/matchers/built_in/include.rb +19 -3
  32. data/lib/rspec/matchers/built_in/respond_to.rb +1 -1
  33. data/lib/rspec/matchers/extensions/instance_eval_with_args.rb +1 -1
  34. data/lib/rspec/matchers/matcher.rb +4 -3
  35. data/lib/rspec/matchers/operator_matcher.rb +1 -1
  36. data/lib/rspec/matchers/pretty.rb +5 -1
  37. data/spec/rspec/expectations/differ_spec.rb +8 -15
  38. data/spec/rspec/expectations/expectation_target_spec.rb +18 -8
  39. data/spec/rspec/expectations/extensions/kernel_spec.rb +15 -15
  40. data/spec/rspec/expectations/fail_with_spec.rb +41 -16
  41. data/spec/rspec/expectations/handler_spec.rb +13 -13
  42. data/spec/rspec/expectations/syntax_spec.rb +70 -8
  43. data/spec/rspec/matchers/base_matcher_spec.rb +14 -12
  44. data/spec/rspec/matchers/be_close_spec.rb +1 -1
  45. data/spec/rspec/matchers/be_instance_of_spec.rb +14 -8
  46. data/spec/rspec/matchers/be_kind_of_spec.rb +12 -8
  47. data/spec/rspec/matchers/be_spec.rb +212 -148
  48. data/spec/rspec/matchers/be_within_spec.rb +91 -42
  49. data/spec/rspec/matchers/change_spec.rb +52 -38
  50. data/spec/rspec/matchers/configuration_spec.rb +19 -15
  51. data/spec/rspec/matchers/cover_spec.rb +19 -19
  52. data/spec/rspec/matchers/description_generation_spec.rb +86 -86
  53. data/spec/rspec/matchers/dsl_spec.rb +7 -7
  54. data/spec/rspec/matchers/eq_spec.rb +17 -11
  55. data/spec/rspec/matchers/eql_spec.rb +10 -10
  56. data/spec/rspec/matchers/equal_spec.rb +27 -9
  57. data/spec/rspec/matchers/exist_spec.rb +35 -21
  58. data/spec/rspec/matchers/has_spec.rb +33 -29
  59. data/spec/rspec/matchers/have_spec.rb +165 -151
  60. data/spec/rspec/matchers/include_matcher_integration_spec.rb +30 -0
  61. data/spec/rspec/matchers/include_spec.rb +282 -124
  62. data/spec/rspec/matchers/match_array_spec.rb +90 -49
  63. data/spec/rspec/matchers/match_spec.rb +21 -21
  64. data/spec/rspec/matchers/matcher_spec.rb +85 -48
  65. data/spec/rspec/matchers/matchers_spec.rb +12 -6
  66. data/spec/rspec/matchers/method_missing_spec.rb +5 -1
  67. data/spec/rspec/matchers/operator_matcher_spec.rb +216 -237
  68. data/spec/rspec/matchers/raise_error_spec.rb +132 -132
  69. data/spec/rspec/matchers/respond_to_spec.rb +109 -112
  70. data/spec/rspec/matchers/satisfy_spec.rb +16 -16
  71. data/spec/rspec/matchers/start_with_end_with_spec.rb +36 -32
  72. data/spec/rspec/matchers/throw_symbol_spec.rb +24 -24
  73. data/spec/rspec/matchers/yield_spec.rb +7 -7
  74. data/spec/spec_helper.rb +46 -19
  75. data/spec/support/in_sub_process.rb +27 -20
  76. metadata +81 -83
@@ -25,7 +25,7 @@ module RSpec
25
25
  end
26
26
 
27
27
  PERSISTENT_INSTANCE_VARIABLES = [
28
- :@name, :@declarations, :@diffable, :@messages,
28
+ :@name, :@declarations, :@diffable,
29
29
  :@match_block, :@match_for_should_not_block,
30
30
  :@expected_exception
31
31
  ].to_set
@@ -37,6 +37,7 @@ module RSpec
37
37
  instance_variables.map {|ivar| ivar.intern}.each do |ivar|
38
38
  instance_variable_set(ivar, nil) unless (PERSISTENT_INSTANCE_VARIABLES + [:@expected]).include?(ivar)
39
39
  end
40
+ @messages = {}
40
41
  making_declared_methods_public do
41
42
  instance_eval_with_args(*@expected, &@declarations)
42
43
  end
@@ -230,7 +231,7 @@ module RSpec
230
231
 
231
232
  def method_missing(method, *args, &block)
232
233
  if matcher_execution_context.respond_to?(method)
233
- matcher_execution_context.send method, *args, &block
234
+ matcher_execution_context.__send__ method, *args, &block
234
235
  else
235
236
  super(method, *args, &block)
236
237
  end
@@ -272,7 +273,7 @@ module RSpec
272
273
  if @messages.has_key?(key)
273
274
  @messages[key].arity == 1 ? @messages[key].call(@actual) : @messages[key].call
274
275
  else
275
- send("default_#{key}")
276
+ __send__("default_#{key}")
276
277
  end
277
278
  end
278
279
 
@@ -32,7 +32,7 @@ module RSpec
32
32
  def self.use_custom_matcher_or_delegate(operator)
33
33
  define_method(operator) do |expected|
34
34
  if uses_generic_implementation_of?(operator) && matcher = OperatorMatcher.get(@actual.class, operator)
35
- @actual.send(::RSpec::Matchers.last_should, matcher.new(expected))
35
+ @actual.__send__(::RSpec::Matchers.last_should, matcher.new(expected))
36
36
  else
37
37
  eval_match(@actual, operator, expected)
38
38
  end
@@ -7,7 +7,7 @@ module RSpec
7
7
 
8
8
  def to_sentence(words)
9
9
  return "" unless words
10
- words = Array(words).map{|w| w.inspect}
10
+ words = Array(words).map { |w| to_word(w) }
11
11
  case words.length
12
12
  when 0
13
13
  ""
@@ -34,6 +34,10 @@ module RSpec
34
34
  result
35
35
  end
36
36
 
37
+ def to_word(item)
38
+ item.respond_to?(:description) ? item.description : item.inspect
39
+ end
40
+
37
41
  def name_to_sentence
38
42
  split_words(name)
39
43
  end
@@ -36,7 +36,7 @@ module RSpec
36
36
  EOD
37
37
 
38
38
  diff = differ.diff_as_string(expected, actual)
39
- diff.should eql(expected_diff)
39
+ expect(diff).to eql(expected_diff)
40
40
  end
41
41
  end
42
42
 
@@ -71,15 +71,7 @@ EOD
71
71
  EOD
72
72
 
73
73
  diff = differ.diff_as_object(expected,actual)
74
- diff.should == expected_diff
75
- end
76
-
77
- it "outputs a message if the diff is empty" do
78
- diff = differ.diff_as_object('foo', 'foo')
79
- diff.should eq(
80
- "foo.==(foo) returned false even though the diff between " \
81
- "foo and foo is empty. Check the implementation of foo.==."
82
- )
74
+ expect(diff).to eq expected_diff
83
75
  end
84
76
 
85
77
  it "outputs unified diff message of two arrays" do
@@ -101,7 +93,7 @@ EOD
101
93
  EOD
102
94
 
103
95
  diff = differ.diff_as_object(expected,actual)
104
- diff.should == expected_diff
96
+ expect(diff).to eq expected_diff
105
97
  end
106
98
 
107
99
  it "outputs unified diff message of two hashes" do
@@ -120,7 +112,7 @@ EOD
120
112
  EOD
121
113
 
122
114
  diff = differ.diff_as_object(expected,actual)
123
- diff.should == expected_diff
115
+ expect(diff).to eq expected_diff
124
116
  end
125
117
 
126
118
  it "outputs unified diff of single line strings" do
@@ -135,7 +127,7 @@ EOD
135
127
  EOD
136
128
 
137
129
  diff = differ.diff_as_object(expected,actual)
138
- diff.should == expected_diff
130
+ expect(diff).to eq expected_diff
139
131
  end
140
132
 
141
133
  it "outputs unified diff of multi line strings" do
@@ -151,7 +143,7 @@ EOD
151
143
  EOD
152
144
 
153
145
  diff = differ.diff_as_object(expected,actual)
154
- diff.should == expected_diff
146
+ expect(diff).to eq expected_diff
155
147
  end
156
148
  end
157
149
  end
@@ -168,10 +160,11 @@ EOD
168
160
 
169
161
 
170
162
  diff = differ.diff_as_string(expected,actual)
171
- diff.should == expected_diff
163
+ expect(diff).to eq expected_diff
172
164
  end
173
165
  end
174
166
 
175
167
  end
176
168
  end
177
169
  end
170
+
@@ -8,24 +8,28 @@ module RSpec
8
8
  describe ExpectationTarget do
9
9
  context 'when constructed via #expect' do
10
10
  it 'constructs a new instance targetting the given argument' do
11
- expect(7).target.should eq(7)
11
+ expect(expect(7).target).to eq(7)
12
12
  end
13
13
 
14
14
  it 'constructs a new instance targetting the given block' do
15
15
  block = lambda {}
16
- expect(&block).target.should be(block)
16
+ expect(expect(&block).target).to be(block)
17
17
  end
18
18
 
19
19
  it 'raises an ArgumentError when given an argument and a block' do
20
- lambda { expect(7) { } }.should raise_error(ArgumentError)
20
+ expect {
21
+ expect(7) { }
22
+ }.to raise_error(ArgumentError)
21
23
  end
22
24
 
23
25
  it 'raises an ArgumentError when given neither an argument nor a block' do
24
- lambda { expect }.should raise_error(ArgumentError)
26
+ expect {
27
+ expect
28
+ }.to raise_error(ArgumentError)
25
29
  end
26
30
 
27
31
  it 'can be passed nil' do
28
- expect(nil).target.should be_nil
32
+ expect(expect(nil).target).to be_nil
29
33
  end
30
34
 
31
35
  it 'passes a valid positive expectation' do
@@ -38,13 +42,19 @@ module RSpec
38
42
  end
39
43
 
40
44
  it 'fails an invalid positive expectation' do
41
- lambda { expect(5).to eq(4) }.should fail_with(/expected: 4.*got: 5/m)
45
+ expect {
46
+ expect(5).to eq(4)
47
+ }.to fail_with(/expected: 4.*got: 5/m)
42
48
  end
43
49
 
44
50
  it 'fails an invalid negative expectation' do
45
51
  message = /expected 5 not to be a kind of Fixnum/
46
- lambda { expect(5).to_not be_a(Fixnum) }.should fail_with(message)
47
- lambda { expect(5).not_to be_a(Fixnum) }.should fail_with(message)
52
+ expect {
53
+ expect(5).to_not be_a(Fixnum)
54
+ }.to fail_with(message)
55
+ expect {
56
+ expect(5).not_to be_a(Fixnum)
57
+ }.to fail_with(message)
48
58
  end
49
59
 
50
60
  it 'does not support operator matchers from #to' do
@@ -7,18 +7,18 @@ describe Object, "#should" do
7
7
  @matcher.stub!(:matches?).and_return(true)
8
8
  @matcher.stub!(:failure_message_for_should)
9
9
  end
10
-
10
+
11
11
  it "accepts and interacts with a matcher" do
12
- @matcher.should_receive(:matches?).with(@target).and_return(true)
13
- @target.should @matcher
12
+ @matcher.should_receive(:matches?).with(@target).and_return(true)
13
+ expect(@target).to @matcher
14
14
  end
15
-
15
+
16
16
  it "asks for a failure_message_for_should when matches? returns false" do
17
17
  @matcher.should_receive(:matches?).with(@target).and_return(false)
18
18
  @matcher.should_receive(:failure_message_for_should).and_return("the failure message")
19
- lambda {
20
- @target.should @matcher
21
- }.should fail_with("the failure message")
19
+ expect {
20
+ expect(@target).to @matcher
21
+ }.to fail_with("the failure message")
22
22
  end
23
23
 
24
24
  context "on interpretters that have BasicObject", :if => defined?(BasicObject) do
@@ -39,7 +39,7 @@ describe Object, "#should" do
39
39
  end
40
40
 
41
41
  it 'works properly on BasicObject-subclassed proxy objects' do
42
- proxy_class.new(Object.new).should be_proxied
42
+ expect(proxy_class.new(Object.new)).to be_proxied
43
43
  end
44
44
  end
45
45
  end
@@ -49,19 +49,19 @@ describe Object, "#should_not" do
49
49
  @target = "target"
50
50
  @matcher = mock("matcher")
51
51
  end
52
-
52
+
53
53
  it "accepts and interacts with a matcher" do
54
54
  @matcher.should_receive(:matches?).with(@target).and_return(false)
55
55
  @matcher.stub!(:failure_message_for_should_not)
56
-
57
- @target.should_not @matcher
56
+
57
+ expect(@target).not_to @matcher
58
58
  end
59
-
59
+
60
60
  it "asks for a failure_message_for_should_not when matches? returns true" do
61
61
  @matcher.should_receive(:matches?).with(@target).and_return(true)
62
62
  @matcher.should_receive(:failure_message_for_should_not).and_return("the failure message for should not")
63
- lambda {
64
- @target.should_not @matcher
65
- }.should fail_with("the failure message for should not")
63
+ expect {
64
+ expect(@target).not_to @matcher
65
+ }.to fail_with("the failure message for should not")
66
66
  end
67
67
  end
@@ -1,3 +1,4 @@
1
+ # encoding: utf-8
1
2
  require 'spec_helper'
2
3
 
3
4
  describe RSpec::Expectations, "#fail_with with diff" do
@@ -9,62 +10,86 @@ describe RSpec::Expectations, "#fail_with with diff" do
9
10
 
10
11
  it "calls differ if expected/actual are not strings (or numbers or procs)" do
11
12
  differ.should_receive(:diff_as_object).and_return("diff")
12
- lambda {
13
+ expect {
13
14
  RSpec::Expectations.fail_with "the message", Object.new, Object.new
14
- }.should fail_with("the message\nDiff:diff")
15
+ }.to fail_with("the message\nDiff:diff")
15
16
  end
16
17
 
17
18
  context "with two strings" do
18
19
  context "and actual is multiline" do
19
20
  it "calls differ" do
20
21
  differ.should_receive(:diff_as_string).and_return("diff")
21
- lambda {
22
+ expect {
22
23
  RSpec::Expectations.fail_with "the message", "expected\nthis", "actual"
23
- }.should fail_with("the message\nDiff:diff")
24
+ }.to fail_with("the message\nDiff:diff")
24
25
  end
25
26
  end
26
27
 
27
28
  context "and expected is multiline" do
28
29
  it "calls differ" do
29
30
  differ.should_receive(:diff_as_string).and_return("diff")
30
- lambda {
31
+ expect {
31
32
  RSpec::Expectations.fail_with "the message", "expected", "actual\nthat"
32
- }.should fail_with("the message\nDiff:diff")
33
+ }.to fail_with("the message\nDiff:diff")
33
34
  end
34
35
  end
35
36
 
36
37
  context "and both are single line strings" do
37
38
  it "does not call differ" do
38
39
  differ.should_not_receive(:diff_as_string)
39
- lambda {
40
+ expect {
40
41
  RSpec::Expectations.fail_with("the message", "expected", "actual")
41
- }.should fail_with("the message")
42
+ }.to fail_with("the message")
43
+ end
44
+ end
45
+
46
+ context "and they are UTF-16LE encoded", :if => String.method_defined?(:encode) do
47
+ it 'does not diff when they are not multiline' do
48
+ differ.should_not_receive(:diff_as_string)
49
+
50
+ str_1 = "This is a pile of poo: 💩".encode("UTF-16LE")
51
+ str_2 = "This is a pile of poo: 💩".encode("UTF-16LE")
52
+
53
+ expect {
54
+ RSpec::Expectations.fail_with("the message", str_1, str_2)
55
+ }.to fail_with("the message")
56
+ end
57
+
58
+ it 'diffs when they are multiline' do
59
+ differ.should_receive(:diff_as_string).and_return("diff")
60
+
61
+ str_1 = "This is a pile of poo:\n💩".encode("UTF-16LE")
62
+ str_2 = "This is a pile of poo:\n💩".encode("UTF-16LE")
63
+
64
+ expect {
65
+ RSpec::Expectations.fail_with("the message", str_1, str_2)
66
+ }.to fail_with("the message\nDiff:diff")
42
67
  end
43
68
  end
44
69
  end
45
70
 
46
71
  it "does not call differ if no expected/actual" do
47
- lambda {
72
+ expect {
48
73
  RSpec::Expectations.fail_with "the message"
49
- }.should fail_with("the message")
74
+ }.to fail_with("the message")
50
75
  end
51
76
 
52
77
  it "does not call differ expected is Numeric" do
53
- lambda {
78
+ expect {
54
79
  RSpec::Expectations.fail_with "the message", 1, "1"
55
- }.should fail_with("the message")
80
+ }.to fail_with("the message")
56
81
  end
57
82
 
58
83
  it "does not call differ when actual is Numeric" do
59
- lambda {
84
+ expect {
60
85
  RSpec::Expectations.fail_with "the message", "1", 1
61
- }.should fail_with("the message")
86
+ }.to fail_with("the message")
62
87
  end
63
88
 
64
89
  it "does not call differ if expected or actual are procs" do
65
- lambda {
90
+ expect {
66
91
  RSpec::Expectations.fail_with "the message", lambda {}, lambda {}
67
- }.should fail_with("the message")
92
+ }.to fail_with("the message")
68
93
  end
69
94
  end
70
95
 
@@ -59,7 +59,7 @@ module RSpec
59
59
  matcher = mock("matcher")
60
60
  actual = Object.new
61
61
  matcher.should_receive(:matches?).with(actual).and_return(:this_value)
62
- RSpec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher).should == :this_value
62
+ expect(RSpec::Expectations::PositiveExpectationHandler.handle_matcher(actual, matcher)).to eq :this_value
63
63
  end
64
64
 
65
65
  it "calls failure_message_for_should if the matcher implements it" do
@@ -129,7 +129,7 @@ module RSpec
129
129
  actual = Object.new
130
130
  matcher.should_receive(:matches?).with(actual).and_return(false)
131
131
  matcher.stub!(:negative_failure_message).and_return("ignore")
132
- RSpec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher).should be_false
132
+ expect(RSpec::Expectations::NegativeExpectationHandler.handle_matcher(actual, matcher)).to be_false
133
133
  end
134
134
 
135
135
 
@@ -185,20 +185,20 @@ module RSpec
185
185
  include ExampleExpectations
186
186
 
187
187
  it "handles submitted args" do
188
- 5.should arbitrary_matcher(:expected => 5)
189
- 5.should arbitrary_matcher(:expected => "wrong").with(5)
190
- lambda { 5.should arbitrary_matcher(:expected => 4) }.should fail_with("expected 4, got 5")
191
- lambda { 5.should arbitrary_matcher(:expected => 5).with(4) }.should fail_with("expected 4, got 5")
192
- 5.should_not arbitrary_matcher(:expected => 4)
193
- 5.should_not arbitrary_matcher(:expected => 5).with(4)
194
- lambda { 5.should_not arbitrary_matcher(:expected => 5) }.should fail_with("expected not 5, got 5")
195
- lambda { 5.should_not arbitrary_matcher(:expected => 4).with(5) }.should fail_with("expected not 5, got 5")
188
+ expect(5).to arbitrary_matcher(:expected => 5)
189
+ expect(5).to arbitrary_matcher(:expected => "wrong").with(5)
190
+ expect { expect(5).to arbitrary_matcher(:expected => 4) }.to fail_with("expected 4, got 5")
191
+ expect { expect(5).to arbitrary_matcher(:expected => 5).with(4) }.to fail_with("expected 4, got 5")
192
+ expect(5).to_not arbitrary_matcher(:expected => 4)
193
+ expect(5).to_not arbitrary_matcher(:expected => 5).with(4)
194
+ expect { expect(5).to_not arbitrary_matcher(:expected => 5) }.to fail_with("expected not 5, got 5")
195
+ expect { expect(5).to_not arbitrary_matcher(:expected => 4).with(5) }.to fail_with("expected not 5, got 5")
196
196
  end
197
197
 
198
198
  it "handles the submitted block" do
199
- 5.should arbitrary_matcher { 5 }
200
- 5.should arbitrary_matcher(:expected => 4) { 5 }
201
- 5.should arbitrary_matcher(:expected => 4).with(5) { 3 }
199
+ expect(5).to arbitrary_matcher { 5 }
200
+ expect(5).to arbitrary_matcher(:expected => 4) { 5 }
201
+ expect(5).to arbitrary_matcher(:expected => 4).with(5) { 3 }
202
202
  end
203
203
 
204
204
  end
@@ -2,31 +2,93 @@ require 'spec_helper'
2
2
 
3
3
  module RSpec
4
4
  module Expectations
5
- module Syntax
6
- describe "the should and should_not expectations" do
5
+ describe Syntax do
6
+ context "when passing a message to an expectation" do
7
7
  let(:warner) { ::Kernel }
8
8
 
9
- describe "#should" do
9
+ describe "expect(...).to" do
10
10
  it "prints a warning when the message object isn't a String" do
11
11
  warner.should_receive(:warn).with /ignoring.*message/
12
- 3.should eq(3), :not_a_string
12
+ expect(3).to eq(3), :not_a_string
13
13
  end
14
14
 
15
15
  it "doesn't print a warning when message is a String" do
16
16
  warner.should_not_receive(:warn)
17
- 3.should eq(3), "a string"
17
+ expect(3).to eq(3), "a string"
18
18
  end
19
19
  end
20
20
 
21
- describe "#should_not" do
21
+ describe "expect(...).to_not" do
22
22
  it "prints a warning when the message object isn't a String" do
23
23
  warner.should_receive(:warn).with /ignoring.*message/
24
- 3.should_not eq(4), :not_a_string
24
+ expect(3).not_to eq(4), :not_a_string
25
25
  end
26
26
 
27
27
  it "doesn't print a warning when message is a String" do
28
28
  warner.should_not_receive(:warn)
29
- 3.should_not eq(4), "a string"
29
+ expect(3).not_to eq(4), "a string"
30
+ end
31
+ end
32
+ end
33
+
34
+ describe "expression generation" do
35
+ let(:target) { "foo" }
36
+ let(:expectation) { "eq('bar')" }
37
+ let(:positive_expect_example) { "expect(foo).to eq('bar')" }
38
+ let(:positive_should_example) { "foo.should eq('bar')" }
39
+ let(:negative_expect_example) { "expect(foo).not_to eq('bar')" }
40
+ let(:negative_should_example) { "foo.should_not eq('bar')" }
41
+
42
+ def positive_expression
43
+ Syntax.positive_expression(target, expectation)
44
+ end
45
+
46
+ def negative_expression
47
+ Syntax.negative_expression(target, expectation)
48
+ end
49
+
50
+ context "when only :expect is enabled" do
51
+ before do
52
+ expect(Syntax.should_enabled?).to be_false
53
+ expect(Syntax.expect_enabled?).to be_true
54
+ end
55
+
56
+ it 'generates a positive expression using the expect syntax' do
57
+ expect(positive_expression).to eq(positive_expect_example)
58
+ end
59
+
60
+ it 'generates a negative expression using the expect syntax' do
61
+ expect(negative_expression).to eq(negative_expect_example)
62
+ end
63
+ end
64
+
65
+ context "when both :should and :expect are enabled", :uses_should do
66
+ before do
67
+ expect(Syntax.should_enabled?).to be_true
68
+ expect(Syntax.expect_enabled?).to be_true
69
+ end
70
+
71
+ it 'generates a positive expression using the expect syntax' do
72
+ expect(positive_expression).to eq(positive_expect_example)
73
+ end
74
+
75
+ it 'generates a negative expression using the expect syntax' do
76
+ expect(negative_expression).to eq(negative_expect_example)
77
+ end
78
+ end
79
+
80
+ context "when only :should is enabled", :uses_only_should do
81
+ before do
82
+ Syntax.should_enabled?.should be_true
83
+ Syntax.expect_enabled?.should be_false
84
+ end
85
+
86
+ it 'generates a positive expression using the expect syntax' do
87
+ positive_expression.should eq(positive_should_example)
88
+ end
89
+
90
+ it 'generates a negative expression using the expect syntax' do
91
+ negative_expression.should eq(negative_should_example)
30
92
  end
31
93
  end
32
94
  end