From 2f5938a808aee64afbe377c7b7ad76aff1fecf86 Mon Sep 17 00:00:00 2001 From: Brooke Kuhlmann Date: Mon, 5 May 2025 15:57:10 -0600 Subject: [PATCH] Refactored requester to inject dependencies Reduces duplication by injecting what is already registered. Milestone: patch --- lib/trmnl/api/requester.rb | 7 +++---- spec/lib/trmnl/api/requester_spec.rb | 4 ++++ 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/trmnl/api/requester.rb b/lib/trmnl/api/requester.rb index 572fc83..950a519 100644 --- a/lib/trmnl/api/requester.rb +++ b/lib/trmnl/api/requester.rb @@ -8,14 +8,13 @@ module TRMNL # Provides a low level configurable and monadic API client. # :reek:DataClump class Requester + include Dependencies[:settings, :http] include Dry::Monads[:result] HEADERS = {}.freeze - def initialize settings: TRMNL::API::Configuration::Loader.new.call, http: HTTP - @settings = settings - @http = http - + def initialize(**) + super yield settings if block_given? end diff --git a/spec/lib/trmnl/api/requester_spec.rb b/spec/lib/trmnl/api/requester_spec.rb index 1d75e10..dc953ea 100644 --- a/spec/lib/trmnl/api/requester_spec.rb +++ b/spec/lib/trmnl/api/requester_spec.rb @@ -7,7 +7,11 @@ RSpec.describe TRMNL::API::Requester do subject(:requester) { described_class.new http: } + include_context "with application dependencies" + describe "#initialize" do + let(:http) { HTTP } + it "initializes with block" do requester = described_class.new { |settings| settings.content_type = "application/xml" } body = requester.get("bogus").failure.to_s