-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy pathevaluate_answer_from_question_message_spec.rb
More file actions
54 lines (47 loc) · 1.75 KB
/
evaluate_answer_from_question_message_spec.rb
File metadata and controls
54 lines (47 loc) · 1.75 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
RSpec.describe AutoEvaluation::EvaluateAnswerFromQuestionMessage, :aws_credentials_stubbed do
let(:answer) { build(:answer) }
let(:question_message) { "What is the capital of France?" }
let(:score_result) { build(:auto_evaluation_score_result) }
let(:evaluation_klass) { Class.new }
before do
allow(AnswerComposition::PipelineRunner)
.to receive(:call)
.with(
question: an_instance_of(Question),
pipeline: [
AnswerComposition::Pipeline::SearchResultFetcher,
AnswerComposition::Pipeline::Claude::StructuredAnswerComposer,
],
)
.and_return(answer)
allow(evaluation_klass)
.to receive(:call)
.and_return(score_result)
end
it "calls the evaluation class with the correct parameters" do
described_class.call(
evaluation_class: evaluation_klass,
question_message:,
)
expect(evaluation_klass).to have_received(:call).with(answer)
end
it "returns the AutoEvaluation::ScoreResult generated by the evaluation class" do
result = described_class.call(
evaluation_class: evaluation_klass,
question_message:,
)
expect(result).to eq(score_result)
end
context "when the generated answer has an error status" do
let(:answer) { build(:answer, status: :error_answer_service_error, error_message: "Contrived error.") }
it "raises a TaskFailedError with the correct message" do
expected_error_message = "Answer has an error status: error_answer_service_error and error message: Contrived error."
expect {
described_class.call(
evaluation_class: AutoEvaluation::Coherence,
question_message:,
)
}.to raise_error(described_class::TaskFailedError, expected_error_message)
end
end
end