Convert-Pheno

 view release on metacpan or  search on metacpan

t/27-operation-registry.t  view on Meta::CPAN

    'registry keeps Dataset-XML plus Define-XML outside HTTP'
);
is_deeply(
    conversion_spec('datasetxml2omop')->{pipeline},
    [ 'datasetxml2bff', 'bff2omop' ],
    'registry defines Dataset-XML to OMOP as a compound conversion'
);

my $cbioportal_to_bff = conversion_spec('cbioportal2bff');
is_deeply(
    $cbioportal_to_bff->{pipeline},
    ['cbioportal2bff'],
    'registry defines cBioPortal as a direct BFF bundle operation'
);
is_deeply(
    $cbioportal_to_bff->{entities}{supported},
    [ 'individuals', 'biosamples', 'datasets', 'cohorts' ],
    'registry exposes the implemented cBioPortal-derived BFF entities'
);
ok(
    !is_http_conversion('cbioportal2bff'),
    'registry keeps filesystem cBioPortal study packages outside HTTP'
);
is_deeply(
    conversion_spec('cbioportal2pxf')->{pipeline},
    [ 'cbioportal2bff', 'bff2pxf' ],
    'registry defines cBioPortal to PXF as a compound conversion'
);

my $fhir_to_bff = conversion_spec('fhir2bff');
is_deeply(
    $fhir_to_bff->{pipeline},
    ['fhir2bff'],
    'registry defines FHIR as a direct BFF bundle operation'
);
ok(
    !$fhir_to_bff->{resources}{sqlite},
    'FHIR to BFF does not open ontology databases'
);
is_deeply(
    $fhir_to_bff->{entities}{supported},
    [ 'individuals', 'biosamples', 'datasets', 'cohorts' ],
    'registry exposes the implemented FHIR-derived BFF entities'
);
ok(
    is_http_conversion('fhir2bff'),
    'registry exposes in-memory FHIR conversion over HTTP'
);
is_deeply(
    conversion_spec('fhir2pxf')->{pipeline},
    [ 'fhir2bff', 'bff2pxf' ],
    'registry defines FHIR to PXF as a compound conversion'
);
is_deeply(
    conversion_spec('fhir2omop')->{pipeline},
    [ 'fhir2bff', 'bff2omop' ],
    'registry defines FHIR to OMOP as a compound conversion'
);

my $omop_to_bff = conversion_spec('omop2bff');
ok( $omop_to_bff->{streaming}, 'registry defines streaming capability' );
is_deeply(
    $omop_to_bff->{entities}{supported},
    [ 'individuals', 'biosamples', 'datasets', 'cohorts' ],
    'registry defines supported Beacon entities'
);
ok( is_http_conversion('pxf2bff'), 'registry exposes in-memory PXF conversion over HTTP' );
ok( !is_http_conversion('redcap2bff'), 'registry keeps file-based REDCap conversion on the CLI' );

my $http_fields = http_request_fields();
ok(
    scalar( grep { $_ eq 'data' } @{ $http_fields->{input} } ),
    'registry defines HTTP-safe input fields'
);
ok(
    !scalar( grep { $_ eq 'in_file' } @{ $http_fields->{input} } ),
    'registry excludes filesystem paths from HTTP input fields'
);

$csv_to_omop->{resources}{sqlite} = 0;
ok(
    conversion_spec('csv2omop')->{resources}{sqlite},
    'registry returns defensive copies of conversion metadata'
);

for my $conversion ( @{ public_conversions() } ) {
    ok(
        Convert::Pheno->can($conversion),
        "registered conversion <$conversion> exists"
    );
}

done_testing;



( run in 0.570 second using v1.01-cache-2.11-cpan-5c0b1e786e0 )