From d31f92fc2eeab83ea8af8dbb23791dad9cb5263d Mon Sep 17 00:00:00 2001 From: Eumir Gaspar Date: Tue, 11 Mar 2025 12:57:02 +0800 Subject: [PATCH 1/2] feat: Added ability to use other clients in the future --- lib/committer/commit_generator.rb | 4 ++-- spec/committer/commit_generator_spec.rb | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/lib/committer/commit_generator.rb b/lib/committer/commit_generator.rb index 5de0d4f..27c08cf 100644 --- a/lib/committer/commit_generator.rb +++ b/lib/committer/commit_generator.rb @@ -70,8 +70,8 @@ def parse_response(response) end end - def prepare_commit_message - client = Clients::ClaudeClient.new + def prepare_commit_message(client_class = Clients::ClaudeClient) + client = client_class.new prompt = build_commit_prompt response = client.post(prompt) diff --git a/spec/committer/commit_generator_spec.rb b/spec/committer/commit_generator_spec.rb index 9d12c19..5b9700c 100644 --- a/spec/committer/commit_generator_spec.rb +++ b/spec/committer/commit_generator_spec.rb @@ -200,5 +200,27 @@ expect(result[:body]).to include('Incremented patch version') end end + + context 'when called with a different client' do + class Clients::SomeOtherClient + def post(_prompt); end + end + + let(:client_instance) { instance_double(Clients::SomeOtherClient) } + let(:generator) { described_class.new(diff, commit_context) } + + before do + allow(Clients::SomeOtherClient).to receive(:new).and_return(client_instance) + allow(generator).to receive(:build_commit_prompt).and_return('my prompt') + allow(generator).to receive(:parse_response) + allow(client_instance).to receive(:post) + end + + it 'builds the prompt and passes it to the client' do + generator.prepare_commit_message(Clients::SomeOtherClient) + + expect(client_instance).to have_received(:post).with('my prompt') + end + end end end From 7db193d57b4fb057d9fdfe91a9edd3451a36a6fe Mon Sep 17 00:00:00 2001 From: Eumir Gaspar Date: Tue, 11 Mar 2025 14:00:39 +0800 Subject: [PATCH 2/2] fix: Addressed comments from bot --- spec/committer/commit_generator_spec.rb | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/spec/committer/commit_generator_spec.rb b/spec/committer/commit_generator_spec.rb index 5b9700c..2639849 100644 --- a/spec/committer/commit_generator_spec.rb +++ b/spec/committer/commit_generator_spec.rb @@ -202,22 +202,18 @@ end context 'when called with a different client' do - class Clients::SomeOtherClient - def post(_prompt); end - end - - let(:client_instance) { instance_double(Clients::SomeOtherClient) } + let(:client_class) { class_double('Clients::SomeOtherClient', new: client_instance).as_stubbed_const } + let(:client_instance) { instance_double('Clients::SomeOtherClient', post: nil) } let(:generator) { described_class.new(diff, commit_context) } before do - allow(Clients::SomeOtherClient).to receive(:new).and_return(client_instance) allow(generator).to receive(:build_commit_prompt).and_return('my prompt') allow(generator).to receive(:parse_response) allow(client_instance).to receive(:post) end it 'builds the prompt and passes it to the client' do - generator.prepare_commit_message(Clients::SomeOtherClient) + generator.prepare_commit_message(client_class) expect(client_instance).to have_received(:post).with('my prompt') end