diff --git a/lib/treasury/fields/extractor.rb b/lib/treasury/fields/extractor.rb new file mode 100644 index 0000000..9b8d0ae --- /dev/null +++ b/lib/treasury/fields/extractor.rb @@ -0,0 +1,23 @@ +module Treasury + module Fields + # Public: Модуль добавляет классу метод extract_object, подходит для источников и полей денормализации. + # + # Deprecated: For extract object use Apress::Sources::ExtractObject module + # + # Example: + # + # class Field + # extend ::Treasury::Fields::Extractor + # extract_attribute_name :user + # end + # + # Field.extract_object(object: {user_id: 1}) + # => 1 + module Extractor + def self.extended(base) + warn "[DEPRECATION] Please use `extend Apress::Sources::ExtractObject` instead Treasury::Fields::Extractor" + base.extend(Apress::Sources::ExtractObject) + end + end + end +end diff --git a/spec/lib/treasury/fields/extractor_spec.rb b/spec/lib/treasury/fields/extractor_spec.rb new file mode 100644 index 0000000..580f764 --- /dev/null +++ b/spec/lib/treasury/fields/extractor_spec.rb @@ -0,0 +1,13 @@ +RSpec.describe Treasury::Fields::Extractor do + let(:class_with_extractor) do + Class.new do + extend Treasury::Fields::Extractor + + extract_attribute_name :user + end + end + + describe '.extract_object' do + it { expect(class_with_extractor.extract_user(object: {user_id: 1})).to eq 1 } + end +end