Skip to content

Commit

Permalink
test(rspec): add direct specs to modules
Browse files Browse the repository at this point in the history
  • Loading branch information
marian13 committed Sep 26, 2023
1 parent 860357b commit f5ff17e
Show file tree
Hide file tree
Showing 22 changed files with 435 additions and 188 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# frozen_string_literal: true

require "spec_helper"

require "convenient_service"

RSpec.describe ConvenientService::RSpec::Helpers::IgnoringException do
include ConvenientService::RSpec::PrimitiveMatchers::DelegateTo

example_group "instance methods" do
describe "#ignoring_exception" do
let(:klass) do
Class.new.tap do |klass|
klass.class_exec(described_class) do |mod|
include mod
end
end
end

let(:instance) { klass.new }

let(:exception) { ArgumentError }
let(:block) { proc { raise exception } }

specify do
expect { instance.ignoring_exception(exception, &block) }
.to delegate_to(ConvenientService::RSpec::PrimitiveHelpers::Classes::IgnoringException, :new)
.with_arguments(exception, &block)
end
end
end
end
69 changes: 69 additions & 0 deletions spec/lib/convenient_service/rspec/helpers/stub_service_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
# frozen_string_literal: true

require "spec_helper"

require "convenient_service"

RSpec.describe ConvenientService::RSpec::Helpers::StubService do
include ConvenientService::RSpec::PrimitiveMatchers::DelegateTo

example_group "instance methods" do
let(:klass) do
Class.new.tap do |klass|
klass.class_exec(described_class) do |mod|
include mod
end
end
end

let(:instance) { klass.new }

describe "#stub_service" do
let(:service_class) do
Class.new do
include ConvenientService::Service::Configs::Standard
end
end

specify do
expect { instance.stub_service(service_class) }
.to delegate_to(ConvenientService::RSpec::Helpers::Classes::StubService, :new)
.with_arguments(service_class)
end
end

describe "#return_result" do
let(:status) { :success }

specify do
expect { instance.return_result(status) }
.to delegate_to(ConvenientService::RSpec::Helpers::Classes::StubService::Entities::ResultSpec, :new)
.with_arguments(status: status)
end
end

describe "#return_success" do
specify do
expect { instance.return_success }
.to delegate_to(ConvenientService::RSpec::Helpers::Classes::StubService::Entities::ResultSpec, :new)
.with_arguments(status: :success)
end
end

describe "#return_failure" do
specify do
expect { instance.return_failure }
.to delegate_to(ConvenientService::RSpec::Helpers::Classes::StubService::Entities::ResultSpec, :new)
.with_arguments(status: :failure)
end
end

describe "#return_error" do
specify do
expect { instance.return_error }
.to delegate_to(ConvenientService::RSpec::Helpers::Classes::StubService::Entities::ResultSpec, :new)
.with_arguments(status: :error)
end
end
end
end
47 changes: 47 additions & 0 deletions spec/lib/convenient_service/rspec/helpers/wrap_method_spec.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# frozen_string_literal: true

require "spec_helper"

require "convenient_service"

# rubocop:disable RSpec/MultipleMemoizedHelpers
RSpec.describe ConvenientService::RSpec::Helpers::WrapMethod do
include ConvenientService::RSpec::PrimitiveMatchers::DelegateTo

example_group "instance methods" do
describe "#wrap_method" do
let(:klass) do
Class.new.tap do |klass|
klass.class_exec(described_class) do |mod|
include mod
end
end
end

let(:instance) { klass.new }

let(:service_class) do
Class.new do
include ConvenientService::Service::Configs::Standard

middlewares :result do
observe ConvenientService::Service::Plugins::RaisesOnNotResultReturnValue::Middleware
end
end
end

let(:service_instance) { service_class.new }

let(:entity) { service_instance }
let(:method) { :result }
let(:middleware) { ConvenientService::Service::Plugins::RaisesOnNotResultReturnValue::Middleware }

specify do
expect { instance.wrap_method(entity, method, observe_middleware: middleware) }
.to delegate_to(ConvenientService::RSpec::Helpers::Classes::WrapMethod, :new)
.with_arguments(entity, method, observe_middleware: middleware)
end
end
end
end
# rubocop:enable RSpec/MultipleMemoizedHelpers
22 changes: 12 additions & 10 deletions spec/lib/convenient_service/rspec/matchers/call_chain_next_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,20 +8,22 @@
include ConvenientService::RSpec::PrimitiveMatchers::DelegateTo

example_group "instance methods" do
let(:klass) do
Class.new.tap do |klass|
klass.class_exec(described_class) do |mod|
include mod
describe "#call_chain_next" do
let(:klass) do
Class.new.tap do |klass|
klass.class_exec(described_class) do |mod|
include mod
end
end
end
end

let(:instance) { klass.new }
let(:instance) { klass.new }

specify do
expect { instance.call_chain_next }
.to delegate_to(ConvenientService::RSpec::Matchers::Classes::CallChainNext, :new)
.without_arguments
specify do
expect { instance.call_chain_next }
.to delegate_to(ConvenientService::RSpec::Matchers::Classes::CallChainNext, :new)
.without_arguments
end
end
end
end
26 changes: 14 additions & 12 deletions spec/lib/convenient_service/rspec/matchers/delegate_to_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,23 +8,25 @@
include ConvenientService::RSpec::PrimitiveMatchers::DelegateTo

