DoCli/Objects/CLI/CLIFunctions/Management/Tests/AddTest.psm1
using namespace DoFramework.CLI; using namespace DoFramework.Mappers; using namespace DoFramework.Domain; using namespace DoFramework.Environment; using namespace DoFramework.FileSystem; using namespace DoFramework.Services; using namespace DoFramework.Data; using namespace DoFramework.Validators; using namespace DoFramework.Testing; using namespace System.Collections.Generic; <# .SYNOPSIS Class for adding tests within the DoFramework environment. .DESCRIPTION The AddTest class and its derived classes are designed to add new tests within the DoFramework environment. They handle the setup of parameters, environment checks, and creation of test descriptors. #> class AddTest : CLIFunction[DescriptorManagementDictionaryValidator] { <# .SYNOPSIS Initializes a new instance of the AddTest class. .DESCRIPTION Constructor for the AddTest class, which sets up the base name for the command based on the provided function name. #> AddTest() : base("Add-Test") {} [void] AppendValues([Dictionary[string, object]] $params) {} <# .SYNOPSIS Invokes the process of adding a test. .DESCRIPTION The InvokeInternal method sets up parameters, checks the environment, maps the test descriptor, validates it, and creates the test descriptor if valid. #> [void] InvokeInternal([Dictionary[string, object]] $params, [IServiceContainer] $serviceContainer) { $this.AppendValues($params); [ServiceContainerExtensions]::AddParameters($serviceContainer, $params); [ServiceContainerExtensions]::CheckEnvironment($serviceContainer); [IMapper[string, TestDescriptor]] $mapper = $serviceContainer.GetService[IMapper[string, TestDescriptor]](); [CLIFunctionParameters] $cliParams = $serviceContainer.GetService([CLIFunctionParameters]); if ($cliParams.ParseSwitch("forProcess")) { $params["testType"] = [TestType]::Process; $params["PathPrefix"] = "Processes"; } if ($cliParams.ParseSwitch("forModule")) { $params["testType"] = [TestType]::Module; $params["PathPrefix"] = "Modules"; } [TestDescriptor] $descriptor = $mapper.Map("$($params["PathPrefix"])$([DoFramework.Environment.Environment]::Separator)$($params["name"]).ps1"); $descriptor.TestType = $params["testType"]; [TestDescriptorCreatorValidator] $validator = $serviceContainer.GetService[TestDescriptorCreatorValidator](); [IValidationResult] $result = $validator.Validate($descriptor); if ($result.IsValid) { $serviceContainer.GetService[IDescriptorFileCreator[TestDescriptor]]().Create($descriptor); $serviceContainer.GetService[IDataCreator[TestDescriptor]]().Create($descriptor); } else { [IValidationErrorWriter] $errorWriter = $serviceContainer.GetService[IValidationErrorWriter](); $errorWriter.Write($result); } } } |