Changeset 17


Ignore:
Timestamp:
11/22/10 12:54:02 (14 years ago)
Author:
nanardon
Message:
  • start adding test
Location:
server/trunk/web
Files:
2 added
13 edited

Legend:

Unmodified
Added
Removed
  • server/trunk/web/lib/Sophie/Controller/Distrib.pm

    r16 r17  
    3737    $rs = $rs->search(name => $distribution)->search_related('Release'); 
    3838    if (!$release) { 
    39         @{$c->stash->{xmlrpc}} = map { $_->version } $rs->all; 
    40         return $c->stash->{xmlrpc}; 
     39        return $c->stash->{xmlrpc} = [ map { $_->version } $rs->all ]; 
     40         
    4141    } 
    4242    $rs = $rs->search(version => $release)->search_related('Arch'); 
    4343    if (!$arch) { 
    44         @{$c->stash->{xmlrpc}} = map { $_->arch } $rs->all; 
    45         return $c->stash->{xmlrpc}; 
     44        return $c->stash->{xmlrpc} = [ map { $_->arch } $rs->all ]; 
    4645    } 
    4746    $rs = $rs->search(arch => $arch)->search_related('Medias'); 
    48     @{$c->stash->{xmlrpc}} = map { $_->label } $rs->all; 
     47    $c->stash->{xmlrpc} = [ map { $_->label } $rs->all ]; 
    4948    $c->stash->{xmlrpc} 
    5049} 
     
    9695sub list_release :Path :Args(1) { 
    9796    my ( $self, $c, $distribution ) = @_; 
    98     $c->forward('list', [ $distribution ]); 
     97    $c->stash->{dist}{distribution} = $distribution; 
     98    $c->forward('list', [ $c->stash->{dist} ] ); 
    9999} 
    100100 
    101101sub list_arch :Path :Args(2) { 
    102102    my ( $self, $c, $distribution, $release ) = @_; 
    103     $c->forward('list', [ $distribution, $release ]); 
     103    $c->stash->{dist}{distribution} = $distribution; 
     104    $c->stash->{dist}{release} = $release; 
     105    $c->forward('list', [ $c->stash->{dist} ] ); 
    104106} 
    105107 
     
    107109sub distrib_view :PathPrefix :Chained :CaptureArgs(3) { 
    108110    my ( $self, $c, $distribution, $release, $arch ) = @_; 
    109     $c->stash->{distrib} = [ $distribution, $release, $arch ]; 
     111    $c->stash->{dist}{distribution} = $distribution; 
     112    $c->stash->{dist}{release} = $release; 
     113    $c->stash->{dist}{arch} = $arch; 
     114    $c->stash->{distrib} = $c->stash->{dist}; 
    110115} 
    111116 
    112117sub distrib :Chained('distrib_view') PathPart('') { 
    113118    my ( $self, $c ) = @_; 
    114     $c->forward('list', $c->stash->{distrib}); 
    115     $c->forward('rpms',    $c->stash->{distrib}); 
     119    $c->forward('list', $c->stash->{dist}); 
     120    $c->forward('rpms', $c->stash->{dist}); 
    116121    # TODO store properly results 
    117122    # No call from json here 
     
    120125sub media :Chained('distrib_view') PathPart('media') { 
    121126    my ( $self, $c ) = @_; 
    122     $c->forward('struct', $c->stash->{distrib}); 
     127    $c->forward('struct', [ $c->stash->{dist} ]); 
    123128} 
    124129 
    125130sub rpms :XMLRPC { 
    126131    my ( $self, $c, $distribution, $release, $arch ) = @_; 
     132 
     133    if (ref $distribution) { 
     134        ($distribution, $release, $arch) = ( 
     135            $distribution->{distribution}, 
     136            $distribution->{release}, 
     137            $distribution->{arch}, 
     138        ); 
     139    } 
     140     
    127141    @{$c->stash->{rpm}} = map { 
    128142            {  
     
    149163sub srpms :XMLRPC { 
    150164    my ( $self, $c, $distribution, $release, $arch ) = @_; 
     165 
     166    if (ref $distribution) { 
     167        ($distribution, $release, $arch) = ( 
     168            $distribution->{distribution}, 
     169            $distribution->{release}, 
     170            $distribution->{arch}, 
     171        ); 
     172    } 
     173 
    151174    @{$c->stash->{rpm}} = map { 
    152175            {  
     
    173196sub list_rpms :Chained('distrib_view') PathPart('rpms') { 
    174197    my ( $self, $c ) = @_; 
    175     $c->forward('rpms', $c->stash->{distrib}); 
     198    $c->forward('rpms', $c->stash->{dist}); 
    176199} 
    177200 
    178201sub list_srpms :Chained('distrib_view') PathPart('srpms') { 
    179202    my ( $self, $c ) = @_; 
    180     $c->forward('srpms',    $c->stash->{distrib}); 
     203    $c->forward('srpms', $c->stash->{dist}); 
    181204} 
    182205 
     
    190213sub media_rpms : XMLRPC { 
    191214    my ( $self, $c, $distribution, $release, $arch, $media ) = @_; 
     215     
     216    if (ref $distribution) { 
     217        ($distribution, $release, $arch, $media) = ( 
     218            $distribution->{distribution}, 
     219            $distribution->{release}, 
     220            $distribution->{arch}, 
     221            $release, 
     222        ); 
     223    } 
     224     
    192225    @{$c->stash->{rpm}} = map { 
    193226            {  
     
    215248sub media_list_rpms :Chained('_media_list_rpms') PathPart('') { 
    216249    my ( $self, $c ) = @_; 
    217     $c->forward('media_rpms', [ @{$c->stash->{distrib}}, $c->stash->{media} ]); 
     250    $c->forward('media_rpms', [ @{$c->stash->{dist}}, $c->stash->{media} ]); 
    218251} 
    219252sub media_rpm_byname :Chained('_media_list_rpms') PathPart('rpms/by_name') { 
  • server/trunk/web/lib/Sophie/Controller/Root.pm

    r16 r17  
    2525sub begin : Private { 
    2626    my ( $self, $c ) = @_; 
     27 
     28    if ($c->req->path =~ m:[^/]+\/$:) { 
     29        my $path = $c->req->path; 
     30        $path =~ s:/*$::; 
     31        $c->res->redirect($c->uri_for("/$path")); 
     32        return; 
     33    } 
    2734 
    2835    if (($c->req->query_keywords || '') =~ /([^\w]|^)json([^\w]|$)/ || 
     
    8087    } elsif (!$c->stash->{current_view}) { 
    8188    } 
    82     $c->stash->{$c->action} = $c->stash->{xmlrpc}; 
     89    $c->stash->{data} = $c->stash->{xmlrpc}; 
    8390    $c->model('Base')->storage->dbh->rollback; 
    8491} 
  • server/trunk/web/lib/Sophie/View/Ajax.pm

    r16 r17  
    33use strict; 
    44use warnings; 
     5use Sophie; 
    56 
    67use base 'Catalyst::View::TT'; 
     
    910    TEMPLATE_EXTENSION => '.tt', 
    1011    render_die => 1, 
    11     __PACKAGE__->config( 
    12         TEMPLATE_EXTENSION => '.tt', 
    13         render_die => 1, 
    14         INCLUDE_PATH => [ 
    15             Sophie->path_to( 'root', 'templates', 'html' ), 
    16         ], 
    17     ) 
     12    INCLUDE_PATH => [ 
     13        Sophie->path_to( 'root', 'templates', 'includes' ), 
     14        Sophie->path_to( 'root', 'templates', 'html' ), 
     15    ], 
    1816); 
    1917 
  • server/trunk/web/lib/Sophie/View/TT.pm

    r4 r17  
    33use strict; 
    44use warnings; 
     5use Sophie; 
    56 
    67use base 'Catalyst::View::TT'; 
  • server/trunk/web/root/static/sophie.css

    • Property svn:keywords set to Id
    r4 r17  
    1 // $Id$ 
     1/* $Id$ */ 
     2 
     3div#sophie_header { 
     4    border: outset; 
     5} 
     6 
     7#sophie_header p { 
     8    padding-left: 1em; 
     9} 
  • server/trunk/web/root/templates/html/distrib/index.html

    • Property svn:keywords set to Id
    r16 r17  
    11<!-- $Id$ --> 
    2 [% INCLUDE 'distrib/index.tt' %] 
     2[% INCLUDE 'distrib/index.tt' data = xmlrpc %] 
  • server/trunk/web/root/templates/html/distrib/index.tt

    • Property svn:keywords set to Id
    r16 r17  
    22 
    33<ol> 
    4 [% FOREACH k = xmlrpc %] 
     4[% FOREACH k = data %] 
    55<li><a href="[% c.uri_for('/', c.req.path, k) %]">[% k %]</a></li> 
    66[% END %] 
  • server/trunk/web/root/templates/html/distrib/list_release.html

    • Property svn:keywords set to Id
  • server/trunk/web/root/templates/html/distrib/list_release.tt

    • Property svn:keywords set to Id
    r16 r17  
     1<ol> 
     2[% FOREACH release = xmlrpc %] 
     3<li><a href="[% c.uri_for('/', c.req.path, release) %]">[% release %]</a></li> 
    14[% FOREACH f = c.forward('/distrib/list', [  
    25    { 
    3         'distribution' => 'Mandriva', 
    4         'release' => 'cooker' 
     6        'distribution' => dist.distribution, 
     7        'release' => release, 
    58    }  
    69]) %] 
    710[% f %] 
    811[% END %] 
     12[% END %] 
     13</ol> 
  • server/trunk/web/root/templates/html/index.html

    • Property svn:keywords set to Id
  • server/trunk/web/root/templates/includes/header.tt

    r3 r17  
    1010    <meta name="KEYWORDS" content="Sophie, rpm[% IF keywords.size -%], [%- keywords.join(', ') | html -%][% END %]"> 
    1111    <meta name="REVISIT-AFTER" content="[% IF metarevisite %][% metarevisite %][% ELSE %]15[% END %] days"> 
    12     <link rel="icon" href="[%- c.uri_for('/static', 'images', 'favicon.ico') -%]" type="image/x-icon"> 
     12    <link rel="icon" href="[%- c.uri_for('/static', 'sophie.ico') -%]" type="image/x-icon"> 
    1313</head> 
    1414<body> 
     15 
     16    <div id="sophie_header"> 
     17    <img src="[% c.uri_for('/static', 'sophie.png') -%]" style="float:left"> 
     18    <div style="float:left"> 
     19        <p id="sitename">Sophie</p> 
     20        <p id="sophie_menu">fff</p> 
     21    </div> 
     22    <div style="clear:both"></div> 
     23    </div> 
  • server/trunk/web/root/templates/includes/rpmslist.tt

    • Property svn:keywords set to Id
  • server/trunk/web/t/controller_Distrib.t

    r4 r17  
    22use warnings; 
    33use Test::More; 
     4require RPC::XML; 
     5use HTTP::Request; 
     6 
     7# know existing data: 
     8my $distribution = 'Mandriva'; 
    49 
    510BEGIN { use_ok 'Catalyst::Test', 'Sophie' } 
    611BEGIN { use_ok 'Sophie::Controller::Distrib' } 
    712 
     13sub xmlrpcreq { 
     14    my (@xmlargs) = @_; 
     15    my $str = RPC::XML::request->new( @xmlargs )->as_string; 
     16 
     17    my $req = HTTP::Request->new( POST => 'http://localhost/rpc' ); 
     18    $req->header( 'Content-Length'  => length($str) ); 
     19    $req->header( 'Content-Type'    => 'text/xml' ); 
     20    $req->content( $str ); 
     21    return $req; 
     22} 
     23 
    824ok( request('/distrib')->is_success, 'Request should succeed' ); 
     25ok( request("/distrib/$distribution")->is_success, 'Request should succeed' ); 
     26ok( request( xmlrpcreq('distrib.list') ), "XMLRPC"); 
     27ok( request( xmlrpcreq('distrib.list', $distribution) ), "XMLRPC"); 
    928done_testing(); 
Note: See TracChangeset for help on using the changeset viewer.