36 lines
1.5 KiB
Python
36 lines
1.5 KiB
Python
"""Verification-status vocabulary + mapping (DB column / file tag / UI badge)."""
|
|
|
|
from core.matching.verification_status import (
|
|
VERIFIED, UNVERIFIED, FORCE_IMPORTED, HUMAN_VERIFIED,
|
|
status_from_acoustid_result, status_for_import,
|
|
)
|
|
|
|
|
|
def test_acoustid_result_maps_to_status():
|
|
assert status_from_acoustid_result('pass') == VERIFIED
|
|
assert status_from_acoustid_result('skip') == UNVERIFIED
|
|
# disabled / error / unknown -> no claim either way
|
|
assert status_from_acoustid_result('disabled') is None
|
|
assert status_from_acoustid_result('error') is None
|
|
assert status_from_acoustid_result(None) is None
|
|
|
|
|
|
def test_force_import_context_wins_over_acoustid():
|
|
ctx = {'_version_mismatch_fallback': 'instrumental', '_acoustid_result': 'pass'}
|
|
assert status_for_import(ctx) == FORCE_IMPORTED
|
|
|
|
|
|
def test_status_for_import_falls_back_to_acoustid_result():
|
|
assert status_for_import({'_acoustid_result': 'pass'}) == VERIFIED
|
|
assert status_for_import({'_acoustid_result': 'skip'}) == UNVERIFIED
|
|
assert status_for_import({}) is None
|
|
|
|
|
|
def test_approved_quarantine_import_is_human_verified():
|
|
# The user clicked Approve on a quarantine entry — an explicit human
|
|
# decision about THIS file. Outranks both the fallback flag and whatever
|
|
# the (earlier, failed) verification said.
|
|
ctx = {'_approved_quarantine_trigger': 'acoustid',
|
|
'_version_mismatch_fallback': 'instrumental',
|
|
'_acoustid_result': 'fail'}
|
|
assert status_for_import(ctx) == HUMAN_VERIFIED
|