lib/transproc/rspec.rb in transproc-0.3.0 vs lib/transproc/rspec.rb in transproc-0.3.1
- old
+ new
@@ -3,57 +3,62 @@
# ==============================================================================
# Examples for testing transproc functions
# ==============================================================================
shared_context :call_transproc do
- let!(:initial) { input.dup rescue input }
- let!(:function) { described_class[*arguments] }
- let!(:result) { function[input] }
+ let!(:__initial__) { input.dup rescue input }
+ let!(:__fn__) { described_class[*arguments] }
+ subject { __fn__[input] }
end
shared_examples :transforming_data do
+ include_context :call_transproc
+
it '[returns the expected output]' do
- expect(result).to eql(output), <<-REPORT.gsub(/.+\|/, "")
+ expect(subject).to eql(output), <<-REPORT.gsub(/.+\|/, "")
|
|fn = #{described_class}#{Array[*arguments]}
|
|fn[#{input}]
|
| expected: #{output}
- | got: #{result}
+ | got: #{subject}
REPORT
end
end
shared_examples :transforming_immutable_data do
include_context :call_transproc
it_behaves_like :transforming_data
it '[keeps input unchanged]' do
- expect(input).to eql(initial), <<-REPORT.gsub(/.+\|/, "")
- |
- |fn = #{described_class}#{Array[*arguments]}
- |
- |expected: not to change #{initial}
- | got: changed it to #{input}
- REPORT
+ expect { subject }
+ .not_to change { input }, <<-REPORT.gsub(/.+\|/, "")
+ |
+ |fn = #{described_class}#{Array[*arguments]}
+ |
+ |expected: not to change #{__initial__}
+ | got: changed it to #{input}
+ REPORT
end
end
shared_examples :mutating_input_data do
include_context :call_transproc
it_behaves_like :transforming_data
it '[changes input]' do
- expect(input).to eql(output), <<-REPORT.gsub(/.+\|/, "")
- |
- |fn = #{described_class}#{Array[*arguments]}
- |
- |fn[#{input}]
- |
- |expected: to change input to #{output}
- | got: #{input}
- REPORT
+ expect { subject }
+ .to change { input }
+ .to(output), <<-REPORT.gsub(/.+\|/, "")
+ |
+ |fn = #{described_class}#{Array[*arguments]}
+ |
+ |fn[#{input}]
+ |
+ |expected: to change input to #{output}
+ | got: #{input}
+ REPORT
end
end