"""Sample API response data for tests."""

from datetime import UTC, datetime

from homeassistant.components.subaru.const import (
    API_GEN_1,
    API_GEN_2,
    API_GEN_3,
    VEHICLE_API_GEN,
    VEHICLE_HAS_EV,
    VEHICLE_HAS_REMOTE_SERVICE,
    VEHICLE_HAS_REMOTE_START,
    VEHICLE_HAS_SAFETY_SERVICE,
    VEHICLE_MODEL_NAME,
    VEHICLE_MODEL_YEAR,
    VEHICLE_NAME,
    VEHICLE_STATUS,
    VEHICLE_VIN,
)

TEST_VIN_1_G1 = "JF2ABCDE6L0000001"
TEST_VIN_2_EV = "JF2ABCDE6L0000002"
TEST_VIN_3_G3 = "JF2ABCDE6L0000003"

VEHICLE_DATA = {
    TEST_VIN_1_G1: {
        VEHICLE_VIN: TEST_VIN_1_G1,
        VEHICLE_MODEL_YEAR: "2017",
        VEHICLE_MODEL_NAME: "Outback",
        VEHICLE_NAME: "test_vehicle_1",
        VEHICLE_HAS_EV: False,
        VEHICLE_API_GEN: API_GEN_1,
        VEHICLE_HAS_REMOTE_START: True,
        VEHICLE_HAS_REMOTE_SERVICE: True,
        VEHICLE_HAS_SAFETY_SERVICE: False,
    },
    TEST_VIN_2_EV: {
        VEHICLE_VIN: TEST_VIN_2_EV,
        VEHICLE_MODEL_YEAR: "2019",
        VEHICLE_MODEL_NAME: "Crosstrek",
        VEHICLE_NAME: "test_vehicle_2",
        VEHICLE_HAS_EV: True,
        VEHICLE_API_GEN: API_GEN_2,
        VEHICLE_HAS_REMOTE_START: True,
        VEHICLE_HAS_REMOTE_SERVICE: True,
        VEHICLE_HAS_SAFETY_SERVICE: True,
    },
    TEST_VIN_3_G3: {
        VEHICLE_VIN: TEST_VIN_3_G3,
        VEHICLE_MODEL_YEAR: "2022",
        VEHICLE_MODEL_NAME: "Ascent",
        VEHICLE_NAME: "test_vehicle_3",
        VEHICLE_HAS_EV: False,
        VEHICLE_API_GEN: API_GEN_3,
        VEHICLE_HAS_REMOTE_START: True,
        VEHICLE_HAS_REMOTE_SERVICE: True,
        VEHICLE_HAS_SAFETY_SERVICE: True,
    },
}

MOCK_DATETIME = datetime.fromtimestamp(1595560000, UTC)

VEHICLE_STATUS_EV = {
    VEHICLE_STATUS: {
        "AVG_FUEL_CONSUMPTION": 51.1,
        "DISTANCE_TO_EMPTY_FUEL": 170,
        "DOOR_BOOT_POSITION": "CLOSED",
        "DOOR_ENGINE_HOOD_POSITION": "CLOSED",
        "DOOR_FRONT_LEFT_POSITION": "CLOSED",
        "DOOR_FRONT_RIGHT_POSITION": "CLOSED",
        "DOOR_REAR_LEFT_POSITION": "CLOSED",
        "DOOR_REAR_RIGHT_POSITION": "CLOSED",
        "EV_CHARGER_STATE_TYPE": "CHARGING",
        "EV_CHARGE_SETTING_AMPERE_TYPE": "MAXIMUM",
        "EV_CHARGE_VOLT_TYPE": "CHARGE_LEVEL_1",
        "EV_DISTANCE_TO_EMPTY": 1,
        "EV_IS_PLUGGED_IN": "UNLOCKED_CONNECTED",
        "EV_STATE_OF_CHARGE_MODE": "EV_MODE",
        "EV_STATE_OF_CHARGE_PERCENT": 20,
        "EV_TIME_TO_FULLY_CHARGED_UTC": MOCK_DATETIME,
        "ODOMETER": 1234,
        "TIMESTAMP": 1595560000.0,
        "TRANSMISSION_MODE": "UNKNOWN",
        "TYRE_PRESSURE_FRONT_LEFT": 0.0,
        "TYRE_PRESSURE_FRONT_RIGHT": 31.9,
        "TYRE_PRESSURE_REAR_LEFT": 32.6,
        "TYRE_PRESSURE_REAR_RIGHT": None,
        "VEHICLE_STATE_TYPE": "IGNITION_OFF",
        "WINDOW_BACK_STATUS": "UNKNOWN",
        "WINDOW_FRONT_LEFT_STATUS": "VENTED",
        "WINDOW_FRONT_RIGHT_STATUS": "VENTED",
        "WINDOW_REAR_LEFT_STATUS": "UNKNOWN",
        "WINDOW_REAR_RIGHT_STATUS": "UNKNOWN",
        "WINDOW_SUNROOF_STATUS": "UNKNOWN",
        "LATITUDE": 40.0,
        "LONGITUDE": -100.0,
    }
}


