31 lines
1.0 KiB
Ruby
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
|