Changeset 300

Show
Ignore:
Timestamp:
05/18/06 18:31:30 (6 years ago)
Author:
nick
Message:

Finish list_node_all_versions support and tests

Location:
wiki-toolkit/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • wiki-toolkit/trunk/lib/Wiki/Toolkit/Store/Database.pm

    r299 r300  
    14541454                $sql .= ", metadata_type, metadata_value "; 
    14551455        } 
    1456         $sql .= " FROM node INNER JOIN content ON (id = node_id) "; 
     1456        $sql .= " FROM node INNER JOIN content ON (id = content.node_id) "; 
    14571457        if($with_metadata) { 
    1458                 $sql .= " LEFT OUTER JOIN metadata ON (id = node_id AND content.version = metadata.version) "; 
     1458                $sql .= " LEFT OUTER JOIN metadata ON (id = metadata.node_id AND content.version = metadata.version) "; 
    14591459        } 
    14601460        $sql .= " WHERE id = ? ORDER BY content.version DESC"; 
     
    14931493                if($with_metadata) { 
    14941494                        my ($m_type,$m_value) = @results[$i,($i+1)]; 
    1495                         $data{'metadata'}->{$m_type} = $m_value; 
     1495                        unless($data{'metadata'}) { $data{'metadata'} = {}; } 
     1496                        if($m_type) { 
     1497                                $data{'metadata'}->{$m_type} = $m_value; 
     1498                        } 
    14961499                } 
    14971500 
  • wiki-toolkit/trunk/t/025_list_node_all_versions.t

    r299 r300  
    66    plan skip_all => "no backends configured"; 
    77} else { 
    8     plan tests => ( 22 * scalar @Wiki::Toolkit::TestLib::wiki_info ); 
     8    plan tests => ( 56 * scalar @Wiki::Toolkit::TestLib::wiki_info ); 
    99} 
    1010 
     
    6666        is( $all_versions[3]->{'content'}, "content", "right node" ); 
    6767 
    68         # With metadata 
     68 
     69        # With metadata, but not content 
     70        @all_versions = $wiki->list_node_all_versions( 
     71                                                                name => "Cheese", 
     72                                                                with_content => 0, 
     73                                                                with_metadata => 1 
     74        ); 
     75 
     76        is( scalar @all_versions, 4, "list_node_all_versions gives the right number back" ); 
     77 
     78        # Check them 
     79        is( $all_versions[0]->{'version'}, 4, "right ordering" ); 
     80        is( $all_versions[1]->{'version'}, 3, "right ordering" ); 
     81        is( $all_versions[2]->{'version'}, 2, "right ordering" ); 
     82        is( $all_versions[3]->{'version'}, 1, "right ordering" ); 
     83        is( $all_versions[0]->{'name'}, "Cheese", "right node" ); 
     84        is( $all_versions[1]->{'name'}, "Cheese", "right node" ); 
     85        is( $all_versions[2]->{'name'}, "Cheese", "right node" ); 
     86        is( $all_versions[3]->{'name'}, "Cheese", "right node" ); 
     87        is( $all_versions[0]->{'content'}, undef, "right node" ); 
     88        is( $all_versions[1]->{'content'}, undef, "right node" ); 
     89        is( $all_versions[2]->{'content'}, undef, "right node" ); 
     90        is( $all_versions[3]->{'content'}, undef, "right node" ); 
     91 
     92        my %md_1 = (); 
     93        my %md_2 = (foo=>'bar'); 
     94        my %md_3 = (foo=>'bar',bar=>'foo'); 
     95        my %md_4 = (); 
     96 
     97        is_deeply( $all_versions[0]->{'metadata'}, \%md_4, "right metadata" ); 
     98        is_deeply( $all_versions[1]->{'metadata'}, \%md_3, "right metadata" ); 
     99        is_deeply( $all_versions[2]->{'metadata'}, \%md_2, "right metadata" ); 
     100        is_deeply( $all_versions[3]->{'metadata'}, \%md_1, "right metadata" ); 
     101 
    69102 
    70103        # With both 
    71     #is_deeply( [sort @all_nodes], [ qw( Carrots Cheese Handbags ) ], 
    72     #           "...and the right ones, too" ); 
     104        @all_versions = $wiki->list_node_all_versions( 
     105                                                                name => "Cheese", 
     106                                                                with_content => 1, 
     107                                                                with_metadata => 1 
     108        ); 
     109 
     110        is( scalar @all_versions, 4, "list_node_all_versions gives the right number back" ); 
     111 
     112        # Check them 
     113        is( $all_versions[0]->{'version'}, 4, "right ordering" ); 
     114        is( $all_versions[1]->{'version'}, 3, "right ordering" ); 
     115        is( $all_versions[2]->{'version'}, 2, "right ordering" ); 
     116        is( $all_versions[3]->{'version'}, 1, "right ordering" ); 
     117        is( $all_versions[0]->{'name'}, "Cheese", "right node" ); 
     118        is( $all_versions[1]->{'name'}, "Cheese", "right node" ); 
     119        is( $all_versions[2]->{'name'}, "Cheese", "right node" ); 
     120        is( $all_versions[3]->{'name'}, "Cheese", "right node" ); 
     121        is( $all_versions[0]->{'content'}, "Content v4", "right node" ); 
     122        is( $all_versions[1]->{'content'}, "Content v3", "right node" ); 
     123        is( $all_versions[2]->{'content'}, "Content v2", "right node" ); 
     124        is( $all_versions[3]->{'content'}, "content", "right node" ); 
     125 
     126        is_deeply( $all_versions[0]->{'metadata'}, \%md_4, "right metadata" ); 
     127        is_deeply( $all_versions[1]->{'metadata'}, \%md_3, "right metadata" ); 
     128        is_deeply( $all_versions[2]->{'metadata'}, \%md_2, "right metadata" ); 
     129        is_deeply( $all_versions[3]->{'metadata'}, \%md_1, "right metadata" ); 
    73130} 
    74131