153 lines
4.4 KiB
JavaScript
153 lines
4.4 KiB
JavaScript
import { vi, describe, it, expect } from 'vitest';
|
|
import Execution from './execution';
|
|
import ExecutionStep from './execution-step';
|
|
import Step from './step';
|
|
import Base from './base';
|
|
import UsageData from './usage-data.ee';
|
|
import Telemetry from '../helpers/telemetry';
|
|
import appConfig from '../config/app';
|
|
import { createExecution } from '../../test/factories/execution';
|
|
import { createExecutionStep } from '../../test/factories/execution-step';
|
|
|
|
describe('ExecutionStep model', () => {
|
|
it('tableName should return correct name', () => {
|
|
expect(ExecutionStep.tableName).toBe('execution_steps');
|
|
});
|
|
|
|
it('jsonSchema should have correct validations', () => {
|
|
expect(ExecutionStep.jsonSchema).toMatchSnapshot();
|
|
});
|
|
|
|
it('relationMappings should return correct associations', () => {
|
|
const relationMappings = ExecutionStep.relationMappings();
|
|
|
|
const expectedRelations = {
|
|
execution: {
|
|
relation: Base.BelongsToOneRelation,
|
|
modelClass: Execution,
|
|
join: {
|
|
from: 'execution_steps.execution_id',
|
|
to: 'executions.id',
|
|
},
|
|
},
|
|
step: {
|
|
relation: Base.BelongsToOneRelation,
|
|
modelClass: Step,
|
|
join: {
|
|
from: 'execution_steps.step_id',
|
|
to: 'steps.id',
|
|
},
|
|
},
|
|
};
|
|
|
|
expect(relationMappings).toStrictEqual(expectedRelations);
|
|
});
|
|
|
|
describe('isFailed', () => {
|
|
it('should return true if status is failure', async () => {
|
|
const executionStep = new ExecutionStep();
|
|
executionStep.status = 'failure';
|
|
|
|
expect(executionStep.isFailed).toBe(true);
|
|
});
|
|
|
|
it('should return false if status is not failure', async () => {
|
|
const executionStep = new ExecutionStep();
|
|
executionStep.status = 'success';
|
|
|
|
expect(executionStep.isFailed).toBe(false);
|
|
});
|
|
});
|
|
|
|
describe('isSucceededNonTestRun', () => {
|
|
it('should return false if it has a test run execution', async () => {
|
|
const execution = await createExecution({
|
|
testRun: true,
|
|
});
|
|
|
|
const executionStep = await createExecutionStep({
|
|
executionId: execution.id,
|
|
});
|
|
|
|
expect(await executionStep.isSucceededNonTestRun()).toBe(false);
|
|
});
|
|
|
|
it('should return false if it has a failure status', async () => {
|
|
const executionStep = await createExecutionStep({
|
|
status: 'failure',
|
|
});
|
|
|
|
expect(await executionStep.isSucceededNonTestRun()).toBe(false);
|
|
});
|
|
|
|
it('should return true if it has a succeeded non test run', async () => {
|
|
const executionStep = await createExecutionStep({
|
|
status: 'success',
|
|
});
|
|
|
|
expect(await executionStep.isSucceededNonTestRun()).toBe(true);
|
|
});
|
|
});
|
|
|
|
describe('updateUsageData', () => {
|
|
it('should call usageData.increaseConsumedTaskCountByOne', async () => {
|
|
const executionStep = await createExecutionStep();
|
|
|
|
const increaseConsumedTaskCountByOneSpy = vi.spyOn(
|
|
UsageData.prototype,
|
|
'increaseConsumedTaskCountByOne'
|
|
);
|
|
|
|
await executionStep.updateUsageData();
|
|
|
|
expect(increaseConsumedTaskCountByOneSpy).toHaveBeenCalledOnce();
|
|
});
|
|
});
|
|
|
|
describe('increaseUsageCount', () => {
|
|
it('should call updateUsageData for cloud and succeeded non test run', async () => {
|
|
vi.spyOn(appConfig, 'isCloud', 'get').mockReturnValue(true);
|
|
vi.spyOn(
|
|
ExecutionStep.prototype,
|
|
'isSucceededNonTestRun'
|
|
).mockReturnValue(true);
|
|
|
|
const executionStep = await createExecutionStep();
|
|
|
|
const updateUsageDataSpy = vi.spyOn(
|
|
ExecutionStep.prototype,
|
|
'updateUsageData'
|
|
);
|
|
|
|
await executionStep.increaseUsageCount();
|
|
|
|
expect(updateUsageDataSpy).toHaveBeenCalledOnce();
|
|
});
|
|
});
|
|
|
|
describe('$afterInsert', () => {
|
|
it('should call Telemetry.executionStepCreated', async () => {
|
|
const telemetryExecutionStepCreatedSpy = vi
|
|
.spyOn(Telemetry, 'executionStepCreated')
|
|
.mockImplementation(() => {});
|
|
|
|
const executionStep = await createExecutionStep();
|
|
|
|
expect(telemetryExecutionStepCreatedSpy).toHaveBeenCalledWith(
|
|
executionStep
|
|
);
|
|
});
|
|
|
|
it('should call increaseUsageCount', async () => {
|
|
const increaseUsageCountSpy = vi.spyOn(
|
|
ExecutionStep.prototype,
|
|
'increaseUsageCount'
|
|
);
|
|
|
|
await createExecutionStep();
|
|
|
|
expect(increaseUsageCountSpy).toHaveBeenCalledOnce();
|
|
});
|
|
});
|
|
});
|