def test_v1_is_positive_returns_false_all_ct_values_greater_than_30(): identifier = FilteredPositiveIdentifierV1() sample = positive_sample() sample[FIELD_CH1_CQ] = Decimal128("40.12345678") sample[FIELD_CH2_CQ] = Decimal128("41.12345678") sample[FIELD_CH3_CQ] = Decimal128("42.12345678") assert identifier.is_positive(sample) is False
def test_v1_is_positive_returns_false_result_not_positive(): identifier = FilteredPositiveIdentifierV1() # does not conform to regex sample = positive_sample() sample[FIELD_RESULT] = " positive" assert identifier.is_positive(sample) is False # negative result sample = positive_sample() sample[FIELD_RESULT] = "Negative" assert identifier.is_positive(sample) is False # void result sample = positive_sample() sample[FIELD_RESULT] = "Void" assert identifier.is_positive(sample) is False # 'limit of detection' result sample = positive_sample() sample[FIELD_RESULT] = LIMIT_OF_DETECTION_RESULT_VALUE assert identifier.is_positive(sample) is False
def test_v1_is_positive_returns_true_matching_criteria(): identifier = FilteredPositiveIdentifierV1() # expected positive match sample = positive_sample() assert identifier.is_positive(sample) is True # case invariant positive match sample = positive_sample() sample[FIELD_RESULT] = "POSITIVE" assert identifier.is_positive(sample) is True # 3x mix of ct values sample = positive_sample() sample[FIELD_CH2_CQ] = Decimal128("41.12345678") sample[FIELD_CH3_CQ] = None assert identifier.is_positive(sample) is True sample = positive_sample() sample[FIELD_CH1_CQ] = None sample[FIELD_CH3_CQ] = Decimal128("42.12345678") assert identifier.is_positive(sample) is True sample = positive_sample() sample[FIELD_CH1_CQ] = Decimal128("40.12345678") sample[FIELD_CH2_CQ] = None assert identifier.is_positive(sample) is True # all ct values None sample = positive_sample() sample[FIELD_CH1_CQ] = None sample[FIELD_CH2_CQ] = None sample[FIELD_CH3_CQ] = None assert identifier.is_positive(sample) is True # no FIELD_CHX_CQ fields sample = {FIELD_RESULT: POSITIVE_RESULT_VALUE, FIELD_ROOT_SAMPLE_ID: "MCM001"} assert identifier.is_positive(sample) is True
def test_v1_is_positive_returns_false_control_sample(): identifier = FilteredPositiveIdentifierV1() sample = positive_sample() sample[FIELD_ROOT_SAMPLE_ID] = "CBIQA_MCM001" assert identifier.is_positive(sample) is False
def test_v1_version(): identifier = FilteredPositiveIdentifierV1() assert identifier.version == FILTERED_POSITIVE_VERSION_1
from crawler.filtered_positive_identifier import ( FILTERED_POSITIVE_VERSION_0, FILTERED_POSITIVE_VERSION_1, FILTERED_POSITIVE_VERSION_2, FilteredPositiveIdentifierV0, FilteredPositiveIdentifierV1, FilteredPositiveIdentifierV2, ) from migrations import update_legacy_filtered_positives start_date_input = "201209_0000" end_date_input = "201217_0000" identifier_v0 = FilteredPositiveIdentifierV0() identifier_v1 = FilteredPositiveIdentifierV1() identifier_v2 = FilteredPositiveIdentifierV2() @pytest.fixture def mock_helper_database_updates(): with patch( "migrations.update_legacy_filtered_positives.update_mongo_filtered_positive_fields" ) as mock_update_mongo: with patch( "migrations.update_legacy_filtered_positives.update_mlwh_filtered_positive_fields_batched" ) as mock_update_mlwh: yield mock_update_mongo, mock_update_mlwh @pytest.fixture