# By: Riasat Ullah
# This file contains test data for conditional routing.

from constants import var_names
from system_tests import test_tools
from system_tests.test_data import test_data_policies, test_data_services
import datetime


# conditional routing rules
routing_list = [
    {
        var_names.routing_ref_id: test_tools.get_dummy_reference_id(),
        var_names.rule_name: 'Suppress PnL alerts',
        var_names.rule_description: 'This rule suppresses daily PnL alerts when it goes off due to known delays.',
        var_names.is_enabled: True
    },
    {
        var_names.routing_ref_id: test_tools.get_dummy_reference_id(),
        var_names.rule_name: 'Core Weekend Routing Rule',
        var_names.rule_description: 'Route all alerts triggered to core on the weekend to core-warning ' +
                                    'instead of core-fatal.',
        var_names.is_enabled: False
    },
    {
        var_names.routing_ref_id: test_tools.get_dummy_reference_id(),
        var_names.rule_name: 'Operations Late Night Rule',
        var_names.rule_description: 'All alerts triggered late at night must be raised to critical urgency.',
        var_names.is_enabled: True
    }
]


routing_details = {
    routing_list[0][var_names.routing_ref_id]: {
        var_names.routing_ref_id: routing_list[0][var_names.routing_ref_id],
        var_names.is_enabled: routing_list[0][var_names.is_enabled],
        var_names.rule_name: routing_list[0][var_names.rule_name],
        var_names.rule_description: routing_list[0][var_names.rule_description],
        var_names.timezone: 'Europe/Madrid',
        var_names.allow_multiple: True,
        var_names.valid_start: datetime.date(2020, 1, 24),
        var_names.valid_end: datetime.date(9999, 1, 1),
        var_names.rule_start_time: '00:00:00',
        var_names.rule_end_time: '23:59:00',
        var_names.all_days: True,
        var_names.repeat: [0, 1, 2, 3, 4, 5, 6],
        var_names.rule_application_count: 3,
        var_names.routing_actions: {var_names.alert_handling: 'RESOLVE',
                                    var_names.resolve_incidents: True,
                                    var_names.resolve_hours: 24,
                                    var_names.suppress_minutes: 2,
                                    var_names.suppress_count: 5,
                                    var_names.suppress_before: True,
                                    var_names.tags: ['{{ source_payload.tags | test, colors }}', 'db-server']},
        var_names.routing_rules: [
            {
                var_names.rule_type: 'service',
                var_names.field_name: 'service',
                var_names.comparator: 'equals',
                var_names.field_value: test_data_services.services_basic_list[1][1]
            },
            {
                var_names.rule_type: 'urgency_level',
                var_names.field_name: 'urgency_level',
                var_names.comparator: 'equals',
                var_names.field_value: 5
            },
            {
                var_names.rule_type: 'payload',
                var_names.field_name: 'alert_type',
                var_names.comparator: 'contains',
                var_names.field_value: 'TRIGGER'
            }
        ]
    },
    routing_list[1][var_names.routing_ref_id]: {
        var_names.routing_ref_id: routing_list[1][var_names.routing_ref_id],
        var_names.is_enabled: routing_list[1][var_names.is_enabled],
        var_names.rule_name: routing_list[1][var_names.rule_name],
        var_names.rule_description: routing_list[1][var_names.rule_description],
        var_names.timezone: 'US/Eastern',
        var_names.allow_multiple: None,
        var_names.valid_start: datetime.date(2019, 10, 24),
        var_names.valid_end: datetime.date(2019, 10, 31),
        var_names.rule_start_time: '08:30',
        var_names.rule_end_time: '12:00',
        var_names.all_days: False,
        var_names.repeat: [5, 6],
        var_names.rule_application_count: 1,
        var_names.routing_actions: {
            var_names.alert_handling: 'RE_ROUTE',
            var_names.route_to: test_data_policies.policies_basic_list[0][1]
        },
        var_names.routing_rules: [
            {
                var_names.rule_type: 'email_from',
                var_names.field_name: 'email_from',
                var_names.comparator: 'equals',
                var_names.field_value: 'apx@apollo.com'
            }
        ]
    },
    routing_list[2][var_names.routing_ref_id]: {
        var_names.routing_ref_id: routing_list[2][var_names.routing_ref_id],
        var_names.is_enabled: routing_list[2][var_names.is_enabled],
        var_names.rule_name: routing_list[2][var_names.rule_name],
        var_names.rule_description: routing_list[2][var_names.rule_description],
        var_names.timezone: 'US/Eastern',
        var_names.allow_multiple: False,
        var_names.valid_start: datetime.date(2020, 10, 24),
        var_names.valid_end: datetime.date(9999, 1, 1),
        var_names.rule_start_time: '08:00',
        var_names.rule_end_time: '16:00',
        var_names.all_days: False,
        var_names.repeat: [5, 6],
        var_names.rule_application_count: 1,
        var_names.routing_actions: {
            var_names.alert_handling: 'RE_ROUTE',
            var_names.route_to: test_data_policies.policies_basic_list[3][1]
        },
        var_names.routing_rules: [
            {
                var_names.rule_type: 'email_from',
                var_names.field_name: 'email_from',
                var_names.comparator: 'equals',
                var_names.field_value: 'apx@apollo.com'
            }
        ]
    }
}
