Test Ercot Api
========================

.. py:module:: test_ercot_api


Module Contents
---------------

Classes Summary
~~~~~~~~~~~~~~~

.. autoapisummary::

   test_ercot_api.TestErcotAPI





Attributes Summary
~~~~~~~~~~~~~~~~~~~

.. autoapisummary::

   test_ercot_api.api_vcr


Contents
~~~~~~~~~~~~~~~~~~~
.. py:data:: api_vcr

   

.. py:class:: TestErcotAPI

   Bases: :py:obj:`gridstatus.tests.base_test_iso.TestHelperMixin`


   **Attributes**

   .. list-table::
      :widths: 15 85
      :header-rows: 0

      * - **expected_shadow_prices_dam_columns**
        - ['Interval Start', 'Interval End', 'Constraint ID', 'Constraint Name', 'Contingency Name', 'Limiting Facility', 'Constraint Limit', 'Constraint Value', 'Violation Amount', 'Shadow Price', 'From Station', 'To Station', 'From Station kV', 'To Station kV']
      * - **expected_shadow_prices_sced_columns**
        - ['Interval Start', 'Interval End', 'SCED Timestamp', 'Constraint ID', 'Constraint Name', 'Contingency Name', 'Limiting Facility', 'Shadow Price', 'Max Shadow Price', 'Limit', 'Value', 'Violated MW', 'From Station', 'To Station', 'From Station kV', 'To Station kV', 'CCT Status']


   **Methods**

   .. autoapisummary::
      :nosignatures:

      test_ercot_api.TestErcotAPI.setup_class
      test_ercot_api.TestErcotAPI.test_get_as_plan_before_ecrs
      test_ercot_api.TestErcotAPI.test_get_as_plan_historical_date
      test_ercot_api.TestErcotAPI.test_get_as_plan_historical_date_range
      test_ercot_api.TestErcotAPI.test_get_as_plan_today_or_latest
      test_ercot_api.TestErcotAPI.test_get_as_prices_historical_date
      test_ercot_api.TestErcotAPI.test_get_as_prices_historical_date_range
      test_ercot_api.TestErcotAPI.test_get_as_prices_today_or_latest
      test_ercot_api.TestErcotAPI.test_get_as_reports_dst_end
      test_ercot_api.TestErcotAPI.test_get_as_reports_full_columns
      test_ercot_api.TestErcotAPI.test_get_as_reports_historical_date
      test_ercot_api.TestErcotAPI.test_get_as_reports_historical_date_range
      test_ercot_api.TestErcotAPI.test_get_as_reports_today_or_latest_raises_error
      test_ercot_api.TestErcotAPI.test_get_dam_load_and_gen_60_day_resources_as_offers
      test_ercot_api.TestErcotAPI.test_get_dam_load_and_gen_60_day_resources_as_offers_repeated_offers
      test_ercot_api.TestErcotAPI.test_get_endpoints_map
      test_ercot_api.TestErcotAPI.test_get_historical_data
      test_ercot_api.TestErcotAPI.test_get_hourly_resource_outage_capacity_historical_date
      test_ercot_api.TestErcotAPI.test_get_hourly_resource_outage_capacity_historical_date_range
      test_ercot_api.TestErcotAPI.test_get_hourly_resource_outage_capacity_today_or_latest
      test_ercot_api.TestErcotAPI.test_get_indicative_lmp_by_settlement_point
      test_ercot_api.TestErcotAPI.test_get_lmp_by_bus_dam_dst_end
      test_ercot_api.TestErcotAPI.test_get_lmp_by_bus_dam_dst_start
      test_ercot_api.TestErcotAPI.test_get_lmp_by_bus_dam_historical
      test_ercot_api.TestErcotAPI.test_get_lmp_by_bus_dam_historical_range
      test_ercot_api.TestErcotAPI.test_get_lmp_by_bus_dam_today_and_latest
      test_ercot_api.TestErcotAPI.test_get_lmp_by_bus_historical_date
      test_ercot_api.TestErcotAPI.test_get_lmp_by_bus_historical_date_range
      test_ercot_api.TestErcotAPI.test_get_lmp_by_bus_latest
      test_ercot_api.TestErcotAPI.test_get_lmp_by_bus_today
      test_ercot_api.TestErcotAPI.test_get_lmp_by_settlement_point_historical_date
      test_ercot_api.TestErcotAPI.test_get_lmp_by_settlement_point_historical_date_range
      test_ercot_api.TestErcotAPI.test_get_lmp_by_settlement_point_today_or_latest
      test_ercot_api.TestErcotAPI.test_get_shadow_prices_dam_historical
      test_ercot_api.TestErcotAPI.test_get_shadow_prices_dam_historical_range
      test_ercot_api.TestErcotAPI.test_get_shadow_prices_dam_today_and_latest
      test_ercot_api.TestErcotAPI.test_get_shadow_prices_sced_historical
      test_ercot_api.TestErcotAPI.test_get_shadow_prices_sced_historical_range
      test_ercot_api.TestErcotAPI.test_get_shadow_prices_sced_today_and_latest
      test_ercot_api.TestErcotAPI.test_get_solar_actual_and_forecast_by_geographical_region_hourly_date_range
      test_ercot_api.TestErcotAPI.test_get_solar_actual_and_forecast_by_geographical_region_hourly_latest
      test_ercot_api.TestErcotAPI.test_get_solar_actual_and_forecast_by_geographical_region_hourly_today
      test_ercot_api.TestErcotAPI.test_get_solar_actual_and_forecast_hourly_date_range
      test_ercot_api.TestErcotAPI.test_get_solar_actual_and_forecast_hourly_latest
      test_ercot_api.TestErcotAPI.test_get_solar_actual_and_forecast_hourly_today
      test_ercot_api.TestErcotAPI.test_get_spp_day_ahead_hourly_historical_date_range
      test_ercot_api.TestErcotAPI.test_get_spp_real_time_15_min_historical_date_range
      test_ercot_api.TestErcotAPI.test_get_wind_actual_and_forecast_by_geographical_region_hourly_date_range
      test_ercot_api.TestErcotAPI.test_get_wind_actual_and_forecast_by_geographical_region_hourly_latest
      test_ercot_api.TestErcotAPI.test_get_wind_actual_and_forecast_by_geographical_region_hourly_today
      test_ercot_api.TestErcotAPI.test_get_wind_actual_and_forecast_hourly_date_range
      test_ercot_api.TestErcotAPI.test_get_wind_actual_and_forecast_hourly_latest
      test_ercot_api.TestErcotAPI.test_get_wind_actual_and_forecast_hourly_today
      test_ercot_api.TestErcotAPI.test_handle_end_date
      test_ercot_api.TestErcotAPI.test_hit_ercot_api

   .. py:method:: setup_class()
      :classmethod:


   .. py:method:: test_get_as_plan_before_ecrs()


   .. py:method:: test_get_as_plan_historical_date()


   .. py:method:: test_get_as_plan_historical_date_range()


   .. py:method:: test_get_as_plan_today_or_latest()


   .. py:method:: test_get_as_prices_historical_date()


   .. py:method:: test_get_as_prices_historical_date_range()


   .. py:method:: test_get_as_prices_today_or_latest()


   .. py:method:: test_get_as_reports_dst_end()


   .. py:method:: test_get_as_reports_full_columns()


   .. py:method:: test_get_as_reports_historical_date()


   .. py:method:: test_get_as_reports_historical_date_range()


   .. py:method:: test_get_as_reports_today_or_latest_raises_error()


   .. py:method:: test_get_dam_load_and_gen_60_day_resources_as_offers()


   .. py:method:: test_get_dam_load_and_gen_60_day_resources_as_offers_repeated_offers()

      Tests a problematic date where one resource has repeated offers for a
      single service on a single interval


   .. py:method:: test_get_endpoints_map()


   .. py:method:: test_get_historical_data()


   .. py:method:: test_get_hourly_resource_outage_capacity_historical_date()


   .. py:method:: test_get_hourly_resource_outage_capacity_historical_date_range()


   .. py:method:: test_get_hourly_resource_outage_capacity_today_or_latest()


   .. py:method:: test_get_indicative_lmp_by_settlement_point(date, end)


   .. py:method:: test_get_lmp_by_bus_dam_dst_end()


   .. py:method:: test_get_lmp_by_bus_dam_dst_start()


   .. py:method:: test_get_lmp_by_bus_dam_historical()


   .. py:method:: test_get_lmp_by_bus_dam_historical_range()


   .. py:method:: test_get_lmp_by_bus_dam_today_and_latest()


   .. py:method:: test_get_lmp_by_bus_historical_date()


   .. py:method:: test_get_lmp_by_bus_historical_date_range()


   .. py:method:: test_get_lmp_by_bus_latest()


   .. py:method:: test_get_lmp_by_bus_today()


   .. py:method:: test_get_lmp_by_settlement_point_historical_date()


   .. py:method:: test_get_lmp_by_settlement_point_historical_date_range()


   .. py:method:: test_get_lmp_by_settlement_point_today_or_latest()


   .. py:method:: test_get_shadow_prices_dam_historical()


   .. py:method:: test_get_shadow_prices_dam_historical_range()


   .. py:method:: test_get_shadow_prices_dam_today_and_latest()


   .. py:method:: test_get_shadow_prices_sced_historical()


   .. py:method:: test_get_shadow_prices_sced_historical_range()


   .. py:method:: test_get_shadow_prices_sced_today_and_latest()


   .. py:method:: test_get_solar_actual_and_forecast_by_geographical_region_hourly_date_range()


   .. py:method:: test_get_solar_actual_and_forecast_by_geographical_region_hourly_latest()


   .. py:method:: test_get_solar_actual_and_forecast_by_geographical_region_hourly_today()


   .. py:method:: test_get_solar_actual_and_forecast_hourly_date_range()


   .. py:method:: test_get_solar_actual_and_forecast_hourly_latest()


   .. py:method:: test_get_solar_actual_and_forecast_hourly_today()


   .. py:method:: test_get_spp_day_ahead_hourly_historical_date_range()


   .. py:method:: test_get_spp_real_time_15_min_historical_date_range()


   .. py:method:: test_get_wind_actual_and_forecast_by_geographical_region_hourly_date_range()


   .. py:method:: test_get_wind_actual_and_forecast_by_geographical_region_hourly_latest()


   .. py:method:: test_get_wind_actual_and_forecast_by_geographical_region_hourly_today()


   .. py:method:: test_get_wind_actual_and_forecast_hourly_date_range()


   .. py:method:: test_get_wind_actual_and_forecast_hourly_latest()


   .. py:method:: test_get_wind_actual_and_forecast_hourly_today()


   .. py:method:: test_handle_end_date()


   .. py:method:: test_hit_ercot_api()

      First we test that entering a bad endpoint results in a keyerror



