import pytest
import gridstatus
[docs]def test_get_gas_prices():
iso = gridstatus.CAISO()
date = "Oct 15, 2022"
# no fuel region
df = iso.get_gas_prices(date=date)
n_unique = 153
assert df["Fuel Region Id"].nunique() == n_unique
assert len(df) == n_unique * 24
# single fuel region
test_region_1 = "FRPGE2GHG"
df = iso.get_gas_prices(date=date, fuel_region_id=test_region_1)
assert df["Fuel Region Id"].unique()[0] == test_region_1
assert len(df) == 24
# list of fuel regions
test_region_2 = "FRSCE8GHG"
df = iso.get_gas_prices(
date=date,
fuel_region_id=[
test_region_1,
test_region_2,
],
)
assert set(df["Fuel Region Id"].unique()) == set(
[test_region_1, test_region_2],
)
assert len(df) == 24 * 2
[docs]def test_get_ghg_allowance():
iso = gridstatus.CAISO()
date = "Oct 15, 2022"
df = iso.get_ghg_allowance(date)
assert len(df) == 1
assert set(df.columns) == {"Time", "GHG Allowance Price"}
[docs]def test_get_curtailment():
iso = gridstatus.CAISO()
date = "Oct 15, 2022"
df = iso.get_curtailment(date)
assert df.shape == (31, 6)
[docs]def test_get_curtailment_2_pages():
# test that the function can handle 3 pages of data
iso = gridstatus.CAISO()
date = "March 15, 2022"
df = iso.get_curtailment(date)
assert df.shape == (55, 6)
[docs]def test_get_curtailment_3_pages():
# test that the function can handle 3 pages of data
iso = gridstatus.CAISO()
date = "March 16, 2022"
df = iso.get_curtailment(date)
assert df.shape == (76, 6)
[docs]def check_as_data(df, market):
columns = [
"Time",
"Region",
"Market",
"Non-Spinning Reserves Procured (MW)",
"Non-Spinning Reserves Self-Provided (MW)",
"Non-Spinning Reserves Total (MW)",
"Non-Spinning Reserves Total Cost",
"Regulation Down Procured (MW)",
"Regulation Down Self-Provided (MW)",
"Regulation Down Total (MW)",
"Regulation Down Total Cost",
"Regulation Mileage Down Procured (MW)",
"Regulation Mileage Down Self-Provided (MW)",
"Regulation Mileage Down Total (MW)",
"Regulation Mileage Down Total Cost",
"Regulation Mileage Up Procured (MW)",
"Regulation Mileage Up Self-Provided (MW)",
"Regulation Mileage Up Total (MW)",
"Regulation Mileage Up Total Cost",
"Regulation Up Procured (MW)",
"Regulation Up Self-Provided (MW)",
"Regulation Up Total (MW)",
"Regulation Up Total Cost",
"Spinning Reserves Procured (MW)",
"Spinning Reserves Self-Provided (MW)",
"Spinning Reserves Total (MW)",
"Spinning Reserves Total Cost",
]
assert df.columns.tolist() == columns
assert df["Market"].unique()[0] == market
assert df.shape[0] > 0
[docs]def test_caiso_get_as_procurement():
iso = gridstatus.CAISO()
date = "Oct 15, 2022"
for market in ["DAM", "RTM"]:
df = iso.get_as_procurement(date, market=market)
check_as_data(df, market)
[docs]def test_caiso_get_as_prices():
iso = gridstatus.CAISO()
date = "Oct 15, 2022"
df = iso.get_as_prices(date)
assert df.shape[0] > 0
assert df.columns.tolist() == [
"Time",
"Region",
"Market",
"Non-Spinning Reserves",
"Regulation Down",
"Regulation Mileage Down",
"Regulation Mileage Up",
"Regulation Up",
"Spinning Reserves",
]