def test_check_conditions_strings_missing_keys(check_conditions_string_config): """Check condition checking for string items and missing message keys.""" msg = Mock() msg.data = {'product': 'overview', 'platform_name': 'NOAA-19'} assert check_conditions(msg, check_conditions_string_config) is False msg.data = {'sensor': 'avhrr', 'product': 'green_snow'} assert check_conditions(msg, check_conditions_string_config) is False
def test_check_conditions_strings_negation(check_conditions_string_config): """Check condition checking for string items and negation.""" msg = Mock() msg.data = { 'sensor': 'avhrr', 'product': 'green_snow', 'platform_name': 'NOAA-15' } assert check_conditions(msg, check_conditions_string_config) is False msg.data = { 'sensor': 'avhrr', 'product': 'overview', 'platform_name': 'NOAA-15' } assert check_conditions(msg, check_conditions_string_config) is True
def test_check_conditions_numbers(): """Check condition checking for numerical items.""" config_item = yaml.safe_load(""" topics: - /level3/cloudtype directory: /input/cloud_products conditions: - area: omerc_bb # ' 122'.strip().isdigit() -> True daylight: '<30' coverage: '>50'""") msg = Mock() msg.data = {'daylight': 18.3, 'area': 'omerc_bb', 'coverage': '77.1'} assert check_conditions(msg, config_item) is True msg.data = {'daylight': 48.3, 'area': 'omerc_bb', 'coverage': '77.1'} assert check_conditions(msg, config_item) is False msg.data = {'daylight': 18.3, 'area': 'omerc_bb', 'coverage': '27.1'} assert check_conditions(msg, config_item) is False
def test_check_conditions(): """Check condition checking.""" config_item = yaml.safe_load(""" topics: - /level2/viirs - /level2/avhrr conditions: # key matches metadata items or provides default - product: [green_snow, true_color] sensor: viirs - product: [green_snow, overview] sensor: avhrr # special section "except" for negating except: platform_name: NOAA-15 product: [green_snow, cloudtop]""") msg = Mock() msg.data = { 'sensor': 'viirs', 'product': 'green_snow', 'platform_name': 'NOAA-20' } assert check_conditions(msg, config_item) is True msg.data = { 'sensor': 'viirs', 'product': 'overview', 'platform_name': 'NOAA-20' } assert check_conditions(msg, config_item) is False msg.data = { 'sensor': 'avhrr', 'product': 'overview', 'platform_name': 'NOAA-19' } assert check_conditions(msg, config_item) is True # check negation msg.data = { 'sensor': 'avhrr', 'product': 'green_snow', 'platform_name': 'NOAA-15' } assert check_conditions(msg, config_item) is False msg.data = { 'sensor': 'avhrr', 'product': 'overview', 'platform_name': 'NOAA-15' } assert check_conditions(msg, config_item) is True # missing keys in the message data msg.data = {'product': 'overview', 'platform_name': 'NOAA-19'} assert check_conditions(msg, config_item) is False msg.data = {'sensor': 'avhrr', 'product': 'green_snow'} assert check_conditions(msg, config_item) is False # numerical values config_item = yaml.safe_load(""" topics: - /level3/cloudtype directory: /input/cloud_products conditions: - area: omerc_bb # ' 122'.strip().isdigit() -> True daylight: '<30' coverage: '>50'""") msg = Mock() msg.data = {'daylight': 18.3, 'area': 'omerc_bb', 'coverage': '77.1'} assert check_conditions(msg, config_item) is True msg.data = {'daylight': 48.3, 'area': 'omerc_bb', 'coverage': '77.1'} assert check_conditions(msg, config_item) is False msg.data = {'daylight': 18.3, 'area': 'omerc_bb', 'coverage': '27.1'} assert check_conditions(msg, config_item) is False