def test_consignment_matches_contamination_rule():
    """Check that consignment is selected based on a rule"""
    main_config = load_configuration_yaml_from_text(CONFIG)
    consignment = simple_consignment(flower="Sedum", origin="Colombia")
    config = get_contamination_config_for_consignment(
        main_config["contamination"], consignment)
    assert config == {"contamination_unit": "item", "arrangement": "random"}
def test_consignment_with_no_contamination():
    """Check that consignment is not selected based on a rule"""
    main_config = load_configuration_yaml_from_text(CONFIG)
    consignment = simple_consignment(flower="Rosa", origin="Colombia")
    config = get_contamination_config_for_consignment(
        main_config["contamination"], consignment)
    assert config is None
def test_contamination_config_for_consignment_no_default_explicitly():
    """Check that consignment has only its unique config (defaults disabled)"""
    main_config = load_configuration_yaml_from_text(CONFIG)
    consignment = simple_consignment(flower="Rose", origin="Netherlands")
    config = get_contamination_config_for_consignment(
        main_config["contamination"], consignment)
    assert config == {"contamination_unit": "box"}
def test_contamination_config_for_consignment_with_default():
    """Check that consignment has has combination of defaults and its own config"""
    main_config = load_configuration_yaml_from_text(CONFIG)
    consignment = simple_consignment(flower="Rose", origin="Mexico")
    config = get_contamination_config_for_consignment(
        main_config["contamination"], consignment)
    assert config == {"contamination_unit": "box", "arrangement": "random"}
def test_contamination_config_for_consignment_no_default():
    """Check that consignment has only its unique config (defaults not requested)"""
    main_config = load_configuration_yaml_from_text(CONFIG)
    consignment = simple_consignment(flower="Liatris", origin="Netherlands")
    config = get_contamination_config_for_consignment(
        main_config["contamination"], consignment)
    assert config == {"arrangement": "random_box"}
def test_contamination_config_for_consignment_implicit_default():
    """Check that consignment inherits the top-level config"""
    main_config = load_configuration_yaml_from_text(CONFIG)
    consignment = simple_consignment(flower="Hyacinthus", origin="Israel")
    config = get_contamination_config_for_consignment(
        main_config["contamination"], consignment)
    assert config == {"contamination_unit": "item", "arrangement": "random"}
def test_consignment_between_two_date_rules(date):
    """Check that consignment is not selected in presence of start and end date rules"""
    main_config = load_configuration_yaml_from_text(CONFIG)
    consignment = simple_consignment(flower="Gerbera",
                                     origin="Netherlands",
                                     date=date)
    config = get_contamination_config_for_consignment(
        main_config["contamination"], consignment)
    assert config is None
def test_consignment_matches_contamination_rule_after_start_date(date):
    """Check that consignment is selected based on a rule with start date"""
    main_config = load_configuration_yaml_from_text(CONFIG)
    consignment = simple_consignment(flower="Gerbera",
                                     origin="Netherlands",
                                     date=date)
    config = get_contamination_config_for_consignment(
        main_config["contamination"], consignment)
    assert config == {"contamination_unit": "item"}
def test_consignment_matches_contamination_rule_before_end_date(date):
    """Check that consignment is selected based on a rule with end date"""
    main_config = load_configuration_yaml_from_text(CONFIG)
    consignment = simple_consignment(flower="Gerbera",
                                     origin="Netherlands",
                                     date=date)
    config = get_contamination_config_for_consignment(
        main_config["contamination"], consignment)
    assert config == {"arrangement": "random_box"}
def test_consignment_matches_contamination_rule_outside_of_date_interval(date):
    """Check that consignment is not selected based on a rule with dates"""
    main_config = load_configuration_yaml_from_text(CONFIG)
    consignment = simple_consignment(flower="Tulipa",
                                     origin="Netherlands",
                                     date=date)
    config = get_contamination_config_for_consignment(
        main_config["contamination"], consignment)
    assert config is None
def test_consignment_matches_contamination_rule_within_date_interval(date):
    """Check that consignment is selected based on a rule with start and end dates"""
    main_config = load_configuration_yaml_from_text(CONFIG)
    consignment = simple_consignment(flower="Tulipa",
                                     origin="Netherlands",
                                     date=date)
    config = get_contamination_config_for_consignment(
        main_config["contamination"], consignment)
    assert config == {"contamination_unit": "box", "arrangement": "random_box"}