Пример #1
0
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
Пример #2
0
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
Пример #3
0
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
Пример #4
0
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
Пример #5
0
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