Update specs for new Result#call functionality

This commit is contained in:
Michael Miller 2019-02-20 21:17:27 -07:00
parent 002c1d892b
commit 919e2b96f6
5 changed files with 136 additions and 38 deletions

View file

@ -16,17 +16,40 @@ end
describe Spectator::ErroredResult do describe Spectator::ErroredResult do
describe "#call" do describe "#call" do
it "invokes #error on an instance" do context "without a block" do
spy = ResultCallSpy.new it "invokes #error on an instance" do
new_errored_result.call(spy) spy = ResultCallSpy.new
spy.error?.should be_truthy new_errored_result.call(spy)
spy.error?.should be_true
end
it "returns the value of #failure" do
result = new_errored_result
returned = result.call(ResultCallSpy.new)
returned.should eq(:error)
end
end end
it "passes itself" do context "with a block" do
spy = ResultCallSpy.new it "invokes #error on an instance" do
result = new_errored_result spy = ResultCallSpy.new
result.call(spy) new_errored_result.call(spy) { nil }
spy.error.should eq(result) spy.error?.should be_true
end
it "yields itself" do
result = new_errored_result
value = nil.as(Spectator::Result?)
result.call(ResultCallSpy.new) { |r| value = r }
value.should eq(result)
end
it "returns the value of #failure" do
result = new_errored_result
value = 42
returned = result.call(ResultCallSpy.new) { value }
returned.should eq(value)
end
end end
end end

View file

@ -16,17 +16,40 @@ end
describe Spectator::FailedResult do describe Spectator::FailedResult do
describe "#call" do describe "#call" do
it "invokes #failure on an instance" do context "without a block" do
spy = ResultCallSpy.new it "invokes #failure on an instance" do
new_failed_result.call(spy) spy = ResultCallSpy.new
spy.failure?.should be_truthy new_failed_result.call(spy)
spy.failure?.should be_true
end
it "returns the value of #failure" do
result = new_failed_result
returned = result.call(ResultCallSpy.new)
returned.should eq(:failure)
end
end end
it "passes itself" do context "with a block" do
spy = ResultCallSpy.new it "invokes #failure on an instance" do
result = new_failed_result spy = ResultCallSpy.new
result.call(spy) new_failed_result.call(spy) { nil }
spy.failure.should eq(result) spy.failure?.should be_true
end
it "yields itself" do
result = new_failed_result
value = nil.as(Spectator::Result?)
result.call(ResultCallSpy.new) { |r| value = r }
value.should eq(result)
end
it "returns the value of #failure" do
result = new_failed_result
value = 42
returned = result.call(ResultCallSpy.new) { value }
returned.should eq(value)
end
end end
end end

View file

@ -1,10 +1,16 @@
# Spy class for testing `Spectator::Result#call`. # Spy class for testing `Spectator::Result#call`.
class ResultCallSpy class ResultCallSpy
{% for name in %i[success failure error pending] %} {% for name in %i[success failure error pending] %}
getter! {{name.id}} : ::Spectator::Result getter? {{name.id}} = false
def {{name.id}}
@{{name.id}} = true
{{name}}
end
def {{name.id}}(arg) def {{name.id}}(arg)
@{{name.id}} = arg @{{name.id}} = true
arg
end end
{% end %} {% end %}
end end

View file

@ -6,17 +6,40 @@ end
describe Spectator::PendingResult do describe Spectator::PendingResult do
describe "#call" do describe "#call" do
it "invokes #pending on an instance" do context "without a block" do
spy = ResultCallSpy.new it "invokes #pending on an instance" do
new_pending_result.call(spy) spy = ResultCallSpy.new
spy.pending?.should be_truthy new_pending_result.call(spy)
spy.pending?.should be_true
end
it "returns the value of #pending" do
result = new_pending_result
returned = result.call(ResultCallSpy.new)
returned.should eq(:pending)
end
end end
it "passes itself" do context "with a block" do
spy = ResultCallSpy.new it "invokes #pending on an instance" do
result = new_pending_result spy = ResultCallSpy.new
result.call(spy) new_pending_result.call(spy) { nil }
spy.pending.should eq(result) spy.pending?.should be_true
end
it "yields itself" do
result = new_pending_result
value = nil.as(Spectator::Result?)
result.call(ResultCallSpy.new) { |r| value = r }
value.should eq(result)
end
it "returns the value of #pending" do
result = new_pending_result
value = 42
returned = result.call(ResultCallSpy.new) { value }
returned.should eq(value)
end
end end
end end

View file

@ -14,17 +14,40 @@ end
describe Spectator::SuccessfulResult do describe Spectator::SuccessfulResult do
describe "#call" do describe "#call" do
it "invokes #success on an instance" do context "without a block" do
spy = ResultCallSpy.new it "invokes #success on an instance" do
new_successful_result.call(spy) spy = ResultCallSpy.new
spy.success?.should be_truthy new_successful_result.call(spy)
spy.success?.should be_true
end
it "returns the value of #success" do
result = new_successful_result
returned = result.call(ResultCallSpy.new)
returned.should eq(:success)
end
end end
it "passes itself" do context "with a block" do
spy = ResultCallSpy.new it "invokes #success on an instance" do
result = new_successful_result spy = ResultCallSpy.new
result.call(spy) new_successful_result.call(spy) { nil }
spy.success.should eq(result) spy.success?.should be_true
end
it "yields itself" do
result = new_successful_result
value = nil.as(Spectator::Result?)
result.call(ResultCallSpy.new) { |r| value = r }
value.should eq(result)
end
it "returns the value of #success" do
result = new_successful_result
value = 42
returned = result.call(ResultCallSpy.new) { value }
returned.should eq(value)
end
end end
end end