Skip to content

Commit

Permalink
test(wrap_method): add specs for WrappedMethod#chain_block
Browse files Browse the repository at this point in the history
  • Loading branch information
marian13 committed Nov 8, 2022
1 parent c68fd50 commit 12677b9
Showing 1 changed file with 59 additions and 6 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@

# rubocop:disable RSpec/NestedGroups, RSpec/MultipleMemoizedHelpers
RSpec.describe ConvenientService::RSpec::Helpers::Custom::WrapMethod::Entities::WrappedMethod do
include ConvenientService::RSpec::Matchers::CacheItsValue

subject(:method) { described_class.new(entity: entity, method: method_name, middlewares: middlewares) }

let(:service_class) do
Expand All @@ -26,8 +28,13 @@ def result

let(:args) { [:foo] }
let(:kwargs) { {foo: :bar} }
let(:block) { proc { :foo } }

example_group "instance methods" do
##
# TODO: Specs.
#

describe "#chain_called?" do
context "when chain is NOT called" do
it "returns `false`" do
Expand Down Expand Up @@ -66,9 +73,13 @@ def result
method.call
end

it "returns `true`" do
it "returns chain value" do
expect(method.chain_value).to eq(:original_result_value)
end

specify do
expect { method.chain_value }.to cache_its_value
end
end
end

Expand Down Expand Up @@ -100,9 +111,13 @@ def result(*args)
method.call(*args)
end

it "returns `true`" do
it "returns chain args" do
expect(method.chain_args).to eq(args)
end

specify do
expect { method.chain_args }.to cache_its_value
end
end
end

Expand Down Expand Up @@ -134,15 +149,53 @@ def result(**kwargs)
method.call(**kwargs)
end

it "returns `true`" do
it "returns chain kwargs" do
expect(method.chain_kwargs).to eq(kwargs)
end

specify do
expect { method.chain_block }.to cache_its_value
end
end
end

##
# TODO: Specs.
#
describe "#chain_block" do
let(:service_class) do
Class.new do
def result(&block)
:original_result_value
end
end
end

context "when chain is NOT called" do
let(:error_message) do
<<~TEXT
Chain attribute `block` is accessed before the chain is called.
TEXT
end

it "raises `ConvenientService::RSpec::Helpers::Custom::WrapMethod::Errors::ChainAttributePreliminaryAccess`" do
expect { method.chain_block }
.to raise_error(ConvenientService::RSpec::Helpers::Custom::WrapMethod::Errors::ChainAttributePreliminaryAccess)
.with_message(error_message)
end
end

context "when chain is called" do
before do
method.call(&block)
end

it "returns chain block" do
expect(method.chain_block).to eq(block)
end

specify do
expect { method.chain_block }.to cache_its_value
end
end
end
end
end
# rubocop:enable RSpec/NestedGroups, RSpec/MultipleMemoizedHelpers

0 comments on commit 12677b9

Please sign in to comment.