mirror of
https://gitea.invidious.io/iv-org/shard-spectator.git
synced 2024-08-15 00:53:35 +00:00
Add spec for GitLab issue 51
https://gitlab.com/arctic-fox/spectator/-/issues/51
This commit is contained in:
parent
61dee8d7db
commit
95764140ee
1 changed files with 107 additions and 0 deletions
107
spec/issues/gitlab_issue_51_spec.cr
Normal file
107
spec/issues/gitlab_issue_51_spec.cr
Normal file
|
@ -0,0 +1,107 @@
|
||||||
|
require "../spec_helper"
|
||||||
|
|
||||||
|
private class Foo
|
||||||
|
def call(str : String) : String?
|
||||||
|
""
|
||||||
|
end
|
||||||
|
|
||||||
|
def alt1_call(str : String) : String?
|
||||||
|
nil
|
||||||
|
end
|
||||||
|
|
||||||
|
def alt2_call(str : String) : String?
|
||||||
|
[str, nil].sample
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
private class Bar
|
||||||
|
def call(a_foo) : Nil # Must add nil restriction here, otherwise a segfault occurs from returning the result of #alt2_call.
|
||||||
|
a_foo.call("")
|
||||||
|
a_foo.alt1_call("")
|
||||||
|
a_foo.alt2_call("")
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
Spectator.describe Bar do
|
||||||
|
mock Foo, call: "", alt1_call: "", alt2_call: ""
|
||||||
|
|
||||||
|
let(:foo) { mock(Foo) }
|
||||||
|
subject(:call) { described_class.new.call(foo) }
|
||||||
|
|
||||||
|
describe "#call" do
|
||||||
|
it "invokes Foo#call" do
|
||||||
|
call
|
||||||
|
expect(foo).to have_received(:call)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "invokes Foo#alt1_call" do
|
||||||
|
call
|
||||||
|
expect(foo).to have_received(:alt1_call)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "invokes Foo#alt2_call" do
|
||||||
|
call
|
||||||
|
expect(foo).to have_received(:alt2_call)
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "with an explicit return of nil" do
|
||||||
|
it "should invoke Foo#call?" do
|
||||||
|
allow(foo).to receive(:call).and_return(nil)
|
||||||
|
call
|
||||||
|
expect(foo).to have_received(:call)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "invokes Foo#alt1_call" do
|
||||||
|
allow(foo).to receive(:alt1_call).and_return(nil)
|
||||||
|
call
|
||||||
|
expect(foo).to have_received(:alt1_call)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "invokes Foo#alt2_call" do
|
||||||
|
allow(foo).to receive(:alt2_call).and_return(nil)
|
||||||
|
call
|
||||||
|
expect(foo).to have_received(:alt2_call)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "with returns set in before_each for all calls" do
|
||||||
|
before_each do
|
||||||
|
allow(foo).to receive(:call).and_return(nil)
|
||||||
|
allow(foo).to receive(:alt1_call).and_return(nil)
|
||||||
|
allow(foo).to receive(:alt2_call).and_return(nil)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should invoke Foo#call?" do
|
||||||
|
call
|
||||||
|
expect(foo).to have_received(:call)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should invoke Foo#alt1_call?" do
|
||||||
|
call
|
||||||
|
expect(foo).to have_received(:alt1_call)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should invoke Foo#alt2_call?" do
|
||||||
|
call
|
||||||
|
expect(foo).to have_received(:alt2_call)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
describe "with returns set in before_each for alt calls only" do
|
||||||
|
before_each do
|
||||||
|
allow(foo).to receive(:alt1_call).and_return(nil)
|
||||||
|
allow(foo).to receive(:alt2_call).and_return(nil)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "invokes Foo#alt1_call" do
|
||||||
|
call
|
||||||
|
expect(foo).to have_received(:alt1_call)
|
||||||
|
end
|
||||||
|
|
||||||
|
it "invokes Foo#alt2_call" do
|
||||||
|
call
|
||||||
|
expect(foo).to have_received(:alt2_call)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
Loading…
Reference in a new issue