From 73d5a7e531558c98422f0e7d959df0892a4c39b5 Mon Sep 17 00:00:00 2001 From: Randy Stauner Date: Wed, 28 Dec 2011 08:35:00 -0700 Subject: [PATCH 1/3] Rename some rdep test files --- t/server/controller/{ => search}/reverse_dependencies.t | 0 .../{multiple-modules-1.0.json => multiple-modules-1.01.json} | 0 ...ltiple-modules-rdeps.json => multiple-modules-rdeps-2.03.json} | 0 3 files changed, 0 insertions(+), 0 deletions(-) rename t/server/controller/{ => search}/reverse_dependencies.t (100%) rename t/var/fakecpan/configs/{multiple-modules-1.0.json => multiple-modules-1.01.json} (100%) rename t/var/fakecpan/configs/{multiple-modules-rdeps.json => multiple-modules-rdeps-2.03.json} (100%) diff --git a/t/server/controller/reverse_dependencies.t b/t/server/controller/search/reverse_dependencies.t similarity index 100% rename from t/server/controller/reverse_dependencies.t rename to t/server/controller/search/reverse_dependencies.t diff --git a/t/var/fakecpan/configs/multiple-modules-1.0.json b/t/var/fakecpan/configs/multiple-modules-1.01.json similarity index 100% rename from t/var/fakecpan/configs/multiple-modules-1.0.json rename to t/var/fakecpan/configs/multiple-modules-1.01.json diff --git a/t/var/fakecpan/configs/multiple-modules-rdeps.json b/t/var/fakecpan/configs/multiple-modules-rdeps-2.03.json similarity index 100% rename from t/var/fakecpan/configs/multiple-modules-rdeps.json rename to t/var/fakecpan/configs/multiple-modules-rdeps-2.03.json From 6f0cba387e24025f56e3fba0faf42d0b2997b743 Mon Sep 17 00:00:00 2001 From: Randy Stauner Date: Wed, 28 Dec 2011 08:35:24 -0700 Subject: [PATCH 2/3] Index older version of a test dist to ensure we don't get duplicates --- .../configs/multiple-modules-rdeps-0.11.json | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 t/var/fakecpan/configs/multiple-modules-rdeps-0.11.json diff --git a/t/var/fakecpan/configs/multiple-modules-rdeps-0.11.json b/t/var/fakecpan/configs/multiple-modules-rdeps-0.11.json new file mode 100644 index 000000000..9e7ec8caf --- /dev/null +++ b/t/var/fakecpan/configs/multiple-modules-rdeps-0.11.json @@ -0,0 +1,22 @@ +{ + "name": "Multiple-Modules-RDeps", + "abstract": "A dist that depends on Multiple::Modules", + "version": 0.11, + "meta-spec": { + "version": 1.3 + }, + "requires": { + "Multiple::Modules": 0 + }, + "X_Module_Faker": { + "cpan_author": "LOCAL", + "append": [ { + "file": "lib/Multiple/Modules/RDeps.pm", + "content": "use Multiple::Modules;\n1;\n\n=head1 NAME\n\nMultiple::Modules::RDeps - abstract" + }, + { + "file": "t/foo.t", + "content": "use Test::More;" + } ] + } +} From 76dc61aca21669e6ced55715937e48c6fda45021 Mon Sep 17 00:00:00 2001 From: Randy Stauner Date: Fri, 20 Jan 2012 07:43:12 -0700 Subject: [PATCH 3/3] Test getting all rdep releasese vs. only latest --- .../controller/search/reverse_dependencies.t | 81 +++++++++++++------ 1 file changed, 58 insertions(+), 23 deletions(-) diff --git a/t/server/controller/search/reverse_dependencies.t b/t/server/controller/search/reverse_dependencies.t index 95d552b38..5583e8f53 100644 --- a/t/server/controller/search/reverse_dependencies.t +++ b/t/server/controller/search/reverse_dependencies.t @@ -4,42 +4,76 @@ use Test::More; use MetaCPAN::Server::Test; my %tests = ( - '/search/reverse_dependencies/NonExistent' => [404], - '/search/reverse_dependencies/Pod-Pm' => [ 200, [] ], + '/search/reverse_dependencies/NonExistent' => [ 404, [], [] ], + '/search/reverse_dependencies/Pod-Pm' => [ 200, [], [] ], - '/search/reverse_dependencies/Multiple-Modules' => - [ 200, [ sort qw(Multiple-Modules-RDeps Multiple-Modules-RDeps-A) ] ], + # just dist name + '/search/reverse_dependencies/Multiple-Modules' => [ + 200, + [ qw( Multiple-Modules-RDeps-0.11 ) ], + [ qw( Multiple-Modules-RDeps-2.03 Multiple-Modules-RDeps-A-2.03 ) ], + ], - '/search/reverse_dependencies/LOCAL/Multiple-Modules-1.01' => - [ 200, [ sort qw(Multiple-Modules-RDeps Multiple-Modules-RDeps-A) ] ], + # author/name-version + '/search/reverse_dependencies/LOCAL/Multiple-Modules-1.01' => [ + 200, + [ qw( Multiple-Modules-RDeps-0.11 ) ], + [ qw( Multiple-Modules-RDeps-2.03 Multiple-Modules-RDeps-A-2.03 ) ], + ], + # older author/name-version with different modules '/search/reverse_dependencies/LOCAL/Multiple-Modules-0.1' => [ 200, - [ sort qw(Multiple-Modules-RDeps Multiple-Modules-RDeps-Deprecated) ] + [ qw( Multiple-Modules-RDeps-0.11 ) ], + [ qw( Multiple-Modules-RDeps-2.03 Multiple-Modules-RDeps-Deprecated-0.01 ) ], ], ); +sub check_search_results { + my ($name, $res, $code, $rdeps) = @_; + ok( $res, $name ); + is( $res->code, $code, "code $code" ); + is( $res->header('content-type'), + 'application/json; charset=utf-8', + 'Content-type' + ); + ok( my $json = eval { decode_json( $res->content ) }, 'valid json' ); + return unless $code == 200; + + $json = $json->{hits}{hits} if $json->{hits}; + is scalar @$json, @$rdeps, 'got expected number of releases'; + is_deeply + [ sort map { join '-', @{$_->{_source}}{qw(distribution version)} } @$json ], + $rdeps, + 'got expected releases'; +} + test_psgi app, sub { my $cb = shift; + + # verify search results while ( my ( $k, $v ) = each %tests ) { - my ( $code, $rdeps ) = @$v; + my ( $code, $rdep_old, $rdep_latest ) = @$v; - ok( my $res = $cb->( GET $k), "GET $k" ); - is( $res->code, $code, "code $code" ); - is( $res->header('content-type'), - 'application/json; charset=utf-8', - 'Content-type' - ); - ok( my $json = eval { decode_json( $res->content ) }, 'valid json' ); - next unless $code == 200; + # all results + check_search_results("GET $k" => $cb->(GET $k + ), $code, [sort(@$rdep_old, @$rdep_latest)]); - $json = $json->{hits}{hits} if $json->{hits}; - is scalar @$json, @$rdeps, 'got expected number of releases'; - is_deeply - [ sort map { $_->{_source}{distribution} } @$json ], - $rdeps, - 'got expected releases'; + # only releases marked as latest + check_search_results("POST $k" => $cb->(POST $k, + Content => encode_json( + { query => { match_all => {} }, + filter => { + term => { + 'release.status' => 'latest' + }, + }, + } + ) + ), $code, [sort(@$rdep_latest)]); } + + # test passing additional ES parameters { ok( my $res = $cb->( POST "/search/reverse_dependencies/Multiple-Modules", @@ -50,10 +84,11 @@ test_psgi app, sub { "POST" ); ok( my $json = eval { decode_json( $res->content ) }, 'valid json' ); - is( $json->{hits}->{total}, 2, 'total is 3' ); + is( $json->{hits}->{total}, 3, 'total is 3' ); is( scalar @{ $json->{hits}->{hits} }, 1, 'only 1 received' ); } + # test appending filters { ok( my $res = $cb->( POST