# frozen_string_literal: true module ConvenientService module RSpec module Matchers module Classes module Results class Base module Entities class Validator module Commands class ValidateResultData < Support::Command include Support::Delegate ## # @api private # # @!attribute [r] validator # @return [ConvenientService::RSpec::Matchers::Classes::Results::Base::Entities::Validator] # attr_reader :validator ## # @api private # # @return [ConvenientService::RSpec::Matchers::Classes::Results::Base] # delegate :matcher, to: :validator ## # @api private # # @return [ConvenientService::Service::Plugins::HasJSendResult::Entities::Result] # delegate :result, to: :matcher ## # @api private # # @return [ConvenientService::RSpec::Matchers::Classes::Results::Base::Entities::Chain] # delegate :chain, to: :matcher ## # @api private # # @return [Hash{Symbol => Object}] # delegate :data, to: :chain ## # @api private # # @return [Symbol, String] # delegate :comparison_method, to: :chain ## # @api private # # @param validator [ConvenientService::RSpec::Matchers::Classes::Results::Base::Entities::Validator] # @return [void] # def initialize(validator:) @validator = validator end ## # @api private # # @return [Boolean] # def call return false unless matcher.result return true unless chain.used_data? casted_data.public_send(comparison_method, result.unsafe_data) end private ## # @return [ConvenientService::Service::Plugins::HasJSendResult::Entities::Result::Plugins::HasJSendStatusAndAttributes::Entities::Data] # def casted_data result.create_data(data) end end end end end end end end end end end