LibreDTE

ExamplesWorker extends AbstractWorker
in package
implements ExamplesWorkerInterface

Clase para el catálogo de ejemplos de documentos tributarios.

Los ejemplos provienen de los casos de prueba en YAML utilizados por los tests funcionales del builder de documentos. El archivo de origen mezcla los datos del documento con la clave Test (valores esperados usados por la suite de tests para sus aserciones); acá se separan en example (entrada válida para BuilderWorker::build()) y expected (los valores esperados), sin exponer el vocabulario Test/ExpectedValues propio de la suite de tests.

Algunos ejemplos referencian a otro (ej. una Nota de Crédito que anula una Factura previamente emitida) vía Test.DependsOn en el YAML de origen — una lista de IDs de otros ejemplos. list() entrega los ejemplos en un orden donde toda dependencia aparece antes que quien depende de ella, para que un consumidor que emita los ejemplos secuencialmente (ej. un demo/seed de una aplicación) siempre pueda resolver esas referencias contra documentos que ya emitió.

Attributes
#[Worker]
$name: 'examples'
$component: 'document'
$package: 'billing'

Table of Contents

Interfaces

ExamplesWorkerInterface
Interfaz para el catálogo de ejemplos de documentos tributarios.

Constants

EXTENSION  : mixed = '.yaml'
Extensión de los archivos de ejemplos.

Properties

$fixturesDir  : string

Methods

__construct()  : mixed
get()  : array{id: string, example: array, expected: array}
Entrega los datos de un ejemplo específico.
list()  : array<int, array{id: string, category: string, case: string}>
Entrega el listado de ejemplos disponibles.
sortByDependencies()  : array<string|int, string>
Ordena los IDs de ejemplos de forma que cada uno aparezca después de todos los ejemplos de los que depende (`Test.DependsOn` en el YAML de origen).
toId()  : string
Determina el identificador de un ejemplo a partir de la ruta de su archivo.

Constants

EXTENSION

Extensión de los archivos de ejemplos.

private mixed EXTENSION = '.yaml'

Properties

Methods

__construct()

public __construct(string $fixturesDir) : mixed
Parameters
$fixturesDir : string

get()

Entrega los datos de un ejemplo específico.

public get(string $id) : array{id: string, example: array, expected: array}
Parameters
$id : string

Identificador del ejemplo (ver list()).

Attributes
#[Operation]
$parameters: ['id' => ['example' => '033_factura_afecta/033_001_simple']]
Return values
array{id: string, example: array, expected: array} —

Datos del ejemplo.

list()

Entrega el listado de ejemplos disponibles.

public list() : array<int, array{id: string, category: string, case: string}>
Attributes
#[Operation]
Return values
array<int, array{id: string, category: string, case: string}>

sortByDependencies()

Ordena los IDs de ejemplos de forma que cada uno aparezca después de todos los ejemplos de los que depende (`Test.DependsOn` en el YAML de origen).

private sortByDependencies(array<string, array<string|int, string>> $dependsOnById) : array<string|int, string>

Recorrido DFS post-order sobre el orden de entrada ($dependsOnById, ya determinístico por venir de $files ordenado alfabéticamente): los ejemplos sin dependencias, o cuyas dependencias ya se visitaron, mantienen ese mismo orden entre sí; solo se reordenan los que dependen de otro ejemplo que todavía no aparecía.

Parameters
$dependsOnById : array<string, array<string|int, string>>

IDs de ejemplo mapeados a la lista de IDs de los que dependen (posiblemente vacía).

Tags
throws
ExamplesException

Si un ejemplo depende de un ID inexistente, o si hay una dependencia circular entre ejemplos.

Return values
array<string|int, string> —

IDs en el orden final.

toId()

Determina el identificador de un ejemplo a partir de la ruta de su archivo.

private toId(string $file) : string
Parameters
$file : string

Ruta absoluta del archivo del ejemplo.

Return values
string —

Identificador del ejemplo (ruta relativa sin extensión).

On this page

Search results