Skip to content
Snippets Groups Projects
Commit c0f11a92 authored by Gosia Ksionek's avatar Gosia Ksionek :palm_tree:
Browse files

Fix entity specs

parent b97005b4
No related branches found
No related tags found
No related merge requests found
This commit is part of merge request !153616. Comments created here will be created in the context of that merge request.
......@@ -7,31 +7,30 @@
let(:options) { { input: 'test input', suggestions: 'test suggestions' } }
describe '.prompt' do
it 'returns prompt' do
prompt = described_class.prompt(options)[:prompt]
expect(prompt.length).to eq(3)
binding.pry
expect(prompt[0][:role]).to eq(:system)
expect(prompt[0][:content]).to eq(system_prompt)
expect(prompt[1][:role]).to eq(:user)
expect(prompt[1][:content]).to eq(options[:input])
expect(prompt[2][:role]).to eq(:assistant)
expect(prompt[2][:content]).to include(options[:suggestions], "\"ResourceIdentifierType\": \"")
end
it "calls with haiku model" do
model = described_class.prompt(options)[:options][:model]
expect(model).to eq(::Gitlab::Llm::AiGateway::Client::CLAUDE_3_HAIKU)
end
it 'returns prompt' do
prompt = described_class.prompt(options)[:prompt]
expect(prompt.length).to eq(3)
expect(prompt[0][:role]).to eq(:system)
expect(prompt[0][:content]).to eq(system_prompt)
expect(prompt[1][:role]).to eq(:user)
expect(prompt[1][:content]).to eq(options[:input])
expect(prompt[2][:role]).to eq(:assistant)
expect(prompt[2][:content]).to include(options[:suggestions], "\"ResourceIdentifierType\": \"")
end
def system_prompt
Gitlab::Llm::Chain::Tools::MergeRequestReader::Executor::SYSTEM_PROMPT[1]
it "calls with haiku model" do
model = described_class.prompt(options)[:options][:model]
expect(model).to eq(::Gitlab::Llm::AiGateway::Client::CLAUDE_3_HAIKU)
end
end
def system_prompt
Gitlab::Llm::Chain::Tools::MergeRequestReader::Executor::SYSTEM_PROMPT[1]
end
end
end
......@@ -2,38 +2,49 @@
require 'spec_helper'
RSpec.describe MergeRequestAiEntity, feature_category: :api do
let_it_be(:user) { create(:user) }
let_it_be(:merge_request) { create(:merge_request) }
let(:notes_limit) {1000}
let(:entity) { described_class.new(merge_request, current_user: user, resouce: merge_request, notes_limit: notes_limit) }
RSpec.describe MergeRequestAiEntity, feature_category: :ai_abstraction_layer do
let_it_be(:user) { create(:user) } # rubocop:disable RSpec/FactoryBot/AvoidCreate -- we need create it
let_it_be(:merge_request) { create(:merge_request) } # rubocop:disable RSpec/FactoryBot/AvoidCreate -- we need create it
let(:notes_limit) { 1000 }
let(:entity) do
described_class.new(merge_request,
user: user,
resource: Ai::AiResource::MergeRequest.new(merge_request),
notes_limit: notes_limit)
end
subject(:basic_entity) { entity.as_json }
before do
merge_request.project.add_developer(user)
end
it "exposes basic entity fields" do
expected_fields = %i[merged_by merge_user merged_at closed_by closed_at title_html description_html target_branch
source_branch user_notes_count upvotes downvotes author assignees assignee reviewers source_project_id target_project
id labels draft imported imported_from work_in_progress milestone merge_when_pipeline_succeeds merge_status detailed_
merge_status sha merge_commit_sha squash_commit_sha discussion_locked should_remove_source_branch force_remove_source_
branch prepared_at allow_collaboration allow_maintainer_to_push reference references web_url time_stats squash squash_
on_merge task_completion_status has_conflicts blocking_discussions_resolved]
expected_fields = %i[
merged_by merge_user merged_at closed_by closed_at target_branch user_notes_count upvotes downvotes
author assignees assignee reviewers source_project_id target_project_id labels draft work_in_progress
milestone merge_when_pipeline_succeeds merge_status detailed_merge_status sha merge_commit_sha
squash_commit_sha discussion_locked should_remove_source_branch force_remove_source_branch prepared_at
reference references web_url time_stats squash task_completion_status has_conflicts blocking_discussions_resolved
imported imported_from
]
is_expected.to include(*expected_fields)
end
context "with mr comments on the entity" do
let!(:note) { create(:note_on_merge_request, noteable: merge_request, project: merge_request.project) }
let!(:note2) { create(:note_on_merge_request, noteable: merge_request, project: merge_request.project) }
let!(:note) { create(:note_on_merge_request, noteable: merge_request, project: merge_request.project) } # rubocop:disable RSpec/FactoryBot/AvoidCreate -- we need create it
let!(:note2) { create(:note_on_merge_request, noteable: merge_request, project: merge_request.project) } # rubocop:disable RSpec/FactoryBot/AvoidCreate -- we need create it
it "exposes the number of comments" do
expect(subject[:mr_comments]).to eq([notes, note2].join("\n"))
expect(basic_entity[:mr_comments]).to match_array([note.note, note2.note])
end
end
context "with diff on the entity" do
it "exposes the diff information" do
expect(subject[:diff]).to include("---something")
expect(basic_entity[:diff]).to include("--- CHANGELOG")
end
end
end
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment