Sha256: 5a26026eaf1932eb16bcb676264a35fa4c4b648c63f877428f3d96b027c0b25d
Contents?: true
Size: 1.93 KB
Versions: 5
Compression:
Stored size: 1.93 KB
Contents
RSpec.describe Patterns::Service do after { Object.send(:remove_const, :DoSomething) if defined?(DoSomething) } describe ".call" do it "returns instance of service object" do DoSomething = Class.new(Patterns::Service) do def call; end end expect(DoSomething.call).to be_kind_of(DoSomething) end it "instantiates service object passing keyword arguments to constructor" do DoSomething = Class.new(Patterns::Service) do def initialize(argument_1:, argument_2:); end def call; end end expect { DoSomething.call }.to raise_error ArgumentError expect { DoSomething.call(argument_1: 10, argument_2: 20) }.not_to raise_error end it "instantiates service object passing positional arguments to constructor" do DoSomething = Class.new(Patterns::Service) do def initialize(argument_1, argument_2); end def call; end end expect { DoSomething.call }.to raise_error ArgumentError expect { DoSomething.call(10, 20) }.not_to raise_error end it "calls #call method on service object instance" do Spy = Class.new do def self.some_method; end end allow(Spy).to receive(:some_method) DoSomething = Class.new(Patterns::Service) do def call Spy.some_method end end DoSomething.call expect(Spy).to have_received(:some_method) end it "requires #call method to be implemented" do DoSomething = Class.new(Patterns::Service) expect { DoSomething.call }.to raise_error NotImplementedError end end describe "#result" do it "returns a result of expression within #call method" do DoSomething = Class.new(Patterns::Service) do def call 50 end end service = DoSomething.call expect(service.result).to eq 50 end end end
Version data entries
5 entries across 5 versions & 1 rubygems