from click.testing import CliRunner from ceo.cli import cli def test_positions(cli_setup): runner = CliRunner() # Setup test data for i in range(5): runner.invoke(cli, ['members', 'add', f'test_{i}', '--cn', f'Test {i}', '--program', 'Math', '--terms', '1'], input='y\n') runner.invoke(cli, ['groups', 'add', 'exec', '--description', 'Test Group'], input='y\n') result = runner.invoke(cli, [ 'positions', 'set', '--president', 'test_0', '--vice-president', 'test_1', '--sysadmin', 'test_2', '--secretary', 'test_3', '--webmaster', 'test_4', ], input='y\n') assert result.exit_code == 0 assert result.output == ''' The positions will be updated: president: test_0 vice-president: test_1 sysadmin: test_2 secretary: test_3 webmaster: test_4 treasurer: cro: librarian: imapd: offsck: Do you want to continue? [y/N]: y Update positions in LDAP... Done Update executive group in LDAP... Done Subscribe to mailing lists... Done Transaction successfully completed. '''[1:] # noqa: W291 result = runner.invoke(cli, ['positions', 'get']) assert result.exit_code == 0 assert result.output == ''' president: test_0 secretary: test_3 sysadmin: test_2 vice-president: test_1 webmaster: test_4 '''[1:] # Cleanup test data for i in range(5): runner.invoke(cli, ['members', 'delete', f'test_{i}'], input='y\n') runner.invoke(cli, ['groups', 'delete', 'exec'], input='y\n')