Determining UUIDs of players for Minecraft servers.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

59 lines
1.6 KiB

  1. import { describe, it, expect, vi, beforeAll } from 'vitest';
  2. import { createCli } from '../src/cli';
  3. import { addCommands } from '../src/commands';
  4. import { UuidServiceImpl, InvalidArgumentTypeError } from '../src/modules/uuid';
  5. import { Cli } from '../src/packages/cli-wrapper';
  6. vi.mock('process');
  7. describe('blah', () => {
  8. let cli: Cli;
  9. beforeAll(() => {
  10. cli = createCli({
  11. name: 'cli-test',
  12. logger: false,
  13. });
  14. addCommands(cli);
  15. });
  16. it('returns result when successful', async () => {
  17. const response = await cli.test().run(['uuid', 'username']);
  18. expect(response.exitCode).toBe(0);
  19. });
  20. it('returns error when given invalid inputs', async () => {
  21. vi.spyOn(UuidServiceImpl.prototype, 'getUsernameUuid').mockImplementationOnce(() => {
  22. throw new InvalidArgumentTypeError('Invalid input');
  23. });
  24. const response = await cli.test().run(['uuid', 'username']);
  25. expect(response.exitCode).toBe(-1);
  26. });
  27. it('returns error when an unexpected error occurs', async () => {
  28. vi.spyOn(UuidServiceImpl.prototype, 'getUsernameUuid').mockImplementationOnce(() => {
  29. throw new Error('Unexpected error');
  30. });
  31. const response = await cli.test().run(['uuid', 'username']);
  32. expect(response.exitCode).toBe(-3);
  33. });
  34. it('returns error when given insufficient arguments', async () => {
  35. const response = await cli.test().run(['uuid']);
  36. expect(response.exitCode).toBe(-1);
  37. });
  38. describe('on interactive mode', () => {
  39. it('prompts values for insufficient arguments', async () => {
  40. const response = await cli
  41. .test()
  42. .promptValue({
  43. username: 'username',
  44. })
  45. .run(['uuid', '-i']);
  46. expect(response.exitCode).not.toBe(-1);
  47. });
  48. });
  49. });