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..2639849 100644 --- a/spec/committer/commit_generator_spec.rb +++ b/spec/committer/commit_generator_spec.rb @@ -200,5 +200,23 @@ expect(result[:body]).to include('Incremented patch version') end end + + context 'when called with a different client' do + 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(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(client_class) + + expect(client_instance).to have_received(:post).with('my prompt') + end + end end end