example_group "instance methods" do
let(:klass) do
Class.new.tap do |klass|
klass.class_exec(described_class) do |mod|
include mod
describe "#delegate_to" do
let(:klass) do
Class.new.tap do |klass|
klass.class_exec(described_class) do |mod|
include mod
end
end
end
end

let(:instance) { klass.new }
let(:instance) { klass.new }

let(:object) { OpenStruct.new(foo: :bar) }
let(:method) { :foo }
let(:object) { OpenStruct.new(foo: :bar) }
let(:method) { :foo }

specify do
expect { instance.delegate_to(object, method) }
.to delegate_to(ConvenientService::RSpec::PrimitiveMatchers::Classes::DelegateTo, :new)
.with_arguments(object, method)
specify do
expect { instance.delegate_to(object, method) }
.to delegate_to(ConvenientService::RSpec::PrimitiveMatchers::Classes::DelegateTo, :new)
.with_arguments(object, method)
end
end
end
end
24 changes: 13 additions & 11 deletions spec/lib/convenient_service/rspec/matchers/export_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,24 @@
include ConvenientService::RSpec::PrimitiveMatchers::DelegateTo

example_group "instance methods" do
let(:klass) do
Class.new.tap do |klass|
klass.class_exec(described_class) do |mod|
include mod
describe "#export" do
let(:klass) do
Class.new.tap do |klass|
klass.class_exec(described_class) do |mod|
include mod
end
end
end
end

let(:instance) { klass.new }
let(:instance) { klass.new }

let(:method) { :foo }
let(:method) { :foo }

specify do
expect { instance.export(method) }
.to delegate_to(ConvenientService::RSpec::Matchers::Classes::Export, :new)
.with_arguments(method)
specify do
expect { instance.export(method) }
.to delegate_to(ConvenientService::RSpec::Matchers::Classes::Export, :new)
.with_arguments(method)
end
end
end
end
24 changes: 13 additions & 11 deletions spec/lib/convenient_service/rspec/matchers/include_module_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,24 @@
include ConvenientService::RSpec::PrimitiveMatchers::DelegateTo

example_group "instance methods" do
let(:klass) do
Class.new.tap do |klass|
klass.class_exec(described_class) do |mod|
include mod
describe "#include_module" do
let(:klass) do
Class.new.tap do |klass|
klass.class_exec(described_class) do |mod|
include mod
end
end
end
end

let(:instance) { klass.new }
let(:instance) { klass.new }

let(:mod) { Module.new }
let(:mod) { Module.new }

specify do
expect { instance.include_module(mod) }
.to delegate_to(ConvenientService::RSpec::PrimitiveMatchers::Classes::IncludeModule, :new)
.with_arguments(mod)
specify do
expect { instance.include_module(mod) }
.to delegate_to(ConvenientService::RSpec::PrimitiveMatchers::Classes::IncludeModule, :new)
.with_arguments(mod)
end
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
# frozen_string_literal: true

require "spec_helper"

require "convenient_service"

RSpec.describe ConvenientService::RSpec::PrimitiveHelpers::IgnoringException do
include ConvenientService::RSpec::PrimitiveMatchers::DelegateTo

example_group "instance methods" do
describe "#ignoring_exception" do
let(:klass) do
Class.new.tap do |klass|
klass.class_exec(described_class) do |mod|
include mod
end
end
end

let(:instance) { klass.new }

let(:exception) { ArgumentError }
let(:block) { proc { raise exception } }

specify do
expect { instance.ignoring_exception(exception, &block) }
.to delegate_to(ConvenientService::RSpec::PrimitiveHelpers::Classes::IgnoringException, :new)
.with_arguments(exception, &block)
end
end
end
end
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
# frozen_string_literal: true

require "spec_helper"

require "convenient_service"

RSpec.describe ConvenientService::RSpec::PrimitiveHelpers::InThreads do
include ConvenientService::RSpec::PrimitiveMatchers::DelegateTo

example_group "instance methods" do
describe "#in_threads" do
let(:klass) do
Class.new.tap do |klass|
klass.class_exec(described_class) do |mod|
include mod
end
end
end

let(:instance) { klass.new }

let(:n) { 2 }
let(:array) { [] }
let(:block) { proc { |array| array << :foo } }

specify do
expect { instance.in_threads(n, array, &block) }
.to delegate_to(ConvenientService::RSpec::PrimitiveHelpers::Classes::InThreads, :new)
.with_arguments(n, array, &block)
end
end
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,24 @@
include ConvenientService::RSpec::PrimitiveMatchers::DelegateTo

example_group "instance methods" do
let(:klass) do
Class.new.tap do |klass|
klass.class_exec(described_class) do |mod|
include mod
describe "#be_descendant_of" do
let(:klass) do
Class.new.tap do |klass|
klass.class_exec(described_class) do |mod|
include mod
end
end
end
end

let(:instance) { klass.new }
let(:instance) { klass.new }

let(:parent) { String }
let(:parent) { String }

specify do
expect { instance.be_descendant_of(parent) }
.to delegate_to(ConvenientService::RSpec::PrimitiveMatchers::Classes::BeDescendantOf, :new)
.with_arguments(parent)
specify do
expect { instance.be_descendant_of(parent) }
.to delegate_to(ConvenientService::RSpec::PrimitiveMatchers::Classes::BeDescendantOf, :new)
.with_arguments(parent)
end
end
end
end
Loading

0 comments on commit f5ff17e

Please sign in to comment.