discourse-ai/spec/system/embeddings/semantic_search_spec.rb

51 lines
1.5 KiB
Ruby

# frozen_string_literal: true
RSpec.describe "AI Composer helper", type: :system, js: true do
let(:search_page) { PageObjects::Pages::Search.new }
let(:query) { "apple_pie" }
let(:hypothetical_post) { "This is an hypothetical post generated from the keyword apple_pie" }
fab!(:user) { Fabricate(:admin) }
fab!(:topic)
fab!(:post) { Fabricate(:post, topic: topic, raw: "Apple pie is a delicious dessert to eat") }
before do
SiteSetting.ai_embeddings_discourse_service_api_endpoint = "http://test.com"
prompt = DiscourseAi::Embeddings::HydeGenerators::OpenAi.new.prompt(query)
OpenAiCompletionsInferenceStubs.stub_response(
prompt,
hypothetical_post,
req_opts: {
max_tokens: 400,
},
)
hyde_embedding = [0.049382, 0.9999]
EmbeddingsGenerationStubs.discourse_service(
SiteSetting.ai_embeddings_model,
hypothetical_post,
hyde_embedding,
)
SearchIndexer.enable
SearchIndexer.index(topic, force: true)
SiteSetting.ai_embeddings_semantic_search_enabled = true
sign_in(user)
end
after do
described_class.clear_cache_for(query)
SearchIndexer.disable
end
describe "when performing a search in the full page search page" do
skip "TODO: Implement test after doing LLM abstraction" do
it "performs AI search in the background and hides results by default" do
visit("/search?expanded=true")
search_page.type_in_search("apple pie")
search_page.click_search_button
end
end
end
end