medicode / test /medicode_web /components /feedback_button_test.exs
timgremore's picture
fix: Rename directories and main context files
6488653
defmodule Medicode.FeedbackButtonTest do
use MedicodeWeb.ConnCase, async: true
import Phoenix.LiveViewTest
import Medicode.{
AccountsFixtures,
TranscriptionChunksFixtures,
TranscriptionChunkCodeVectorsFixtures,
CodeVectorsFixtures,
CodeFeedbacksFixtures
}
alias Medicode.Repo
alias MedicodeWeb.Components.TranscriptionTextCodingsComponent
describe "feedback_button" do
setup do
insert_code_vector_fixtures()
user = user_fixture()
chunk = transcription_chunk_fixture()
code_vector = code_vector_fixture()
transcription_chunk_code_vector =
transcription_chunk_code_vector_fixture(%{
chunk_id: chunk.id,
code_vector_id: code_vector.id
})
|> Repo.preload([:code_vector, :assigned_by_user])
positive_code_feedback = code_feedback_fixture(%{response: true})
negative_code_feedback = code_feedback_fixture(%{response: false})
%{
user: user,
chunk: chunk,
code_vector: code_vector,
transcription_chunk_code_vector: transcription_chunk_code_vector,
positive_code_feedback: positive_code_feedback,
negative_code_feedback: negative_code_feedback
}
end
test "renders code vector text", %{
user: user,
chunk: chunk,
code_vector: code_vector,
transcription_chunk_code_vector: transcription_chunk_code_vector
} do
component =
render_component(TranscriptionTextCodingsComponent,
id: transcription_chunk_code_vector.id,
code_feedback: nil,
chunk_id: chunk.id,
code_vectors_with_feedback: [{transcription_chunk_code_vector, nil}],
score: 1.0,
text: chunk.text,
weighting: [1.0],
assigned_by_user: nil,
current_user: user,
myself: transcription_chunk_code_vector.id
)
assert component =~ chunk.text
assert component =~ code_vector.description
assert component =~ code_vector.code
assert component =~ ~s(title="Similarity score: 1.0. Weighting: 1.0 \(1\)")
assert component =~ ~s(<img src="/images/thumbs-up.svg")
assert component =~ ~s(<img src="/images/thumbs-down.svg")
end
test "renders feedback button as selected for user with positive code feedback", %{
user: user,
chunk: chunk,
transcription_chunk_code_vector: transcription_chunk_code_vector,
positive_code_feedback: code_feedback
} do
component =
render_component(TranscriptionTextCodingsComponent,
id: transcription_chunk_code_vector.id,
chunk_id: chunk.id,
code_vectors_with_feedback: [{transcription_chunk_code_vector, code_feedback}],
score: 1.0,
text: chunk.text,
weighting: [1.0],
assigned_by_user: nil,
current_user: user,
myself: transcription_chunk_code_vector.id
)
assert component =~ ~s(<button data-feedback="positive")
end
test "renders feedback button as de-selected for user with negative code feedback", %{
user: user,
chunk: chunk,
transcription_chunk_code_vector: transcription_chunk_code_vector,
negative_code_feedback: code_feedback
} do
component =
render_component(TranscriptionTextCodingsComponent,
id: transcription_chunk_code_vector.id,
chunk_id: chunk.id,
code_vectors_with_feedback: [{transcription_chunk_code_vector, code_feedback}],
score: 1.0,
text: chunk.text,
weighting: [1.0],
assigned_by_user: nil,
current_user: user,
myself: transcription_chunk_code_vector.id
)
assert component =~ ~s(<button data-feedback="negative")
end
end
end