@@ -0,0 +1,33 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from apps.jobs.models import Feedback
|
||||
from apps.jobs.services.feedback import record_feedback
|
||||
|
||||
|
||||
def test_learning_signals_wait_for_min_samples(profile, job, user):
|
||||
first = record_feedback(user=user, job=job, action=Feedback.Action.INTERESTING)
|
||||
second = record_feedback(user=user, job=job, action=Feedback.Action.INTERESTING)
|
||||
|
||||
first_metadata = first.metadata.get("learning", {})
|
||||
second_metadata = second.metadata.get("learning", {})
|
||||
assert first_metadata.get("status") == "queued"
|
||||
assert first_metadata.get("reason_code") == "positive_feedback"
|
||||
assert second_metadata.get("status") == "applied"
|
||||
profile.refresh_from_db()
|
||||
assert profile.weights["content"] == 26.0
|
||||
|
||||
|
||||
def test_learning_skip_for_implicit_hide(profile, job, user):
|
||||
feedback = record_feedback(user=user, job=job, action=Feedback.Action.HIDE)
|
||||
metadata = feedback.metadata.get("learning", {})
|
||||
assert metadata["status"] == "queued"
|
||||
assert metadata["reason_code"] == "implicit_hide_no_reason"
|
||||
profile.refresh_from_db()
|
||||
assert profile.weights["content"] == 25.0
|
||||
|
||||
|
||||
def test_learning_marks_explicit_title_hide_as_nonlearning(profile, job, user):
|
||||
feedback = record_feedback(user=user, job=job, action=Feedback.Action.HIDE, reason="Titel past niet bij mij")
|
||||
metadata = feedback.metadata.get("learning", {})
|
||||
assert metadata["status"] == "queued"
|
||||
assert metadata["reason_code"] == "non_learning_title"
|
||||
Reference in New Issue
Block a user