VEHICLE_STATUS_G3 = {
    VEHICLE_STATUS: {
        "AVG_FUEL_CONSUMPTION": 51.1,
        "DISTANCE_TO_EMPTY_FUEL": 170,
        "DOOR_BOOT_POSITION": "CLOSED",
        "DOOR_ENGINE_HOOD_POSITION": "CLOSED",
        "DOOR_FRONT_LEFT_POSITION": "CLOSED",
        "DOOR_FRONT_RIGHT_POSITION": "CLOSED",
        "DOOR_REAR_LEFT_POSITION": "CLOSED",
        "DOOR_REAR_RIGHT_POSITION": "CLOSED",
        "REMAINING_FUEL_PERCENT": 77,
        "ODOMETER": 1234,
        "TIMESTAMP": 1595560000.0,
        "TRANSMISSION_MODE": "UNKNOWN",
        "TYRE_PRESSURE_FRONT_LEFT": 0.0,
        "TYRE_PRESSURE_FRONT_RIGHT": 31.9,
        "TYRE_PRESSURE_REAR_LEFT": 32.6,
        "TYRE_PRESSURE_REAR_RIGHT": None,
        "VEHICLE_STATE_TYPE": "IGNITION_OFF",
        "WINDOW_BACK_STATUS": "UNKNOWN",
        "WINDOW_FRONT_LEFT_STATUS": "VENTED",
        "WINDOW_FRONT_RIGHT_STATUS": "VENTED",
        "WINDOW_REAR_LEFT_STATUS": "UNKNOWN",
        "WINDOW_REAR_RIGHT_STATUS": "UNKNOWN",
        "WINDOW_SUNROOF_STATUS": "UNKNOWN",
        "LATITUDE": 40.0,
        "LONGITUDE": -100.0,
    }
}

EXPECTED_STATE_EV_IMPERIAL = {
    "AVG_FUEL_CONSUMPTION": "51.1",
    "DISTANCE_TO_EMPTY_FUEL": "170",
    "EV_CHARGER_STATE_TYPE": "CHARGING",
    "EV_CHARGE_SETTING_AMPERE_TYPE": "MAXIMUM",
    "EV_CHARGE_VOLT_TYPE": "CHARGE_LEVEL_1",
    "EV_DISTANCE_TO_EMPTY": "1",
    "EV_IS_PLUGGED_IN": "UNLOCKED_CONNECTED",
    "EV_STATE_OF_CHARGE_MODE": "EV_MODE",
    "EV_STATE_OF_CHARGE_PERCENT": "20",
    "EV_TIME_TO_FULLY_CHARGED_UTC": "2020-07-24T03:06:40+00:00",
    "ODOMETER": "1234",
    "TIMESTAMP": 1595560000.0,
    "TRANSMISSION_MODE": "UNKNOWN",
    "TYRE_PRESSURE_FRONT_LEFT": "0.0",
    "TYRE_PRESSURE_FRONT_RIGHT": "31.9",
    "TYRE_PRESSURE_REAR_LEFT": "32.6",
    "TYRE_PRESSURE_REAR_RIGHT": "unknown",
    "VEHICLE_STATE_TYPE": "IGNITION_OFF",
    "LATITUDE": 40.0,
    "LONGITUDE": -100.0,
}

EXPECTED_STATE_EV_METRIC = {
    "AVG_FUEL_CONSUMPTION": "4.6",
    "DISTANCE_TO_EMPTY_FUEL": "273.59",
    "EV_CHARGER_STATE_TYPE": "CHARGING",
    "EV_CHARGE_SETTING_AMPERE_TYPE": "MAXIMUM",
    "EV_CHARGE_VOLT_TYPE": "CHARGE_LEVEL_1",
    "EV_DISTANCE_TO_EMPTY": "1.61",
    "EV_IS_PLUGGED_IN": "UNLOCKED_CONNECTED",
    "EV_STATE_OF_CHARGE_MODE": "EV_MODE",
    "EV_STATE_OF_CHARGE_PERCENT": "20",
    "EV_TIME_TO_FULLY_CHARGED_UTC": "2020-07-24T03:06:40+00:00",
    "ODOMETER": "1985.93",
    "TIMESTAMP": 1595560000.0,
    "TRANSMISSION_MODE": "UNKNOWN",
    "TYRE_PRESSURE_FRONT_LEFT": "0.00",
    "TYRE_PRESSURE_FRONT_RIGHT": "219.94",
    "TYRE_PRESSURE_REAR_LEFT": "224.77",
    "TYRE_PRESSURE_REAR_RIGHT": "unknown",
    "VEHICLE_STATE_TYPE": "IGNITION_OFF",
    "LATITUDE": 40.0,
    "LONGITUDE": -100.0,
}


EXPECTED_STATE_EV_UNAVAILABLE = {
    "AVG_FUEL_CONSUMPTION": "unavailable",
    "DISTANCE_TO_EMPTY_FUEL": "unavailable",
    "EV_CHARGER_STATE_TYPE": "unavailable",
    "EV_CHARGE_SETTING_AMPERE_TYPE": "unavailable",
    "EV_CHARGE_VOLT_TYPE": "unavailable",
    "EV_DISTANCE_TO_EMPTY": "unavailable",
    "EV_IS_PLUGGED_IN": "unavailable",
    "EV_STATE_OF_CHARGE_MODE": "unavailable",
    "EV_STATE_OF_CHARGE_PERCENT": "unavailable",
    "EV_TIME_TO_FULLY_CHARGED_UTC": "unavailable",
    "ODOMETER": "unavailable",
    "TIMESTAMP": "unavailable",
    "TRANSMISSION_MODE": "unavailable",
    "TYRE_PRESSURE_FRONT_LEFT": "unavailable",
    "TYRE_PRESSURE_FRONT_RIGHT": "unavailable",
    "TYRE_PRESSURE_REAR_LEFT": "unavailable",
    "TYRE_PRESSURE_REAR_RIGHT": "unavailable",
    "VEHICLE_STATE_TYPE": "unavailable",
    "LATITUDE": "unavailable",
    "LONGITUDE": "unavailable",
}
