|  | 
| 6 | 6 | 
 | 
| 7 | 7 | import pytest | 
| 8 | 8 | import respx | 
|  | 9 | +from click.testing import Result | 
| 9 | 10 | from fastapi_cli.cli import app | 
| 10 | 11 | from fastapi_cli.config import settings | 
| 11 | 12 | from httpx import Response | 
| @@ -449,10 +450,7 @@ def test_returns_error_when_team_not_found( | 
| 449 | 450 |         assert result.exit_code == 1 | 
| 450 | 451 | 
 | 
| 451 | 452 | 
 | 
| 452 |  | -@pytest.mark.respx(base_url=settings.base_api_url) | 
| 453 |  | -def test_can_skip_waiting( | 
| 454 |  | -    logged_in_cli: None, tmp_path: Path, respx_mock: respx.MockRouter | 
| 455 |  | -) -> None: | 
|  | 453 | +def _deploy_without_waiting(respx_mock: respx.MockRouter, tmp_path: Path) -> Result: | 
| 456 | 454 |     steps = [ENTER, ENTER, ENTER, *"demo", ENTER] | 
| 457 | 455 | 
 | 
| 458 | 456 |     team_data = _get_random_team() | 
| @@ -499,8 +497,55 @@ def test_can_skip_waiting( | 
| 499 | 497 |     with changing_dir(tmp_path), patch("click.getchar") as mock_getchar: | 
| 500 | 498 |         mock_getchar.side_effect = steps | 
| 501 | 499 | 
 | 
| 502 |  | -        result = runner.invoke(app, ["deploy", "--no-wait"]) | 
|  | 500 | +        return runner.invoke(app, ["deploy", "--no-wait"]) | 
| 503 | 501 | 
 | 
| 504 |  | -        assert result.exit_code == 0 | 
| 505 | 502 | 
 | 
| 506 |  | -        assert "Check the status of your deployment at" in result.output | 
|  | 503 | +@pytest.mark.respx(base_url=settings.base_api_url) | 
|  | 504 | +def test_can_skip_waiting( | 
|  | 505 | +    logged_in_cli: None, tmp_path: Path, respx_mock: respx.MockRouter | 
|  | 506 | +) -> None: | 
|  | 507 | +    result = _deploy_without_waiting(respx_mock, tmp_path) | 
|  | 508 | + | 
|  | 509 | +    assert result.exit_code == 0 | 
|  | 510 | + | 
|  | 511 | +    assert "Check the status of your deployment at" in result.output | 
|  | 512 | + | 
|  | 513 | + | 
|  | 514 | +@pytest.mark.respx(base_url=settings.base_api_url) | 
|  | 515 | +def test_creates_config_folder_and_adds_it_to_gitignore( | 
|  | 516 | +    logged_in_cli: None, tmp_path: Path, respx_mock: respx.MockRouter | 
|  | 517 | +) -> None: | 
|  | 518 | +    git_ignore_path = tmp_path / ".gitignore" | 
|  | 519 | +    git_ignore_path.write_text(".venv\n") | 
|  | 520 | + | 
|  | 521 | +    _deploy_without_waiting(respx_mock, tmp_path) | 
|  | 522 | + | 
|  | 523 | +    assert (tmp_path / ".fastapi" / "cloud.json").exists() | 
|  | 524 | +    assert (tmp_path / ".fastapi" / "README.md").exists() | 
|  | 525 | + | 
|  | 526 | +    assert git_ignore_path.read_text() == ".venv\n.fastapi\n" | 
|  | 527 | + | 
|  | 528 | + | 
|  | 529 | +@pytest.mark.respx(base_url=settings.base_api_url) | 
|  | 530 | +def test_creates_config_folder_and_creates_git_ignore( | 
|  | 531 | +    logged_in_cli: None, tmp_path: Path, respx_mock: respx.MockRouter | 
|  | 532 | +) -> None: | 
|  | 533 | +    _deploy_without_waiting(respx_mock, tmp_path) | 
|  | 534 | + | 
|  | 535 | +    assert (tmp_path / ".fastapi" / "cloud.json").exists() | 
|  | 536 | +    assert (tmp_path / ".fastapi" / "README.md").exists() | 
|  | 537 | +    assert (tmp_path / ".gitignore").exists() | 
|  | 538 | + | 
|  | 539 | +    assert (tmp_path / ".gitignore").read_text() == ".fastapi\n" | 
|  | 540 | + | 
|  | 541 | + | 
|  | 542 | +@pytest.mark.respx(base_url=settings.base_api_url) | 
|  | 543 | +def test_does_not_duplicate_entry_in_git_ignore( | 
|  | 544 | +    logged_in_cli: None, tmp_path: Path, respx_mock: respx.MockRouter | 
|  | 545 | +) -> None: | 
|  | 546 | +    git_ignore_path = tmp_path / ".gitignore" | 
|  | 547 | +    git_ignore_path.write_text(".fastapi\n") | 
|  | 548 | + | 
|  | 549 | +    _deploy_without_waiting(respx_mock, tmp_path) | 
|  | 550 | + | 
|  | 551 | +    assert git_ignore_path.read_text() == ".fastapi\n" | 
0 commit comments