discourse-ai/spec/lib/discord/bot/search_spec.rb

31 lines
1.0 KiB
Ruby

# frozen_string_literal: true
require "rails_helper"
RSpec.describe DiscourseAi::Discord::Bot::Search do
let(:interaction_body) do
{ data: { options: [{ value: "test query" }] }, token: "interaction_token" }.to_json.to_s
end
let(:search) { described_class.new(interaction_body) }
before do
stub_request(:post, "https://discord.com/api/webhooks//interaction_token").with(
body:
"{\"content\":\"Here are the top search results for your query:\\n\\n1. [Title](\\u003chttp://test.localhost/link\\u003e)\\n\\n\"}",
).to_return(status: 200, body: "{}", headers: {})
# Stub the create_reply method
allow(search).to receive(:create_reply)
end
describe "#handle_interaction!" do
it "creates a reply with search results" do
allow_any_instance_of(DiscourseAi::AiBot::Tools::Search).to receive(:invoke).and_return(
{ rows: [%w[Title /link]] },
)
search.handle_interaction!
expect(search).to have_received(:create_reply).with(/Here are the top search results/)
end
end
end