1+ from unittest .mock import Mock
2+
13import pytest
24from typer .testing import CliRunner
35
79
810
911@pytest .mark .parametrize ("name,ticker,desc,expected_error" , [
10- ("" , "TST" , "test" , "name" ),
11- (" " , "TST" , "test" , "name" ),
12- ("MyToken" , "" , "test" , "ticker" ),
13- ("MyToken" , " " , "test" , "ticker" ),
14- ("MyToken" , "TST" , "" , "description" ),
15- ("MyToken" , "TST" , " " , "description" ),
12+ ("" , "TST" , "test" , "token name cannot be empty. " ),
13+ (" " , "TST" , "test" , "token name cannot be empty. " ),
14+ ("MyToken" , "" , "test" , "token ticker cannot be empty. " ),
15+ ("MyToken" , " " , "test" , "token ticker cannot be empty. " ),
16+ ("MyToken" , "TST" , "" , "token description cannot be empty. " ),
17+ ("MyToken" , "TST" , " " , "token description cannot be empty. " ),
1618])
1719def test_launch_rejects_empty_inputs (tmp_path , monkeypatch , name , ticker , desc , expected_error ):
1820 """launch rejects empty or whitespace-only name, ticker, or description."""
1921 monkeypatch .setenv ("XDG_CONFIG_HOME" , str (tmp_path ))
22+ launch_token_mock = Mock (side_effect = AssertionError ("launch_token must not be called for invalid input" ))
23+ monkeypatch .setattr ("pumpfun_cli.commands.launch.launch_token" , launch_token_mock )
24+
2025 result = runner .invoke (app , ["launch" , "--name" , name , "--ticker" , ticker , "--desc" , desc ])
2126 assert result .exit_code != 0
22- assert expected_error in result .output .lower ()
27+ assert expected_error in result .output .lower ()
28+ launch_token_mock .assert_not_called ()
0 commit comments