Skip to content

Commit

Permalink
feat(can_be_negated): introduce Result#negated?
Browse files Browse the repository at this point in the history
  • Loading branch information
marian13 committed Jan 21, 2024
1 parent a92fa15 commit 1362b9b
Show file tree
Hide file tree
Showing 9 changed files with 104 additions and 0 deletions.
1 change: 1 addition & 0 deletions lib/convenient_service/service/configs/standard.rb
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ class self::Result
use ConvenientService::Plugins::Result::CanRecalculateResult::Concern

use ConvenientService::Plugins::Result::CanHaveStep::Concern
use ConvenientService::Plugins::Result::CanBeNegated::Concern
use ConvenientService::Plugins::Result::CanBeOwnResult::Concern
use ConvenientService::Plugins::Result::CanHaveFallbacks::Concern
use ConvenientService::Plugins::Result::CanHaveParentResult::Concern
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
# frozen_string_literal: true

require_relative "plugins/can_recalculate_result"
require_relative "plugins/can_be_negated"
require_relative "plugins/can_be_own_result"
require_relative "plugins/can_be_stubbed_result"
require_relative "plugins/can_have_fallbacks"
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
# frozen_string_literal: true

require_relative "can_be_negated/concern"
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# frozen_string_literal: true

module ConvenientService
module Service
module Plugins
module HasJSendResult
module Entities
class Result
module Plugins
module CanBeNegated
module Concern
include Support::Concern

instance_methods do
##
# @return [Boolean]
#
def negated?
Utils.to_bool(extra_kwargs[:negated])
end
end
end
end
end
end
end
end
end
end
end
Original file line number Diff line number Diff line change
Expand Up @@ -236,6 +236,7 @@
ConvenientService::Common::Plugins::HasJSendResultDuckShortSyntax::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanRecalculateResult::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanHaveStep::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanBeNegated::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanBeOwnResult::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanHaveFallbacks::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanHaveParentResult::Concern,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,7 @@
ConvenientService::Common::Plugins::HasJSendResultDuckShortSyntax::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanRecalculateResult::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanHaveStep::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanBeNegated::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanBeOwnResult::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanHaveParentResult::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanHaveCheckedStatus::Concern,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,7 @@
ConvenientService::Common::Plugins::HasJSendResultDuckShortSyntax::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanRecalculateResult::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanHaveStep::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanBeNegated::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanBeOwnResult::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanHaveFallbacks::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanHaveParentResult::Concern,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -205,6 +205,7 @@
ConvenientService::Common::Plugins::HasJSendResultDuckShortSyntax::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanRecalculateResult::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanHaveStep::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanBeNegated::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanBeOwnResult::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanHaveParentResult::Concern,
ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanHaveCheckedStatus::Concern,
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
# frozen_string_literal: true

require "spec_helper"

require "convenient_service"

# rubocop:disable RSpec/NestedGroups, RSpec/MultipleMemoizedHelpers
RSpec.describe ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::CanBeNegated::Concern do
include ConvenientService::RSpec::PrimitiveMatchers::CacheItsValue

example_group "modules" do
include ConvenientService::RSpec::Matchers::IncludeModule

subject { described_class }

it { is_expected.to include_module(ConvenientService::Support::Concern) }

context "when included" do
subject { result_class }

let(:result_class) do
Class.new.tap do |klass|
klass.class_exec(described_class) do |mod|
include mod
end
end
end

it { is_expected.to include_module(described_class::InstanceMethods) }
end
end

example_group "instance methods" do
describe "#negated?" do
let(:result) { service.result }

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

def result
success
end
end
end

context "when result is NOT from `negated_result` method" do
let(:result) { service.result }

it "returns `false`" do
expect(result.negated_result?).to eq(false)
end
end

context "when result is from `negated_result` method" do
let(:result) { service.negated_result }

it "returns `true`" do
expect(result.negated_result?).to eq(true)
end
end
end
end
end
# rubocop:enable RSpec/NestedGroups, RSpec/MultipleMemoizedHelpers

0 comments on commit 1362b9b

Please sign in to comment.