Skip to content

Commit 5b768e4

Browse files
authoredFeb 10, 2025··
Merge pull request #5304 from solgenomics/topic/germplasm_acquisition_date
BrAPI: set default germplasm acquisitionDate and use in filtering
2 parents 597e8d8 + ee1e740 commit 5b768e4

File tree

4 files changed

+102
-23
lines changed

4 files changed

+102
-23
lines changed
 

‎lib/CXGN/BrAPI/v1/Germplasm.pm

+9-3
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,9 @@ sub search {
3131
my $synonyms_arrayref = $params->{synonym} || ($params->{synonyms} || ());
3232
my $subtaxa = $params->{germplasmSubTaxa}->[0];
3333
my $match_method = $params->{matchMethod}->[0] || 'exact';
34+
my $acquisitionDate = ref $params->{acquisitionDate} eq 'ARRAY' ? $params->{acquisitionDate}->[0] : $params->{acquisitionDate};
35+
my $minAcquisitionDate = ref $params->{minAcquisitionDate} eq 'ARRAY' ? $params->{minAcquisitionDate}->[0] : $params->{minAcquisitionDate};
36+
my $maxAcquisitionDate = ref $params->{maxAcquisitionDate} eq 'ARRAY' ? $params->{maxAcquisitionDate}->[0] : $params->{maxAcquisitionDate};
3437

3538
if ($match_method ne 'exact' && $match_method ne 'wildcard') {
3639
push @$status, { 'error' => "matchMethod '$match_method' not recognized. Allowed matchMethods: wildcard, exact. Wildcard allows % or * for multiple characters and ? for single characters." };
@@ -89,7 +92,10 @@ sub search {
8992
stockprop_columns_view=>{'accession number'=>1, 'PUI'=>1, 'seed source'=>1, 'institute code'=>1, 'institute name'=>1, 'biological status of accession code'=>1, 'country of origin'=>1, 'type of germplasm storage code'=>1, 'acquisition date'=>1, 'ncbi_taxonomy_id'=>1},
9093
limit=>$limit,
9194
offset=>$offset,
92-
display_pedigree=>1
95+
display_pedigree=>1,
96+
acquisition_date=>$acquisitionDate,
97+
min_acquisition_date=>$minAcquisitionDate,
98+
max_acquisition_date=>$maxAcquisitionDate
9399
});
94100
my ($result, $total_count) = $stock_search->search();
95101

@@ -126,7 +132,7 @@ sub search {
126132
subtaxa=>$_->{subtaxa},
127133
subtaxaAuthority=>$_->{subtaxaAuthority},
128134
donors=>$_->{donors},
129-
acquisitionDate=>$_->{'acquisition date'},
135+
acquisitionDate=>$_->{'acquisition date'} eq '' ? $_->{'create_date'} : $_->{'acquisition date'},
130136
breedingMethodDbId=>undef,
131137
documentationURL=>undef,
132138
germplasmGenus=>$_->{genus},
@@ -198,7 +204,7 @@ sub germplasm_detail {
198204
subtaxa=>$result->[0]->{subtaxa},
199205
subtaxaAuthority=>$result->[0]->{subtaxaAuthority},
200206
donors=>$result->[0]->{donors},
201-
acquisitionDate=>$result->[0]->{'acquisition date'},
207+
acquisitionDate=>$result->[0]->{'acquisition date'} eq '' ? $result->[0]->{'create_date'} : $result->[0]->{'acquisition date'}
202208
);
203209
my $pagination = CXGN::BrAPI::Pagination->pagination_response($total_count,1,0);
204210
return CXGN::BrAPI::JSONResponse->return_success(\%result, $pagination, \@data_files, $status, 'Germplasm detail result constructed');

‎lib/CXGN/BrAPI/v2/Germplasm.pm

+10-4
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,9 @@ sub search {
4343
my $progeny_db_id = $params->{progenyDbId} || ($params->{progenyDbIds} || ());
4444
my $external_reference_id_arrayref = $params->{externalReferenceID} || ($params->{externalReferenceIDs} || ());
4545
my $external_reference_source_arrayref = $params->{externalReferenceSource} || ($params->{externalReferenceSources} || ());
46+
my $acquisitionDate = ref $params->{acquisitionDate} eq 'ARRAY' ? $params->{acquisitionDate}->[0] : $params->{acquisitionDate};
47+
my $minAcquisitionDate = ref $params->{minAcquisitionDate} eq 'ARRAY' ? $params->{minAcquisitionDate}->[0] : $params->{minAcquisitionDate};
48+
my $maxAcquisitionDate = ref $params->{maxAcquisitionDate} eq 'ARRAY' ? $params->{maxAcquisitionDate}->[0] : $params->{maxAcquisitionDate};
4649

4750
if ( $collection || $progeny_db_id || $parent_db_id ){
4851
push @$status, { 'error' => 'The following search parameters are not implemented: collection, parentDbId, progenyDbId' };
@@ -148,7 +151,10 @@ sub search {
148151
external_ref_source_list=>$external_reference_source_arrayref,
149152
limit=>$limit,
150153
offset=>$offset,
151-
display_pedigree=>1
154+
display_pedigree=>1,
155+
acquisition_date=>$acquisitionDate,
156+
min_acquisition_date=>$minAcquisitionDate,
157+
max_acquisition_date=>$maxAcquisitionDate
152158
});
153159
my ($result, $total_count) = $stock_search->search();
154160

@@ -228,7 +234,7 @@ sub search {
228234
#Populating data
229235
push @data, {
230236
accessionNumber=>$_->{'accession number'},
231-
acquisitionDate=>$_->{'acquisition date'} eq '' ? undef : $_->{'acquisition date'},
237+
acquisitionDate=>$_->{'acquisition date'} eq '' ? $_->{'create_date'} : $_->{'acquisition date'},
232238
additionalInfo=>$additional_info,
233239
biologicalStatusOfAccessionCode=>$_->{'biological status of accession code'} || 0,
234240
biologicalStatusOfAccessionDescription=>undef,
@@ -606,7 +612,7 @@ sub germplasm_mcpd {
606612
subtaxon=>$_->{subtaxa},
607613
subtaxonAuthority=>$_->{subtaxaAuthority},
608614
donorInfo=>\@donors,
609-
acquisitionDate=>$_->{'acquisition date'} eq '' ? undef : $_->{'acquisition date'}
615+
acquisitionDate=>$_->{'acquisition date'} eq '' ? $_->{'create_date'} : $_->{'acquisition date'}
610616
);
611617
}
612618
my $total_count = (%result) ? 1 : 0;
@@ -1202,7 +1208,7 @@ sub _simple_search {
12021208

12031209
push @data, {
12041210
accessionNumber=>$_->{'accession number'},
1205-
acquisitionDate=>$_->{'acquisition date'} eq '' ? undef : $_->{'acquisition date'},
1211+
acquisitionDate=>$_->{'acquisition date'} eq '' ? $_->{'create_date'} : $_->{'acquisition date'},
12061212
additionalInfo=> $additional_info,
12071213
biologicalStatusOfAccessionCode=>$_->{'biological status of accession code'} || 0,
12081214
biologicalStatusOfAccessionDescription=>undef,

‎lib/CXGN/Stock/Search.pm

+76-9
Original file line numberDiff line numberDiff line change
@@ -251,6 +251,21 @@ has 'external_ref_source_list' => (
251251
is => 'rw',
252252
);
253253

254+
has 'acquisition_date' => (
255+
isa => 'Str|Int|Undef',
256+
is => 'rw'
257+
);
258+
259+
has 'min_acquisition_date' => (
260+
isa => 'Str|Int|Undef',
261+
is => 'rw'
262+
);
263+
264+
has 'max_acquisition_date' => (
265+
isa => 'Str|Int|Undef',
266+
is => 'rw'
267+
);
268+
254269
sub search {
255270
my $self = shift;
256271
print STDERR "CXGN::Stock::Search search start\n";
@@ -281,6 +296,9 @@ sub search {
281296
my @external_ref_source_array = $self->external_ref_source_list ? @{$self->external_ref_source_list} : ();
282297
my $limit = $self->limit;
283298
my $offset = $self->offset;
299+
my $acquisition_date = $self->acquisition_date;
300+
my $min_acquisition_date = $self->min_acquisition_date;
301+
my $max_acquisition_date = $self->max_acquisition_date;
284302

285303
my $advanced_search = 0; #this is for joining nd_experiment and its related tables
286304

@@ -490,11 +508,57 @@ sub search {
490508
}
491509
if ( !$and_conditions) { $and_conditions = [ { 'me.type_id' => { '!=' => undef } } ] };
492510

511+
my $acq_date_join = $acquisition_date || $min_acquisition_date || $max_acquisition_date ? 'stockprops' : '';
512+
my $acq_date_conditions = $acquisition_date || $min_acquisition_date || $max_acquisition_date ? { "-and" => [] } : {};
513+
if ( $acquisition_date ) {
514+
my $f = {
515+
"-or" => [
516+
{
517+
"to_char(me.create_date, 'YYYYMMDD')" => $acquisition_date
518+
},
519+
{
520+
'stockprops_2.type_id' => SGN::Model::Cvterm->get_cvterm_row($schema, 'acquisition date', 'stock_property')->cvterm_id(),
521+
'stockprops_2.value' => $acquisition_date
522+
}
523+
]
524+
};
525+
push(@{$acq_date_conditions->{'-and'}}, $f)
526+
}
527+
if ( $min_acquisition_date ) {
528+
my $f = {
529+
"-or" => [
530+
{
531+
"to_char(me.create_date, 'YYYYMMDD')" => { '>=', $min_acquisition_date }
532+
},
533+
{
534+
'stockprops_2.type_id' => SGN::Model::Cvterm->get_cvterm_row($schema, 'acquisition date', 'stock_property')->cvterm_id(),
535+
'stockprops_2.value' => { '>=', $min_acquisition_date }
536+
}
537+
]
538+
};
539+
push(@{$acq_date_conditions->{'-and'}}, $f)
540+
}
541+
if ( $max_acquisition_date ) {
542+
my $f = {
543+
"-or" => [
544+
{
545+
"to_char(me.create_date, 'YYYYMMDD')" => { '<=', $max_acquisition_date }
546+
},
547+
{
548+
'stockprops_2.type_id' => SGN::Model::Cvterm->get_cvterm_row($schema, 'acquisition date', 'stock_property')->cvterm_id(),
549+
'stockprops_2.value' => { '<=', $max_acquisition_date }
550+
}
551+
]
552+
};
553+
push(@{$acq_date_conditions->{'-and'}}, $f)
554+
}
555+
493556
#$schema->storage->debug(1);
494557
my $search_query = {
495558
-and => [
496559
$or_conditions,
497560
$and_conditions,
561+
$acq_date_conditions
498562
],
499563
};
500564
if (!$self->include_obsolete) {
@@ -528,14 +592,15 @@ sub search {
528592
print STDERR "**stock search q " . Dumper($search_query) ."\n";
529593
print STDERR "***stock_join= " . Dumper($stock_join) ." \n\n";
530594
my $rs = $schema->resultset("Stock::Stock")->search(
531-
$search_query,
532-
{
533-
join => ['type', 'organism', 'stockprops', $stock_join],
534-
'+select' => [ 'type.name' , 'organism.species' , 'organism.common_name', 'organism.genus'],
535-
'+as' => [ 'cvterm_name' , 'species', 'common_name', 'genus'],
536-
order_by => 'me.name',
537-
distinct=>1
538-
});
595+
$search_query,
596+
{
597+
join => ['type', 'organism', 'stockprops', $stock_join, $acq_date_join],
598+
'+select' => [ 'type.name' , 'organism.species' , 'organism.common_name', 'organism.genus'],
599+
'+as' => [ 'cvterm_name' , 'species', 'common_name', 'genus'],
600+
order_by => 'me.name',
601+
distinct=>1
602+
}
603+
);
539604

540605
my $records_total = $rs->count();
541606
print STDERR "total records: ".$records_total;
@@ -625,7 +690,7 @@ ORDER BY organism_id ASC;";
625690
# Get additional stock properties (pedigree, synonyms, donor info)
626691
my $stock_query = "SELECT stock.stock_id, stock.uniquename, stock.organism_id,
627692
mother.uniquename AS female_parent, father.uniquename AS male_parent, m_rel.value AS cross_type,
628-
props.stock_synonym, props.donor, props.\"donor institute\", props.\"donor PUI\", family.uniquename AS family_name
693+
props.stock_synonym, props.donor, props.\"donor institute\", props.\"donor PUI\", family.uniquename AS family_name, to_char(stock.create_date, 'YYYYMMDD')
629694
FROM stock
630695
LEFT JOIN stock_relationship m_rel ON (stock.stock_id = m_rel.object_id AND m_rel.type_id = (SELECT cvterm_id FROM cvterm WHERE name = 'female_parent'))
631696
LEFT JOIN stock mother ON (m_rel.subject_id = mother.stock_id)
@@ -653,6 +718,7 @@ ORDER BY organism_id ASC;";
653718
my @donor_institutes = keys %{$donor_inst_json};
654719
my @donor_puis = keys %{$donor_pui_json};
655720
my $population_name = $r[10] || undef;
721+
my $create_date = $r[11];
656722

657723
# add stock props to the result hash
658724
$result_hash{$stock_id}{pedigree} = $self->display_pedigree ? $mother . '/' . $father : 'DISABLED';
@@ -676,6 +742,7 @@ ORDER BY organism_id ASC;";
676742
$result_hash{$stock_id}{subtaxaAuthority} = defined($organism_props{$organism_id}) ? $organism_props{$organism_id}->{'subtaxa authority'} : undef;
677743

678744
$result_hash{$stock_id}{population_name} = $population_name;
745+
$result_hash{$stock_id}{create_date} = $create_date;
679746
}
680747

681748
if ($self->stockprop_columns_view && scalar(keys %{$self->stockprop_columns_view})>0 && scalar(@result_stock_ids)>0){

‎t/unit_mech/AJAX/_BrAPI_v1.t

+7-7
Original file line numberDiff line numberDiff line change
@@ -61,27 +61,27 @@ is_deeply($response, {'metadata' => {'status' => [{'messageType' => 'INFO','mess
6161
$mech->get_ok('http://localhost:3010/brapi/v1/germplasm-search?pageSize=2&page=3&access_token='.$access_token);
6262
$response = decode_json $mech->content;
6363
#print STDERR Dumper $response;
64-
is_deeply($response, {'result' => {'data' => [{'countryOfOriginCode' => '','pedigree' => 'test_accession4/test_accession5','germplasmGenus' => 'Lycopersicon','breedingMethodDbId' =>''||undef,'germplasmPUI' => '','subtaxa' => undef,'germplasmSeedSource' => '','germplasmName' => 'new_test_crossP002','typeOfGermplasmStorageCode' => [],'acquisitionDate' => '','species' => 'Solanum lycopersicum','defaultDisplayName' => 'new_test_crossP002','germplasmDbId' => 38847,'speciesAuthority' => undef,'synonyms' => [],'commonCropName' => 'tomato','donors' => [],'instituteCode' => '','genus' => 'Lycopersicon','taxonIds' => [],'instituteName' => '','subtaxaAuthority' => undef,'biologicalStatusOfAccessionCode' => '0','accessionNumber' => '','documentationURL' =>undef,'seedSource' => '','germplasmSpecies' => 'Solanum lycopersicum'},{'typeOfGermplasmStorageCode' => [],'germplasmName' => 'new_test_crossP003','germplasmSeedSource' => '','subtaxa' => undef,'countryOfOriginCode' => '','germplasmGenus' => 'Lycopersicon','breedingMethodDbId' =>''||undef,'germplasmPUI' => '','pedigree' => 'test_accession4/test_accession5','speciesAuthority' => undef,'defaultDisplayName' => 'new_test_crossP003','germplasmDbId' => 38848,'species' => 'Solanum lycopersicum','acquisitionDate' => '','donors' => [],'instituteCode' => '','synonyms' => [],'commonCropName' => 'tomato','accessionNumber' => '','biologicalStatusOfAccessionCode' => '0','subtaxaAuthority' => undef,'instituteName' => '','taxonIds' => [],'genus' => 'Lycopersicon','documentationURL' =>undef,'seedSource' => '','germplasmSpecies' => 'Solanum lycopersicum'}]},'metadata' => {'datafiles' => [],'pagination' => {'totalPages' => 240,'pageSize' => 2,'totalCount' => 479,'currentPage' => 3},'status' => [{'messageType' => 'INFO','message' => 'BrAPI base call found with page=3, pageSize=2'},{'messageType' => 'INFO','message' => 'Loading CXGN::BrAPI::v1::Germplasm'},{'messageType' => 'INFO','message' => 'Germplasm-search result constructed'}]}}, 'germplasm-search');
64+
is_deeply($response, {'result' => {'data' => [{'countryOfOriginCode' => '','pedigree' => 'test_accession4/test_accession5','germplasmGenus' => 'Lycopersicon','breedingMethodDbId' =>''||undef,'germplasmPUI' => '','subtaxa' => undef,'germplasmSeedSource' => '','germplasmName' => 'new_test_crossP002','typeOfGermplasmStorageCode' => [],'acquisitionDate' => undef,'species' => 'Solanum lycopersicum','defaultDisplayName' => 'new_test_crossP002','germplasmDbId' => 38847,'speciesAuthority' => undef,'synonyms' => [],'commonCropName' => 'tomato','donors' => [],'instituteCode' => '','genus' => 'Lycopersicon','taxonIds' => [],'instituteName' => '','subtaxaAuthority' => undef,'biologicalStatusOfAccessionCode' => '0','accessionNumber' => '','documentationURL' =>undef,'seedSource' => '','germplasmSpecies' => 'Solanum lycopersicum'},{'typeOfGermplasmStorageCode' => [],'germplasmName' => 'new_test_crossP003','germplasmSeedSource' => '','subtaxa' => undef,'countryOfOriginCode' => '','germplasmGenus' => 'Lycopersicon','breedingMethodDbId' =>''||undef,'germplasmPUI' => '','pedigree' => 'test_accession4/test_accession5','speciesAuthority' => undef,'defaultDisplayName' => 'new_test_crossP003','germplasmDbId' => 38848,'species' => 'Solanum lycopersicum','acquisitionDate' => undef,'donors' => [],'instituteCode' => '','synonyms' => [],'commonCropName' => 'tomato','accessionNumber' => '','biologicalStatusOfAccessionCode' => '0','subtaxaAuthority' => undef,'instituteName' => '','taxonIds' => [],'genus' => 'Lycopersicon','documentationURL' =>undef,'seedSource' => '','germplasmSpecies' => 'Solanum lycopersicum'}]},'metadata' => {'datafiles' => [],'pagination' => {'totalPages' => 240,'pageSize' => 2,'totalCount' => 479,'currentPage' => 3},'status' => [{'messageType' => 'INFO','message' => 'BrAPI base call found with page=3, pageSize=2'},{'messageType' => 'INFO','message' => 'Loading CXGN::BrAPI::v1::Germplasm'},{'messageType' => 'INFO','message' => 'Germplasm-search result constructed'}]}}, 'germplasm-search');
6565

6666
$mech->get_ok('http://localhost:3010/brapi/v1/germplasm-search?pageSize=2&page=5&access_token='.$access_token);
6767
$response = decode_json $mech->content;
6868
#print STDERR Dumper $response;
69-
is_deeply($response, {'result' => {'data' => [{'pedigree' => 'test_accession4/test_accession5','countryOfOriginCode' => '','germplasmPUI' => '','subtaxa' => undef,'germplasmSeedSource' => '','germplasmName' => 'new_test_crossP006','typeOfGermplasmStorageCode' => [],'acquisitionDate' => '','species' => 'Solanum lycopersicum','defaultDisplayName' => 'new_test_crossP006','germplasmDbId' => 38851,'speciesAuthority' => undef,'synonyms' => [],'commonCropName' => 'tomato','instituteCode' => '','donors' => [],'genus' => 'Lycopersicon','taxonIds' => [],'instituteName' => '','subtaxaAuthority' => undef,'biologicalStatusOfAccessionCode' => '0','accessionNumber' => '','germplasmSpecies' => 'Solanum lycopersicum','breedingMethodDbId' =>undef,'documentationURL' =>undef,'seedSource' => '','germplasmGenus' => 'Lycopersicon'},{'subtaxa' => undef,'countryOfOriginCode' => '','pedigree' => 'test_accession4/test_accession5','germplasmPUI' => '','typeOfGermplasmStorageCode' => [],'germplasmSeedSource' => '','germplasmName' => 'new_test_crossP007','species' => 'Solanum lycopersicum','germplasmDbId' => 38852,'defaultDisplayName' => 'new_test_crossP007','acquisitionDate' => '','speciesAuthority' => undef,'donors' => [],'instituteCode' => '','commonCropName' => 'tomato','synonyms' => [],'subtaxaAuthority' => undef,'genus' => 'Lycopersicon','taxonIds' => [],'instituteName' => '','accessionNumber' => '','biologicalStatusOfAccessionCode' => '0','germplasmSpecies' => 'Solanum lycopersicum','breedingMethodDbId' =>undef,'documentationURL' =>undef,'seedSource' => '','germplasmGenus' => 'Lycopersicon'}]},'metadata' => {'pagination' => {'currentPage' => 5,'totalCount' => 479,'pageSize' => 2,'totalPages' => 240},'datafiles' => [],'status' => [{'messageType' => 'INFO','message' => 'BrAPI base call found with page=5, pageSize=2'},{'messageType' => 'INFO','message' => 'Loading CXGN::BrAPI::v1::Germplasm'},{'messageType' => 'INFO','message' => 'Germplasm-search result constructed'}]}}, 'germplasm-search');
69+
is_deeply($response, {'result' => {'data' => [{'pedigree' => 'test_accession4/test_accession5','countryOfOriginCode' => '','germplasmPUI' => '','subtaxa' => undef,'germplasmSeedSource' => '','germplasmName' => 'new_test_crossP006','typeOfGermplasmStorageCode' => [],'acquisitionDate' => undef,'species' => 'Solanum lycopersicum','defaultDisplayName' => 'new_test_crossP006','germplasmDbId' => 38851,'speciesAuthority' => undef,'synonyms' => [],'commonCropName' => 'tomato','instituteCode' => '','donors' => [],'genus' => 'Lycopersicon','taxonIds' => [],'instituteName' => '','subtaxaAuthority' => undef,'biologicalStatusOfAccessionCode' => '0','accessionNumber' => '','germplasmSpecies' => 'Solanum lycopersicum','breedingMethodDbId' =>undef,'documentationURL' =>undef,'seedSource' => '','germplasmGenus' => 'Lycopersicon'},{'subtaxa' => undef,'countryOfOriginCode' => '','pedigree' => 'test_accession4/test_accession5','germplasmPUI' => '','typeOfGermplasmStorageCode' => [],'germplasmSeedSource' => '','germplasmName' => 'new_test_crossP007','species' => 'Solanum lycopersicum','germplasmDbId' => 38852,'defaultDisplayName' => 'new_test_crossP007','acquisitionDate' => undef,'speciesAuthority' => undef,'donors' => [],'instituteCode' => '','commonCropName' => 'tomato','synonyms' => [],'subtaxaAuthority' => undef,'genus' => 'Lycopersicon','taxonIds' => [],'instituteName' => '','accessionNumber' => '','biologicalStatusOfAccessionCode' => '0','germplasmSpecies' => 'Solanum lycopersicum','breedingMethodDbId' =>undef,'documentationURL' =>undef,'seedSource' => '','germplasmGenus' => 'Lycopersicon'}]},'metadata' => {'pagination' => {'currentPage' => 5,'totalCount' => 479,'pageSize' => 2,'totalPages' => 240},'datafiles' => [],'status' => [{'messageType' => 'INFO','message' => 'BrAPI base call found with page=5, pageSize=2'},{'messageType' => 'INFO','message' => 'Loading CXGN::BrAPI::v1::Germplasm'},{'messageType' => 'INFO','message' => 'Germplasm-search result constructed'}]}}, 'germplasm-search');
7070

7171
$mech->get_ok('http://localhost:3010/brapi/v1/germplasm-search?pageSize=2&page=0&germplasmDbId=38849&access_token='.$access_token);
7272
$response = decode_json $mech->content;
7373
#print STDERR Dumper $response;
74-
is_deeply($response, {'result' => {'data' => [{'subtaxa' => undef,'germplasmPUI' => '','pedigree' => 'test_accession4/test_accession5','countryOfOriginCode' => '','typeOfGermplasmStorageCode' => [],'germplasmName' => 'new_test_crossP004','germplasmSeedSource' => '','germplasmDbId' => 38849,'defaultDisplayName' => 'new_test_crossP004','species' => 'Solanum lycopersicum','acquisitionDate' => '','speciesAuthority' => undef,'donors' => [],'instituteCode' => '','commonCropName' => 'tomato','synonyms' => [],'subtaxaAuthority' => undef,'instituteName' => '','taxonIds' => [],'genus' => 'Lycopersicon','accessionNumber' => '','biologicalStatusOfAccessionCode' => '0','breedingMethodDbId' =>undef,'documentationURL' =>undef,'seedSource' => '','germplasmGenus' => 'Lycopersicon','germplasmSpecies' => 'Solanum lycopersicum'}]},'metadata' => {'pagination' => {'totalPages' => 1,'pageSize' => 2,'currentPage' => 0,'totalCount' => 1},'datafiles' => [],'status' => [{'message' => 'BrAPI base call found with page=0, pageSize=2','messageType' => 'INFO'},{'messageType' => 'INFO','message' => 'Loading CXGN::BrAPI::v1::Germplasm'},{'messageType' => 'INFO','message' => 'Germplasm-search result constructed'}]}}, 'germplasm-search');
74+
is_deeply($response, {'result' => {'data' => [{'subtaxa' => undef,'germplasmPUI' => '','pedigree' => 'test_accession4/test_accession5','countryOfOriginCode' => '','typeOfGermplasmStorageCode' => [],'germplasmName' => 'new_test_crossP004','germplasmSeedSource' => '','germplasmDbId' => 38849,'defaultDisplayName' => 'new_test_crossP004','species' => 'Solanum lycopersicum','acquisitionDate' => undef,'speciesAuthority' => undef,'donors' => [],'instituteCode' => '','commonCropName' => 'tomato','synonyms' => [],'subtaxaAuthority' => undef,'instituteName' => '','taxonIds' => [],'genus' => 'Lycopersicon','accessionNumber' => '','biologicalStatusOfAccessionCode' => '0','breedingMethodDbId' =>undef,'documentationURL' =>undef,'seedSource' => '','germplasmGenus' => 'Lycopersicon','germplasmSpecies' => 'Solanum lycopersicum'}]},'metadata' => {'pagination' => {'totalPages' => 1,'pageSize' => 2,'currentPage' => 0,'totalCount' => 1},'datafiles' => [],'status' => [{'message' => 'BrAPI base call found with page=0, pageSize=2','messageType' => 'INFO'},{'messageType' => 'INFO','message' => 'Loading CXGN::BrAPI::v1::Germplasm'},{'messageType' => 'INFO','message' => 'Germplasm-search result constructed'}]}}, 'germplasm-search');
7575

7676
$mech->get_ok('http://localhost:3010/brapi/v1/germplasm-search?pageSize=2&page=4&germplasmName=te%&matchMethod=wildcard&access_token='.$access_token);
7777
$response = decode_json $mech->content;
7878
#print STDERR Dumper $response;
79-
is_deeply($response, {'metadata' => {'datafiles' => [],'pagination' => {'currentPage' => 4,'totalCount' => 25,'pageSize' => 2,'totalPages' => 13},'status' => [{'message' => 'BrAPI base call found with page=4, pageSize=2','messageType' => 'INFO'},{'messageType' => 'INFO','message' => 'Loading CXGN::BrAPI::v1::Germplasm'},{'message' => 'Germplasm-search result constructed','messageType' => 'INFO'}]},'result' => {'data' => [{'donors' => [],'instituteCode' => '','commonCropName' => 'tomato','synonyms' => [],'accessionNumber' => '','biologicalStatusOfAccessionCode' => '0','subtaxaAuthority' => undef,'genus' => 'Lycopersicon','taxonIds' => [],'instituteName' => '','typeOfGermplasmStorageCode' => [],'germplasmSeedSource' => '','germplasmName' => 'new_test_crossP009','subtaxa' => undef,'germplasmPUI' => '','countryOfOriginCode' => '','pedigree' => 'test_accession4/test_accession5','speciesAuthority' => undef,'species' => 'Solanum lycopersicum','germplasmDbId' => 38854,'defaultDisplayName' => 'new_test_crossP009','acquisitionDate' => '','breedingMethodDbId' =>undef,'documentationURL' =>undef,'seedSource' => '','germplasmGenus' => 'Lycopersicon','germplasmSpecies' => 'Solanum lycopersicum'},{'accessionNumber' => '','biologicalStatusOfAccessionCode' => '0','subtaxaAuthority' => undef,'genus' => 'Lycopersicon','taxonIds' => [],'instituteName' => '','instituteCode' => '','donors' => [],'commonCropName' => 'tomato','synonyms' => [],'speciesAuthority' => undef,'defaultDisplayName' => 'new_test_crossP010','germplasmDbId' => 38855,'species' => 'Solanum lycopersicum','acquisitionDate' => '','typeOfGermplasmStorageCode' => [],'germplasmSeedSource' => '','germplasmName' => 'new_test_crossP010','subtaxa' => undef,'pedigree' => 'test_accession4/test_accession5','germplasmPUI' => '','countryOfOriginCode' => '','breedingMethodDbId' =>undef,'documentationURL' =>undef,'seedSource' => '','germplasmGenus' => 'Lycopersicon','germplasmSpecies' => 'Solanum lycopersicum'}]}}, 'germplasm-search');
79+
is_deeply($response, {'metadata' => {'datafiles' => [],'pagination' => {'currentPage' => 4,'totalCount' => 25,'pageSize' => 2,'totalPages' => 13},'status' => [{'message' => 'BrAPI base call found with page=4, pageSize=2','messageType' => 'INFO'},{'messageType' => 'INFO','message' => 'Loading CXGN::BrAPI::v1::Germplasm'},{'message' => 'Germplasm-search result constructed','messageType' => 'INFO'}]},'result' => {'data' => [{'donors' => [],'instituteCode' => '','commonCropName' => 'tomato','synonyms' => [],'accessionNumber' => '','biologicalStatusOfAccessionCode' => '0','subtaxaAuthority' => undef,'genus' => 'Lycopersicon','taxonIds' => [],'instituteName' => '','typeOfGermplasmStorageCode' => [],'germplasmSeedSource' => '','germplasmName' => 'new_test_crossP009','subtaxa' => undef,'germplasmPUI' => '','countryOfOriginCode' => '','pedigree' => 'test_accession4/test_accession5','speciesAuthority' => undef,'species' => 'Solanum lycopersicum','germplasmDbId' => 38854,'defaultDisplayName' => 'new_test_crossP009','acquisitionDate' => undef,'breedingMethodDbId' =>undef,'documentationURL' =>undef,'seedSource' => '','germplasmGenus' => 'Lycopersicon','germplasmSpecies' => 'Solanum lycopersicum'},{'accessionNumber' => '','biologicalStatusOfAccessionCode' => '0','subtaxaAuthority' => undef,'genus' => 'Lycopersicon','taxonIds' => [],'instituteName' => '','instituteCode' => '','donors' => [],'commonCropName' => 'tomato','synonyms' => [],'speciesAuthority' => undef,'defaultDisplayName' => 'new_test_crossP010','germplasmDbId' => 38855,'species' => 'Solanum lycopersicum','acquisitionDate' => undef,'typeOfGermplasmStorageCode' => [],'germplasmSeedSource' => '','germplasmName' => 'new_test_crossP010','subtaxa' => undef,'pedigree' => 'test_accession4/test_accession5','germplasmPUI' => '','countryOfOriginCode' => '','breedingMethodDbId' =>undef,'documentationURL' =>undef,'seedSource' => '','germplasmGenus' => 'Lycopersicon','germplasmSpecies' => 'Solanum lycopersicum'}]}}, 'germplasm-search');
8080

8181
$mech->post_ok('http://localhost:3010/brapi/v1/germplasm-search', ['access_token'=>$access_token, 'pageSize'=>'1', 'page'=>'5', 'germplasmNames'=>['t%'], 'matchMethod'=>'wildcard'] );
8282
$response = decode_json $mech->content;
8383
#print STDERR Dumper $response;
84-
is_deeply($response, {'metadata' => {'status' => [{'message' => 'BrAPI base call found with page=5, pageSize=1','messageType' => 'INFO'},{'messageType' => 'INFO','message' => 'Loading CXGN::BrAPI::v1::Germplasm'},{'message' => 'Germplasm-search result constructed','messageType' => 'INFO'}],'datafiles' => [],'pagination' => {'totalCount' => 31,'currentPage' => 5,'pageSize' => 1,'totalPages' => 31}},'result' => {'data' => [{'commonCropName' => 'tomato','synonyms' => [],'donors' => [],'instituteCode' => '','genus' => 'Lycopersicon','instituteName' => '','taxonIds' => [],'subtaxaAuthority' => undef,'biologicalStatusOfAccessionCode' => '0','accessionNumber' => '','countryOfOriginCode' => '','pedigree' => 'test_accession4/test_accession5','germplasmPUI' => '','subtaxa' => undef,'germplasmSeedSource' => '','germplasmName' => 'new_test_crossP002','typeOfGermplasmStorageCode' => [],'acquisitionDate' => '','species' => 'Solanum lycopersicum','defaultDisplayName' => 'new_test_crossP002','germplasmDbId' => 38847,'speciesAuthority' => undef,'breedingMethodDbId' =>undef,'documentationURL' =>undef,'seedSource' => '','germplasmGenus' => 'Lycopersicon','germplasmSpecies' => 'Solanum lycopersicum'}]}}, 'germplasm-search post');
84+
is_deeply($response, {'metadata' => {'status' => [{'message' => 'BrAPI base call found with page=5, pageSize=1','messageType' => 'INFO'},{'messageType' => 'INFO','message' => 'Loading CXGN::BrAPI::v1::Germplasm'},{'message' => 'Germplasm-search result constructed','messageType' => 'INFO'}],'datafiles' => [],'pagination' => {'totalCount' => 31,'currentPage' => 5,'pageSize' => 1,'totalPages' => 31}},'result' => {'data' => [{'commonCropName' => 'tomato','synonyms' => [],'donors' => [],'instituteCode' => '','genus' => 'Lycopersicon','instituteName' => '','taxonIds' => [],'subtaxaAuthority' => undef,'biologicalStatusOfAccessionCode' => '0','accessionNumber' => '','countryOfOriginCode' => '','pedigree' => 'test_accession4/test_accession5','germplasmPUI' => '','subtaxa' => undef,'germplasmSeedSource' => '','germplasmName' => 'new_test_crossP002','typeOfGermplasmStorageCode' => [],'acquisitionDate' => undef,'species' => 'Solanum lycopersicum','defaultDisplayName' => 'new_test_crossP002','germplasmDbId' => 38847,'speciesAuthority' => undef,'breedingMethodDbId' =>undef,'documentationURL' =>undef,'seedSource' => '','germplasmGenus' => 'Lycopersicon','germplasmSpecies' => 'Solanum lycopersicum'}]}}, 'germplasm-search post');
8585

8686
$mech->post_ok('http://localhost:3010/brapi/v1/search/germplasm', ['access_token'=>$access_token, 'pageSize'=>'1', 'page'=>'5', 'germplasmNames'=>['t%'], 'matchMethod'=>'wildcard'] );
8787
$response = decode_json $mech->content;
@@ -90,12 +90,12 @@ $searchId = $response->{result} ->{searchResultsDbId};
9090
$mech->get_ok('http://localhost:3010/brapi/v1/search/germplasm/'. $searchId . '?access_token='.$access_token );
9191
$response = decode_json $mech->content;
9292
#print STDERR Dumper $response;
93-
is_deeply($response, {'metadata' => {'status' => [{'message' => 'BrAPI base call found with page=5, pageSize=1','messageType' => 'INFO'},{'messageType' => 'INFO','message' => 'Loading CXGN::BrAPI::v1::Germplasm'},{'message' => 'Germplasm-search result constructed','messageType' => 'INFO'}],'datafiles' => [],'pagination' => {'totalCount' => 31,'currentPage' => 5,'pageSize' => 1,'totalPages' => 31}},'result' => {'data' => [{'commonCropName' => 'tomato','synonyms' => [],'donors' => [],'instituteCode' => '','genus' => 'Lycopersicon','instituteName' => '','taxonIds' => [],'subtaxaAuthority' => undef,'biologicalStatusOfAccessionCode' => '0','accessionNumber' => '','countryOfOriginCode' => '','pedigree' => 'test_accession4/test_accession5','germplasmPUI' => '','subtaxa' => undef,'germplasmSeedSource' => '','germplasmName' => 'new_test_crossP002','typeOfGermplasmStorageCode' => [],'acquisitionDate' => '','species' => 'Solanum lycopersicum','defaultDisplayName' => 'new_test_crossP002','germplasmDbId' => 38847,'speciesAuthority' => undef,'breedingMethodDbId' =>undef,'documentationURL' =>undef,'seedSource' => '','germplasmGenus' => 'Lycopersicon','germplasmSpecies' => 'Solanum lycopersicum'}]}}, 'germplasm-search post');
93+
is_deeply($response, {'metadata' => {'status' => [{'message' => 'BrAPI base call found with page=5, pageSize=1','messageType' => 'INFO'},{'messageType' => 'INFO','message' => 'Loading CXGN::BrAPI::v1::Germplasm'},{'message' => 'Germplasm-search result constructed','messageType' => 'INFO'}],'datafiles' => [],'pagination' => {'totalCount' => 31,'currentPage' => 5,'pageSize' => 1,'totalPages' => 31}},'result' => {'data' => [{'commonCropName' => 'tomato','synonyms' => [],'donors' => [],'instituteCode' => '','genus' => 'Lycopersicon','instituteName' => '','taxonIds' => [],'subtaxaAuthority' => undef,'biologicalStatusOfAccessionCode' => '0','accessionNumber' => '','countryOfOriginCode' => '','pedigree' => 'test_accession4/test_accession5','germplasmPUI' => '','subtaxa' => undef,'germplasmSeedSource' => '','germplasmName' => 'new_test_crossP002','typeOfGermplasmStorageCode' => [],'acquisitionDate' => undef,'species' => 'Solanum lycopersicum','defaultDisplayName' => 'new_test_crossP002','germplasmDbId' => 38847,'speciesAuthority' => undef,'breedingMethodDbId' =>undef,'documentationURL' =>undef,'seedSource' => '','germplasmGenus' => 'Lycopersicon','germplasmSpecies' => 'Solanum lycopersicum'}]}}, 'germplasm-search post');
9494

9595
$mech->get_ok('http://localhost:3010/brapi/v1/germplasm/38876?access_token='.$access_token);
9696
$response = decode_json $mech->content;
9797
#print STDERR Dumper $response;
98-
is_deeply($response, {'metadata' => {'datafiles' => [],'pagination' => {'totalPages' => 1,'pageSize' => 1,'totalCount' => 1,'currentPage' => 0},'status' => [{'message' => 'BrAPI base call found with page=0, pageSize=10','messageType' => 'INFO'},{'message' => 'Loading CXGN::BrAPI::v1::Germplasm','messageType' => 'INFO'},{'message' => 'Germplasm detail result constructed','messageType' => 'INFO'}]},'result' => {'instituteCode' => '','donors' => [],'commonCropName' => 'tomato','synonyms' => [],'accessionNumber' => '','biologicalStatusOfAccessionCode' => '0','subtaxaAuthority' => undef,'instituteName' => '','taxonIds' => [],'genus' => 'Lycopersicon','typeOfGermplasmStorageCode' => [],'germplasmName' => 'test5P004','germplasmSeedSource' => '','subtaxa' => undef,'germplasmPUI' => '','countryOfOriginCode' => '','pedigree' => 'test_accession4/test_accession5','speciesAuthority' => undef,'defaultDisplayName' => 'test5P004','species' => 'Solanum lycopersicum','germplasmDbId' => 38876,'acquisitionDate' => ''}}, 'germplasm detail');
98+
is_deeply($response, {'metadata' => {'datafiles' => [],'pagination' => {'totalPages' => 1,'pageSize' => 1,'totalCount' => 1,'currentPage' => 0},'status' => [{'message' => 'BrAPI base call found with page=0, pageSize=10','messageType' => 'INFO'},{'message' => 'Loading CXGN::BrAPI::v1::Germplasm','messageType' => 'INFO'},{'message' => 'Germplasm detail result constructed','messageType' => 'INFO'}]},'result' => {'instituteCode' => '','donors' => [],'commonCropName' => 'tomato','synonyms' => [],'accessionNumber' => '','biologicalStatusOfAccessionCode' => '0','subtaxaAuthority' => undef,'instituteName' => '','taxonIds' => [],'genus' => 'Lycopersicon','typeOfGermplasmStorageCode' => [],'germplasmName' => 'test5P004','germplasmSeedSource' => '','subtaxa' => undef,'germplasmPUI' => '','countryOfOriginCode' => '','pedigree' => 'test_accession4/test_accession5','speciesAuthority' => undef,'defaultDisplayName' => 'test5P004','species' => 'Solanum lycopersicum','germplasmDbId' => 38876,'acquisitionDate' => undef}}, 'germplasm detail');
9999

100100
$mech->get_ok('http://localhost:3010/brapi/v1/germplasm/38876/pedigree?access_token='.$access_token);
101101
$response = decode_json $mech->content;

0 commit comments

Comments
 (0)
Please sign in to comment.