Frontend test updates

This commit is contained in:
Eric Hare
2026-06-11 12:05:42 -07:00
parent 7139d07033
commit 9df9475615
2 changed files with 27 additions and 54 deletions

View File

@ -1,6 +1,5 @@
import type { CustomCellRendererProps } from "ag-grid-react"; import type { CustomCellRendererProps } from "ag-grid-react";
import { uniqueId } from "lodash"; import { uniqueId } from "lodash";
import { useEffect, useState } from "react";
import NumberReader from "@/components/common/numberReader"; import NumberReader from "@/components/common/numberReader";
import ObjectRender from "@/components/common/objectRender"; import ObjectRender from "@/components/common/objectRender";
import StringReader from "@/components/common/stringReaderComponent"; import StringReader from "@/components/common/stringReaderComponent";
@ -25,43 +24,30 @@ export default function TableAutoCellRender({
...props ...props
}: CustomCellRender) { }: CustomCellRender) {
const field = colDef?.field; const field = colDef?.field;
const rowData = props.data as Record<string, unknown> | undefined;
const [localValue, setLocalValue] = useState(value ?? "");
useEffect(() => {
setLocalValue(value ?? "");
}, [value]);
const rowLoadFromDbFields = rowData?.[TABLE_LOAD_FROM_DB_FIELDS];
const loadFromDbFields = const loadFromDbFields =
rowLoadFromDbFields && props.data?.[TABLE_LOAD_FROM_DB_FIELDS] &&
typeof rowLoadFromDbFields === "object" && typeof props.data[TABLE_LOAD_FROM_DB_FIELDS] === "object"
!Array.isArray(rowLoadFromDbFields) ? props.data[TABLE_LOAD_FROM_DB_FIELDS]
? (rowLoadFromDbFields as Record<string, boolean>)
: {}; : {};
const cellLoadsFromDb = !!(field && loadFromDbFields[field]); const cellLoadsFromDb = !!(field && loadFromDbFields[field]);
function setCellLoadFromDb(loadFromDb: boolean) { function setCellLoadFromDb(loadFromDb: boolean) {
if (!field || !rowData) { if (!field || !props.data) {
return; return;
} }
const nextLoadFromDbFields = { ...loadFromDbFields }; const nextLoadFromDbFields = { ...loadFromDbFields };
nextLoadFromDbFields[field] = loadFromDb; if (loadFromDb) {
nextLoadFromDbFields[field] = true;
rowData[TABLE_LOAD_FROM_DB_FIELDS] = nextLoadFromDbFields; } else {
} delete nextLoadFromDbFields[field];
function updateGlobalVariableCell(nextValue: string, loadFromDb: boolean) {
setLocalValue(nextValue);
setCellLoadFromDb(loadFromDb);
if (loadFromDb || !field || !rowData) {
setValue?.(nextValue);
return;
} }
rowData[field] = nextValue; if (Object.keys(nextLoadFromDbFields).length > 0) {
props.data[TABLE_LOAD_FROM_DB_FIELDS] = nextLoadFromDbFields;
} else {
delete props.data[TABLE_LOAD_FROM_DB_FIELDS];
}
} }
function getCellType() { function getCellType() {
@ -108,13 +94,11 @@ export default function TableAutoCellRender({
return ( return (
<InputGlobalComponent <InputGlobalComponent
id="string-reader-global" id="string-reader-global"
value={localValue} value={value ?? ""}
editNode={false} editNode={false}
handleOnNewValue={(newValue) => { handleOnNewValue={(newValue) => {
updateGlobalVariableCell( setCellLoadFromDb(!!newValue.load_from_db);
newValue.value, setValue?.(newValue.value);
!!newValue.load_from_db,
);
}} }}
disabled={ disabled={
!colDef?.onCellValueChanged && !colDef?.onCellValueChanged &&

View File

@ -114,14 +114,13 @@ def convert_kwargs(params):
def load_from_env_vars(params, load_from_db_fields, context=None): def load_from_env_vars(params, load_from_db_fields, context=None):
no_env_fallback = bool(context and context.get("no_env_fallback"))
for field in load_from_db_fields: for field in load_from_db_fields:
if field not in params or not params[field]: if field not in params or not params[field]:
continue continue
variable_name = params[field] variable_name = params[field]
key = None key = None
# Check request_variables in context first # Check request_variables in context
if context and "request_variables" in context: if context and "request_variables" in context:
request_variables = context["request_variables"] request_variables = context["request_variables"]
if variable_name in request_variables: if variable_name in request_variables:
@ -129,20 +128,14 @@ def load_from_env_vars(params, load_from_db_fields, context=None):
logger.debug(f"Found context override for variable '{variable_name}'") logger.debug(f"Found context override for variable '{variable_name}'")
if key is None: if key is None:
if no_env_fallback: key = os.getenv(variable_name)
logger.warning( if key:
f"Variable '{variable_name}' not found in request_variables and " logger.info(f"Using environment variable {variable_name} for {field}")
f"env fallback is disabled. Setting to None."
)
else: else:
key = os.getenv(variable_name) logger.error(f"Environment variable {variable_name} is not set.")
if key: params[field] = key if key is not None else None
logger.info(f"Using environment variable {variable_name} for {field}") if key is None:
else: logger.warning(f"Could not get value for {field}. Setting it to None.")
logger.error(f"Environment variable {variable_name} is not set.")
logger.warning(f"Could not get value for {field}. Setting it to None.")
params[field] = key
return params return params
@ -164,7 +157,7 @@ async def update_table_params_with_load_from_db_fields(
def cell_load_from_db(row_metadata: Any, column_name: str) -> bool | None: def cell_load_from_db(row_metadata: Any, column_name: str) -> bool | None:
if isinstance(row_metadata, dict): if isinstance(row_metadata, dict):
return bool(row_metadata[column_name]) if column_name in row_metadata else None return bool(row_metadata[column_name]) if column_name in row_metadata else False
if isinstance(row_metadata, list): if isinstance(row_metadata, list):
return column_name in row_metadata return column_name in row_metadata
return None return None
@ -173,9 +166,6 @@ async def update_table_params_with_load_from_db_fields(
context = None context = None
if hasattr(custom_component, "graph") and hasattr(custom_component.graph, "context"): if hasattr(custom_component, "graph") and hasattr(custom_component.graph, "context"):
context = custom_component.graph.context context = custom_component.graph.context
# Honor the same no-env-fallback contract as load_from_env_vars so a served flow under
# no_env_fallback never resolves table columns from process-wide os.environ.
no_env_fallback = bool(context and context.get("no_env_fallback"))
async with session_scope() as session: async with session_scope() as session:
settings_service = get_settings_service() settings_service = get_settings_service()
@ -218,7 +208,7 @@ async def update_table_params_with_load_from_db_fields(
key = request_variables[variable_name] key = request_variables[variable_name]
logger.debug(f"Found context override for variable '{variable_name}'") logger.debug(f"Found context override for variable '{variable_name}'")
if key is None and not no_env_fallback: if key is None:
key = os.getenv(variable_name) key = os.getenv(variable_name)
if key: if key:
logger.info( logger.info(
@ -239,7 +229,7 @@ async def update_table_params_with_load_from_db_fields(
key = None key = None
# If we couldn't get from database and fallback is enabled, try environment # If we couldn't get from database and fallback is enabled, try environment
if fallback_to_env_vars and key is None and not no_env_fallback: if fallback_to_env_vars and key is None:
key = os.getenv(variable_name) key = os.getenv(variable_name)
if key: if key:
logger.info(f"Using environment variable {variable_name} for table column {column_name}") logger.info(f"Using environment variable {variable_name} for table column {column_name}")
@ -337,7 +327,6 @@ async def build_component(
async def build_custom_component(params: dict, custom_component: CustomComponent): async def build_custom_component(params: dict, custom_component: CustomComponent):
params.pop("code", None)
if "retriever" in params and hasattr(params["retriever"], "as_retriever"): if "retriever" in params and hasattr(params["retriever"], "as_retriever"):
params["retriever"] = params["retriever"].as_retriever() params["retriever"] = params["retriever"].as_retriever()