def test_load_sector(tmpdir):

    data_dir = Path(tmpdir)
    Settings.DATA_DIR = data_dir

    mock_sim_controls = mock.Mock()
    mock_aircraft_controls = mock.Mock()
    proxy_simulator_controls = ProxySimulatorControls(mock_sim_controls,
                                                      mock_aircraft_controls)

    # First test uploading a new sector

    # Test error handling from reset

    mock_sim_controls.reset.return_value = "Sim error (reset)"
    err = proxy_simulator_controls.load_sector(_TEST_SECTOR)
    assert err == "Sim error (reset)"

    # Test error handling from load_sector

    mock_sim_controls.reset.return_value = None
    mock_sim_controls.load_sector.return_value = "Sim error (load_sector)"
    err = proxy_simulator_controls.load_sector(_TEST_SECTOR)
    assert err == "Sim error (load_sector)"

    # Test valid response

    mock_sim_controls.load_sector.return_value = None
    err = proxy_simulator_controls.load_sector(_TEST_SECTOR)
    assert not err

    # Assert sector saved to file

    with open(data_dir / "sectors" / f"{_TEST_SECTOR.name}.geojson") as f:
        assert geojson.dumps(SectorElement.deserialise(f)) == geojson.dumps(
            _TEST_SECTOR.element)

    # Test load of existing sector by name

    existing_sector = Sector(_TEST_SECTOR.name, None)
    err = proxy_simulator_controls.load_sector(existing_sector)
    assert not err
def test_load_scenario(tmpdir):

    data_dir = Path(tmpdir)
    Settings.DATA_DIR = data_dir

    mock_sim_controls = mock.Mock()
    mock_aircraft_controls = mock.Mock()
    proxy_simulator_controls = ProxySimulatorControls(mock_sim_controls,
                                                      mock_aircraft_controls)

    # Test error when no sector set

    res = proxy_simulator_controls.load_scenario(_TEST_SCENARIO)
    assert res == "No sector set"

    # First test uploading a new scenario

    # Test error handling from reset

    mock_sim_controls.reset.return_value = "Sim error (reset)"
    err = proxy_simulator_controls.load_sector(_TEST_SECTOR)
    assert err == "Sim error (reset)"

    # Test error handling from load_scenario

    proxy_simulator_controls.sector = _TEST_SECTOR
    mock_sim_controls.reset.return_value = None
    mock_sim_controls.load_scenario.return_value = "Sim error (load_scenario)"
    err = proxy_simulator_controls.load_scenario(_TEST_SCENARIO)
    assert err == "Sim error (load_scenario)"

    # Test valid response

    mock_sim_controls.load_scenario.return_value = None
    err = proxy_simulator_controls.load_scenario(_TEST_SCENARIO)
    assert not err

    # Assert scenario saved to file

    with open(data_dir / "scenarios" / f"{_TEST_SCENARIO.name}.json") as f:
        assert json.load(f) == _TEST_SCENARIO.content

    # Test load of existing scenario by name

    existing_scn = Scenario(_TEST_SCENARIO.name, None)
    err = proxy_simulator_controls.load_scenario(existing_scn)
    assert not err