Files
spring-shell/e2e/spring-shell-e2e-tests/test/sample-e2e-default-value.test.ts
Janne Valkealahti a900fa4977 Fix e2e tests
- Due to changes in #567 e2e tests started to fail as
  args where passed with spaces instead of args array.
- Fix all args use so that spawn underneath uses
  plain array with proper args.
2022-11-25 09:03:20 +00:00

582 lines
17 KiB
TypeScript

import 'jest-extended';
import waitForExpect from 'wait-for-expect';
import { Cli } from 'spring-shell-e2e';
import {
nativeDesc,
jarDesc,
jarCommand,
nativeCommand,
jarOptions,
waitForExpectDefaultTimeout,
waitForExpectDefaultInterval,
testTimeout
} from '../src/utils';
// e2e default value commands
describe('e2e commands default-value', () => {
let cli: Cli;
let command: string;
let options: string[] = [];
/**
* testDefaultValue
*/
const annoDefaultWithoutArgReturnsHiDesc = 'default without arg returns hi (anno)';
const annoDefaultWithoutArgCommand = ['e2e', 'anno', 'default-value'];
const annoDefaultWithoutArgReturnsHi = async (cli: Cli) => {
cli.run();
await waitForExpect(async () => {
const screen = cli.screen();
expect(screen).toEqual(expect.arrayContaining([expect.stringContaining('Hello hi')]));
});
await expect(cli.exitCode()).resolves.toBe(0);
};
/**
* testDefaultValueRegistration
*/
const regDefaultWithoutArgReturnsHiDesc = 'default without arg returns hi (reg)';
const regDefaultWithoutArgCommand = ['e2e', 'reg', 'default-value'];
const regOptionalWithoutArgReturnsHi = async (cli: Cli) => {
cli.run();
await waitForExpect(async () => {
const screen = cli.screen();
expect(screen).toEqual(expect.arrayContaining([expect.stringContaining('Hello hi')]));
});
await expect(cli.exitCode()).resolves.toBe(0);
};
/**
* testDefaultValue
*/
const annoDefaultWithArgReturnsFooDesc = 'default with arg returns foo (anno)';
const annoDefaultWithArgCommand = ['e2e', 'anno', 'default-value', '--arg1', 'foo'];
const annoDefaultWithArgReturnsFoo = async (cli: Cli) => {
cli.run();
await waitForExpect(async () => {
const screen = cli.screen();
expect(screen).toEqual(expect.arrayContaining([expect.stringContaining('Hello foo')]));
});
await expect(cli.exitCode()).resolves.toBe(0);
};
/**
* testDefaultValueRegistration
*/
const regDefaultWithArgReturnsFooDesc = 'default with arg returns foo (reg)';
const regDefaultWithArgCommand = ['e2e', 'reg', 'optional-value', '--arg1', 'foo'];
const regDefaultWithArgReturnsFoo = async (cli: Cli) => {
cli.run();
await waitForExpect(async () => {
const screen = cli.screen();
expect(screen).toEqual(expect.arrayContaining([expect.stringContaining('Hello foo')]));
});
await expect(cli.exitCode()).resolves.toBe(0);
};
/**
* testDefaultValueBoolean1 - 1
*/
const annoDefaultValueBoolean1WithoutArgReturnsFalseDesc = 'default boolean1 without arg returns false (anno)';
const annoDefaultValueBoolean1WithoutArgCommand = ['e2e', 'anno', 'default-value-boolean1'];
const annoDefaultValueBoolean1WithoutArgReturnsFalse = async (cli: Cli) => {
cli.run();
await waitForExpect(async () => {
const screen = cli.screen();
expect(screen).toEqual(expect.arrayContaining([expect.stringContaining('Hello false')]));
});
await expect(cli.exitCode()).resolves.toBe(0);
};
/**
* testDefaultValueBoolean1Registration - 1
*/
const regDefaultValueBoolean1WithoutArgReturnsFalseDesc = 'default boolean1 without arg returns false (reg)';
const regDefaultValueBoolean1WithoutArgCommand = ['e2e', 'reg', 'default-value-boolean1'];
const regDefaultValueBoolean1WithoutArgReturnsFalse = async (cli: Cli) => {
cli.run();
await waitForExpect(async () => {
const screen = cli.screen();
expect(screen).toEqual(expect.arrayContaining([expect.stringContaining('Hello false')]));
});
await expect(cli.exitCode()).resolves.toBe(0);
};
/**
* testDefaultValueBoolean1 - 2
*/
const annoDefaultValueBoolean2WithArgReturnsTrueDesc = 'default boolean1 with arg returns true (anno)';
const annoDefaultValueBoolean2WithArgCommand = ['e2e', 'anno', 'default-value-boolean1', '--arg1'];
const annoDefaultValueBoolean2WithArgReturnsTrue = async (cli: Cli) => {
cli.run();
await waitForExpect(async () => {
const screen = cli.screen();
expect(screen).toEqual(expect.arrayContaining([expect.stringContaining('Hello true')]));
});
await expect(cli.exitCode()).resolves.toBe(0);
};
/**
* testDefaultValueBoolean1Registration - 2
*/
const regDefaultValueBoolean2WithArgReturnsTrueDesc = 'default boolean1 with arg returns true (reg)';
const regDefaultValueBoolean2WithArgCommand = ['e2e', 'reg', 'default-value-boolean1', '--arg1'];
const regDefaultValueBoolean2WithArgReturnsTrue = async (cli: Cli) => {
cli.run();
await waitForExpect(async () => {
const screen = cli.screen();
expect(screen).toEqual(expect.arrayContaining([expect.stringContaining('Hello true')]));
});
await expect(cli.exitCode()).resolves.toBe(0);
};
/**
* testDefaultValueBoolean1 - 3
*/
const annoDefaultValueBoolean3WithArgReturnsFalseDesc = 'default boolean1 with arg returns false (anno)';
const annoDefaultValueBoolean3WithArgCommand = ['e2e', 'anno', 'default-value-boolean1', '--arg1', 'false'];
const annoDefaultValueBoolean3WithArgReturnsFalse = async (cli: Cli) => {
cli.run();
await waitForExpect(async () => {
const screen = cli.screen();
expect(screen).toEqual(expect.arrayContaining([expect.stringContaining('Hello false')]));
});
await expect(cli.exitCode()).resolves.toBe(0);
};
/**
* testDefaultValueBoolean1Registration - 3
*/
const regDefaultValueBoolean3WithArgReturnsFalseDesc = 'default boolean1 with arg returns false (reg)';
const regDefaultValueBoolean3WithArgCommand = ['e2e', 'reg', 'default-value-boolean1', '--arg1', 'false'];
const regDefaultValueBoolean3WithArgReturnsFalse = async (cli: Cli) => {
cli.run();
await waitForExpect(async () => {
const screen = cli.screen();
expect(screen).toEqual(expect.arrayContaining([expect.stringContaining('Hello false')]));
});
await expect(cli.exitCode()).resolves.toBe(0);
};
/**
* testDefaultValueBoolean2 - 1
*/
const annoDefaultValueBoolean2WithoutArgReturnsTrueDesc = 'default boolean2 without arg returns true (anno)';
const annoDefaultValueBoolean2WithoutArgCommand = ['e2e', 'anno', 'default-value-boolean2'];
const annoDefaultValueBoolean2WithoutArgReturnsTrue = async (cli: Cli) => {
cli.run();
await waitForExpect(async () => {
const screen = cli.screen();
expect(screen).toEqual(expect.arrayContaining([expect.stringContaining('Hello true')]));
});
await expect(cli.exitCode()).resolves.toBe(0);
};
/**
* testDefaultValueBoolean2Registration - 1
*/
const regDefaultValueBoolean2WithoutArgReturnsTrueDesc = 'default boolean2 without arg returns true (reg)';
const regDefaultValueBoolean2WithoutArgCommand = ['e2e', 'reg', 'default-value-boolean2'];
const regDefaultValueBoolean2WithoutArgReturnsTrue = async (cli: Cli) => {
cli.run();
await waitForExpect(async () => {
const screen = cli.screen();
expect(screen).toEqual(expect.arrayContaining([expect.stringContaining('Hello true')]));
});
await expect(cli.exitCode()).resolves.toBe(0);
};
/**
* testDefaultValueBoolean3 - 1
*/
const annoDefaultValueBoolean3WithoutArgReturnsFalseDesc = 'default boolean3 without arg returns false (anno)';
const annoDefaultValueBoolean3WithoutArgCommand = ['e2e', 'anno', 'default-value-boolean3'];
const annoDefaultValueBoolean3WithoutArgReturnsFalse = async (cli: Cli) => {
cli.run();
await waitForExpect(async () => {
const screen = cli.screen();
expect(screen).toEqual(expect.arrayContaining([expect.stringContaining('Hello false')]));
});
await expect(cli.exitCode()).resolves.toBe(0);
};
/**
* testDefaultValueBoolean3Registration - 1
*/
const regDefaultValueBoolean3WithoutArgReturnsFalseDesc = 'default boolean3 without arg returns false (reg)';
const regDefaultValueBoolean3WithoutArgCommand = ['e2e', 'reg', 'default-value-boolean3'];
const regDefaultValueBoolean3WithoutArgReturnsFalse = async (cli: Cli) => {
cli.run();
await waitForExpect(async () => {
const screen = cli.screen();
expect(screen).toEqual(expect.arrayContaining([expect.stringContaining('Hello false')]));
});
await expect(cli.exitCode()).resolves.toBe(0);
};
beforeEach(async () => {
waitForExpect.defaults.timeout = waitForExpectDefaultTimeout;
waitForExpect.defaults.interval = waitForExpectDefaultInterval;
}, testTimeout);
afterEach(async () => {
cli?.dispose();
}, testTimeout);
/**
* fatjar commands
*/
describe(jarDesc, () => {
beforeAll(() => {
command = jarCommand;
options = jarOptions;
});
it(
annoDefaultWithoutArgReturnsHiDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...annoDefaultWithoutArgCommand]
});
await annoDefaultWithoutArgReturnsHi(cli);
},
testTimeout
);
it(
regDefaultWithoutArgReturnsHiDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...regDefaultWithoutArgCommand]
});
await regOptionalWithoutArgReturnsHi(cli);
},
testTimeout
);
it(
annoDefaultWithArgReturnsFooDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...annoDefaultWithArgCommand]
});
await annoDefaultWithArgReturnsFoo(cli);
},
testTimeout
);
it(
regDefaultWithArgReturnsFooDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...regDefaultWithArgCommand]
});
await regDefaultWithArgReturnsFoo(cli);
},
testTimeout
);
it(
annoDefaultValueBoolean1WithoutArgReturnsFalseDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...annoDefaultValueBoolean1WithoutArgCommand]
});
await annoDefaultValueBoolean1WithoutArgReturnsFalse(cli);
},
testTimeout
);
it(
regDefaultValueBoolean1WithoutArgReturnsFalseDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...regDefaultValueBoolean1WithoutArgCommand]
});
await regDefaultValueBoolean1WithoutArgReturnsFalse(cli);
},
testTimeout
);
it(
annoDefaultValueBoolean2WithArgReturnsTrueDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...annoDefaultValueBoolean2WithArgCommand]
});
await annoDefaultValueBoolean2WithArgReturnsTrue(cli);
},
testTimeout
);
it(
regDefaultValueBoolean2WithArgReturnsTrueDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...regDefaultValueBoolean2WithArgCommand]
});
await regDefaultValueBoolean2WithArgReturnsTrue(cli);
},
testTimeout
);
it(
annoDefaultValueBoolean3WithArgReturnsFalseDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...annoDefaultValueBoolean3WithArgCommand]
});
await annoDefaultValueBoolean3WithArgReturnsFalse(cli);
},
testTimeout
);
it(
regDefaultValueBoolean3WithArgReturnsFalseDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...regDefaultValueBoolean3WithArgCommand]
});
await regDefaultValueBoolean3WithArgReturnsFalse(cli);
},
testTimeout
);
it(
annoDefaultValueBoolean2WithoutArgReturnsTrueDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...annoDefaultValueBoolean2WithoutArgCommand]
});
await annoDefaultValueBoolean2WithoutArgReturnsTrue(cli);
},
testTimeout
);
it(
regDefaultValueBoolean2WithoutArgReturnsTrueDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...regDefaultValueBoolean2WithoutArgCommand]
});
await regDefaultValueBoolean2WithoutArgReturnsTrue(cli);
},
testTimeout
);
it(
annoDefaultValueBoolean3WithoutArgReturnsFalseDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...annoDefaultValueBoolean3WithoutArgCommand]
});
await annoDefaultValueBoolean3WithoutArgReturnsFalse(cli);
},
testTimeout
);
it(
regDefaultValueBoolean3WithoutArgReturnsFalseDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...regDefaultValueBoolean3WithoutArgCommand]
});
await regDefaultValueBoolean3WithoutArgReturnsFalse(cli);
},
testTimeout
);
});
/**
* native commands
*/
describe(nativeDesc, () => {
beforeAll(() => {
command = nativeCommand;
options = [];
});
it(
annoDefaultWithoutArgReturnsHiDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...annoDefaultWithoutArgCommand]
});
await annoDefaultWithoutArgReturnsHi(cli);
},
testTimeout
);
it(
regDefaultWithoutArgReturnsHiDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...regDefaultWithoutArgCommand]
});
await regOptionalWithoutArgReturnsHi(cli);
},
testTimeout
);
it(
annoDefaultWithArgReturnsFooDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...annoDefaultWithArgCommand]
});
await annoDefaultWithArgReturnsFoo(cli);
},
testTimeout
);
it(
regDefaultWithArgReturnsFooDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...regDefaultWithArgCommand]
});
await regDefaultWithArgReturnsFoo(cli);
},
testTimeout
);
it(
annoDefaultValueBoolean1WithoutArgReturnsFalseDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...annoDefaultValueBoolean1WithoutArgCommand]
});
await annoDefaultValueBoolean1WithoutArgReturnsFalse(cli);
},
testTimeout
);
it(
regDefaultValueBoolean1WithoutArgReturnsFalseDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...regDefaultValueBoolean1WithoutArgCommand]
});
await regDefaultValueBoolean1WithoutArgReturnsFalse(cli);
},
testTimeout
);
it(
annoDefaultValueBoolean2WithArgReturnsTrueDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...annoDefaultValueBoolean2WithArgCommand]
});
await annoDefaultValueBoolean2WithArgReturnsTrue(cli);
},
testTimeout
);
it(
regDefaultValueBoolean2WithArgReturnsTrueDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...regDefaultValueBoolean2WithArgCommand]
});
await regDefaultValueBoolean2WithArgReturnsTrue(cli);
},
testTimeout
);
it(
annoDefaultValueBoolean3WithArgReturnsFalseDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...annoDefaultValueBoolean3WithArgCommand]
});
await annoDefaultValueBoolean3WithArgReturnsFalse(cli);
},
testTimeout
);
it(
regDefaultValueBoolean3WithArgReturnsFalseDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...regDefaultValueBoolean3WithArgCommand]
});
await regDefaultValueBoolean3WithArgReturnsFalse(cli);
},
testTimeout
);
it(
annoDefaultValueBoolean2WithoutArgReturnsTrueDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...annoDefaultValueBoolean2WithoutArgCommand]
});
await annoDefaultValueBoolean2WithoutArgReturnsTrue(cli);
},
testTimeout
);
it(
regDefaultValueBoolean2WithoutArgReturnsTrueDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...regDefaultValueBoolean2WithoutArgCommand]
});
await regDefaultValueBoolean2WithoutArgReturnsTrue(cli);
},
testTimeout
);
it(
annoDefaultValueBoolean3WithoutArgReturnsFalseDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...annoDefaultValueBoolean3WithoutArgCommand]
});
await annoDefaultValueBoolean3WithoutArgReturnsFalse(cli);
},
testTimeout
);
it(
regDefaultValueBoolean3WithoutArgReturnsFalseDesc,
async () => {
cli = new Cli({
command: command,
options: [...options, ...regDefaultValueBoolean3WithoutArgCommand]
});
await regDefaultValueBoolean3WithoutArgReturnsFalse(cli);
},
testTimeout
);
});
});