Add separate simulator UI
This commit is contained in:
@@ -6,9 +6,9 @@ from sqlalchemy import create_engine, select
|
||||
from sqlalchemy.orm import Session, sessionmaker
|
||||
|
||||
from app.database import Base
|
||||
from app.main import start_production_order
|
||||
from app.main import run_simulator_scenario, start_production_order
|
||||
from app.models import Cycle, Downtime, Machine, MachineEvent, ProductionOrder
|
||||
from app.schemas import MachineEventIn
|
||||
from app.schemas import MachineEventIn, SimulatorScenarioCreate
|
||||
from app.services.events import _is_matching_edge, detect_missing_cycles, handle_machine_event, normalize_signal_value, parse_machine_event
|
||||
|
||||
|
||||
@@ -157,3 +157,41 @@ def test_start_order_rejects_second_running_order_on_machine(db_session: Session
|
||||
|
||||
assert exc.value.status_code == 400
|
||||
assert exc.value.detail == "Another order is already running on this machine"
|
||||
|
||||
|
||||
def test_simulator_cycle_burst_uses_production_event_logic(db_session: Session) -> None:
|
||||
machine = seed_running_machine(db_session)
|
||||
|
||||
result = run_simulator_scenario(
|
||||
SimulatorScenarioCreate(
|
||||
machine_id=machine.code,
|
||||
scenario="cycle_burst",
|
||||
cycle_time_sec=12,
|
||||
count=3,
|
||||
),
|
||||
db_session,
|
||||
)
|
||||
|
||||
cycles = db_session.execute(select(Cycle).where(Cycle.machine_id == machine.id)).scalars().all()
|
||||
assert result["scenario"] == "cycle_burst"
|
||||
assert len(result["events"]) == 3
|
||||
assert len(cycles) == 3
|
||||
assert {cycle.cycle_time_sec for cycle in cycles} == {12}
|
||||
|
||||
|
||||
def test_simulator_debounce_noise_is_ignored(db_session: Session) -> None:
|
||||
machine = seed_running_machine(db_session)
|
||||
|
||||
result = run_simulator_scenario(
|
||||
SimulatorScenarioCreate(
|
||||
machine_id=machine.code,
|
||||
scenario="debounce_noise",
|
||||
cycle_time_sec=12,
|
||||
),
|
||||
db_session,
|
||||
)
|
||||
|
||||
cycles = db_session.execute(select(Cycle).where(Cycle.machine_id == machine.id)).scalars().all()
|
||||
assert result["scenario"] == "debounce_noise"
|
||||
assert len(result["events"]) == 2
|
||||
assert cycles == []
|
||||
|
||||
Reference in New Issue
Block a user