wip
This commit is contained in:
@@ -2,6 +2,7 @@ import type { AutomationEnginePort } from '../../../../application/ports/Automat
|
||||
import type { HostedSessionConfig } from '../../../../domain/types/HostedSessionConfig';
|
||||
import { StepId } from '../../../../domain/value-objects/StepId';
|
||||
import type { IBrowserAutomation } from '../../../../application/ports/ScreenAutomationPort';
|
||||
import type { HostedSessionConfig } from '../../../../domain/types/HostedSessionConfig';
|
||||
import type { SessionRepositoryPort } from '../../../../application/ports/SessionRepositoryPort';
|
||||
import { StepTransitionValidator } from '../../../../domain/services/StepTransitionValidator';
|
||||
|
||||
@@ -36,6 +37,34 @@ export class AutomationEngineAdapter implements AutomationEnginePort {
|
||||
private readonly sessionRepository: SessionRepositoryPort
|
||||
) {}
|
||||
|
||||
private toStepConfig(config: HostedSessionConfig): Record<string, unknown> {
|
||||
const baseConfig: Record<string, unknown> = {
|
||||
sessionName: config.sessionName,
|
||||
trackId: config.trackId,
|
||||
carIds: [...config.carIds],
|
||||
};
|
||||
|
||||
if (config.serverName !== undefined) baseConfig.serverName = config.serverName;
|
||||
if (config.password !== undefined) baseConfig.password = config.password;
|
||||
if (config.adminPassword !== undefined) baseConfig.adminPassword = config.adminPassword;
|
||||
if (config.maxDrivers !== undefined) baseConfig.maxDrivers = config.maxDrivers;
|
||||
if (config.carSearch !== undefined) baseConfig.carSearch = config.carSearch;
|
||||
if (config.trackSearch !== undefined) baseConfig.trackSearch = config.trackSearch;
|
||||
if (config.weatherType !== undefined) baseConfig.weatherType = config.weatherType;
|
||||
if (config.timeOfDay !== undefined) baseConfig.timeOfDay = config.timeOfDay;
|
||||
if (config.sessionDuration !== undefined) baseConfig.sessionDuration = config.sessionDuration;
|
||||
if (config.practiceLength !== undefined) baseConfig.practiceLength = config.practiceLength;
|
||||
if (config.qualifyingLength !== undefined) baseConfig.qualifyingLength = config.qualifyingLength;
|
||||
if (config.warmupLength !== undefined) baseConfig.warmupLength = config.warmupLength;
|
||||
if (config.raceLength !== undefined) baseConfig.raceLength = config.raceLength;
|
||||
if (config.startType !== undefined) baseConfig.startType = config.startType;
|
||||
if (config.restarts !== undefined) baseConfig.restarts = config.restarts;
|
||||
if (config.damageModel !== undefined) baseConfig.damageModel = config.damageModel;
|
||||
if (config.trackState !== undefined) baseConfig.trackState = config.trackState;
|
||||
|
||||
return baseConfig;
|
||||
}
|
||||
|
||||
async validateConfiguration(config: HostedSessionConfig): Promise<ValidationResult> {
|
||||
if (!config.sessionName || config.sessionName.trim() === '') {
|
||||
return { isValid: false, error: 'Session name is required' };
|
||||
@@ -89,7 +118,7 @@ export class AutomationEngineAdapter implements AutomationEnginePort {
|
||||
|
||||
// Execute current step using the browser automation
|
||||
if (this.browserAutomation.executeStep) {
|
||||
const result = await this.browserAutomation.executeStep(currentStep, config as unknown as Record<string, unknown>);
|
||||
const result = await this.browserAutomation.executeStep(currentStep, this.toStepConfig(config));
|
||||
if (!result.success) {
|
||||
const stepDescription = StepTransitionValidator.getStepDescription(currentStep);
|
||||
const errorMessage = `Step ${currentStep.value} (${stepDescription}) failed: ${result.error}`;
|
||||
@@ -117,7 +146,7 @@ export class AutomationEngineAdapter implements AutomationEnginePort {
|
||||
if (nextStep.isFinalStep()) {
|
||||
// Execute final step handler
|
||||
if (this.browserAutomation.executeStep) {
|
||||
const result = await this.browserAutomation.executeStep(nextStep, config as unknown as Record<string, unknown>);
|
||||
const result = await this.browserAutomation.executeStep(nextStep, this.toStepConfig(config));
|
||||
if (!result.success) {
|
||||
const stepDescription = StepTransitionValidator.getStepDescription(nextStep);
|
||||
const errorMessage = `Step ${nextStep.value} (${stepDescription}) failed: ${result.error}`;
|
||||
|
||||
@@ -2,6 +2,7 @@ import type { AutomationEnginePort } from '../../../../application/ports/Automat
|
||||
import type { HostedSessionConfig } from '../../../../domain/types/HostedSessionConfig';
|
||||
import { StepId } from '../../../../domain/value-objects/StepId';
|
||||
import type { IBrowserAutomation } from '../../../../application/ports/ScreenAutomationPort';
|
||||
import type { HostedSessionConfig } from '../../../../domain/types/HostedSessionConfig';
|
||||
import type { SessionRepositoryPort } from '../../../../application/ports/SessionRepositoryPort';
|
||||
import { StepTransitionValidator } from '../../../../domain/services/StepTransitionValidator';
|
||||
|
||||
@@ -19,6 +20,34 @@ export class MockAutomationEngineAdapter implements AutomationEnginePort {
|
||||
private readonly sessionRepository: SessionRepositoryPort
|
||||
) {}
|
||||
|
||||
private toStepConfig(config: HostedSessionConfig): Record<string, unknown> {
|
||||
const baseConfig: Record<string, unknown> = {
|
||||
sessionName: config.sessionName,
|
||||
trackId: config.trackId,
|
||||
carIds: [...config.carIds],
|
||||
};
|
||||
|
||||
if (config.serverName !== undefined) baseConfig.serverName = config.serverName;
|
||||
if (config.password !== undefined) baseConfig.password = config.password;
|
||||
if (config.adminPassword !== undefined) baseConfig.adminPassword = config.adminPassword;
|
||||
if (config.maxDrivers !== undefined) baseConfig.maxDrivers = config.maxDrivers;
|
||||
if (config.carSearch !== undefined) baseConfig.carSearch = config.carSearch;
|
||||
if (config.trackSearch !== undefined) baseConfig.trackSearch = config.trackSearch;
|
||||
if (config.weatherType !== undefined) baseConfig.weatherType = config.weatherType;
|
||||
if (config.timeOfDay !== undefined) baseConfig.timeOfDay = config.timeOfDay;
|
||||
if (config.sessionDuration !== undefined) baseConfig.sessionDuration = config.sessionDuration;
|
||||
if (config.practiceLength !== undefined) baseConfig.practiceLength = config.practiceLength;
|
||||
if (config.qualifyingLength !== undefined) baseConfig.qualifyingLength = config.qualifyingLength;
|
||||
if (config.warmupLength !== undefined) baseConfig.warmupLength = config.warmupLength;
|
||||
if (config.raceLength !== undefined) baseConfig.raceLength = config.raceLength;
|
||||
if (config.startType !== undefined) baseConfig.startType = config.startType;
|
||||
if (config.restarts !== undefined) baseConfig.restarts = config.restarts;
|
||||
if (config.damageModel !== undefined) baseConfig.damageModel = config.damageModel;
|
||||
if (config.trackState !== undefined) baseConfig.trackState = config.trackState;
|
||||
|
||||
return baseConfig;
|
||||
}
|
||||
|
||||
async validateConfiguration(config: HostedSessionConfig): Promise<ValidationResult> {
|
||||
if (!config.sessionName || config.sessionName.trim() === '') {
|
||||
return { isValid: false, error: 'Session name is required' };
|
||||
@@ -74,7 +103,7 @@ export class MockAutomationEngineAdapter implements AutomationEnginePort {
|
||||
if (this.browserAutomation.executeStep) {
|
||||
const result = await this.browserAutomation.executeStep(
|
||||
currentStep,
|
||||
config as unknown as Record<string, unknown>,
|
||||
this.toStepConfig(config),
|
||||
);
|
||||
if (!result.success) {
|
||||
const stepDescription = StepTransitionValidator.getStepDescription(currentStep);
|
||||
@@ -105,7 +134,7 @@ export class MockAutomationEngineAdapter implements AutomationEnginePort {
|
||||
if (this.browserAutomation.executeStep) {
|
||||
const result = await this.browserAutomation.executeStep(
|
||||
nextStep,
|
||||
config as unknown as Record<string, unknown>,
|
||||
this.toStepConfig(config),
|
||||
);
|
||||
if (!result.success) {
|
||||
const stepDescription = StepTransitionValidator.getStepDescription(nextStep);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
{
|
||||
"extends": "../../tsconfig.json",
|
||||
"extends": "../../tsconfig.base.json",
|
||||
"compilerOptions": {
|
||||
"rootDir": "..",
|
||||
"outDir": "dist",
|
||||
|
||||
Reference in New Issue
Block a user