From: <chr...@us...> - 2006-05-15 22:02:54
|
Revision: 864 Author: chromatic Date: 2006-05-15 15:02:43 -0700 (Mon, 15 May 2006) ViewCVS: http://svn.sourceforge.net/everydevel/?rev=864&view=rev Log Message: ----------- r16717@windwheel: chromatic | 2006-05-15 15:02:31 -0700 Ported workspace tests to new system. Modified Paths: -------------- trunk/ebase/MANIFEST trunk/ebase/lib/Everything/Node/workspace.pm trunk/ebase/t/Node/workspace.t Added Paths: ----------- trunk/ebase/lib/Everything/Node/Test/workspace.pm Property Changed: ---------------- trunk/ebase/ Property changes on: trunk/ebase ___________________________________________________________________ Name: svk:merge - a6810612-c0f9-0310-9d3e-a9e4af8c5745:/ebase/offline:16715 + a6810612-c0f9-0310-9d3e-a9e4af8c5745:/ebase/offline:16717 Modified: trunk/ebase/MANIFEST =================================================================== --- trunk/ebase/MANIFEST 2006-05-15 21:43:37 UTC (rev 863) +++ trunk/ebase/MANIFEST 2006-05-15 22:02:43 UTC (rev 864) @@ -104,6 +104,7 @@ lib/Everything/Node/Test/setting.pm lib/Everything/Node/Test/themesetting.pm lib/Everything/Node/Test/user.pm +lib/Everything/Node/Test/workspace.pm lib/Everything/Nodeball.pm lib/Everything/NodeBase.pm lib/Everything/NodeBase/mysql.pm Added: trunk/ebase/lib/Everything/Node/Test/workspace.pm =================================================================== --- trunk/ebase/lib/Everything/Node/Test/workspace.pm (rev 0) +++ trunk/ebase/lib/Everything/Node/Test/workspace.pm 2006-05-15 22:02:43 UTC (rev 864) @@ -0,0 +1,38 @@ +package Everything::Node::Test::workspace; + +use strict; +use warnings; + +use base 'Everything::Node::Test::setting'; +use Test::More; + +use SUPER; +*Everything::Node::workspace::SUPER = \&UNIVERSAL::SUPER; + +sub test_nuke :Test( 7 ) +{ + my $self = shift; + my $node = $self->{node}; + my $db = $self->{mock_db}; + + $node->set_series( SUPER => 0, 1 ); + $db->set_true( 'sqlDelete' ); + + my $result = $node->nuke( 'user' ); + my ($method, $args) = $node->next_call(); + is( $method, 'SUPER', 'nuke() should call SUPER()' ); + is( $args->[1], 'user', '... with the user' ); + + ok( ! $result, '... returning false if it fails' ); + + $node->{node_id} = 'my_id'; + ok( $node->nuke( 'user' ), '... and true if it succeeds' ); + + ($method, $args) = $db->next_call(); + is( $method, 'sqlDelete', '... so should delete from the database' ); + is( $args->[1], 'revision', '... a revision' ); + is( $args->[2], 'inside_workspace=my_id', '... inside the node workspace' ); +} + +1; +__END__ Property changes on: trunk/ebase/lib/Everything/Node/Test/workspace.pm ___________________________________________________________________ Name: svn:mime-type + text/plain; charset=UTF-8 Name: svn:eol-style + native Modified: trunk/ebase/lib/Everything/Node/workspace.pm =================================================================== --- trunk/ebase/lib/Everything/Node/workspace.pm 2006-05-15 21:43:37 UTC (rev 863) +++ trunk/ebase/lib/Everything/Node/workspace.pm 2006-05-15 22:02:43 UTC (rev 864) @@ -17,11 +17,11 @@ { my ( $this, $USER ) = @_; - return 0 unless ( $this->hasAccess( $USER, "d" ) ); + return unless $this->SUPER( $USER ); - $this->{DB}->sqlDelete( "revision", "inside_workspace=$$this{node_id}" ); - $this->SUPER(); + $this->{DB}->sqlDelete( 'revision', "inside_workspace=$this->{node_id}" ); + return 1; } 1; Modified: trunk/ebase/t/Node/workspace.t =================================================================== --- trunk/ebase/t/Node/workspace.t 2006-05-15 21:43:37 UTC (rev 863) +++ trunk/ebase/t/Node/workspace.t 2006-05-15 22:02:43 UTC (rev 864) @@ -1,57 +1,4 @@ -#!/usr/bin/perl +#! perl -use strict; -use warnings; - -BEGIN -{ - chdir 't' if -d 't'; - use lib 'lib'; -} - -use FakeNode; -use Test::More tests => 9; - -my $module = 'Everything::Node::workspace'; -use_ok( $module ) or exit; - -ok( $module->isa( 'Everything::Node::setting' ), - 'workspace should extend setting' ); - -can_ok( $module, 'dbtables' ); -SKIP: -{ - skip( 'SUPER not appropriate yet', 1 ); - my @tables = $module->dbtables(); - is_deeply( \@tables, [qw( setting node )], - 'dbtables() should return node tables' ); -} - -my $node = FakeNode->new(); -$node->{_subs}{hasAccess} = [ undef, 1 ]; -ok( - !Everything::Node::workspace::nuke( $node, 'user' ), - 'nuke() should return false unless user has delete permission' -); -is( - join( ' ', @{ pop( @{ $node->{_calls} } ) } ), - 'hasAccess user d', - '... and should call hasAccess to prove it' -); - -# and add in data for further calls -$node->{DB} = $node; -$node->{node_id} = 'node_id'; -$node->{_subs}{SUPER} = [1]; -ok( Everything::Node::workspace::nuke( $node, 'user2' ), - '... and true if user does' ); - -# remove the hasAccess() call -shift @{ $node->{_calls} }; -is( - join( ' ', @{ shift( @{ $node->{_calls} } ) } ), - 'sqlDelete revision inside_workspace=node_id', - '... calling sqlDelete to remove revision' -); -is( join( ' ', @{ shift( @{ $node->{_calls} } ) } ), - 'SUPER', '... and calling SUPER to handle deletion' ); +use Everything::Node::Test::workspace; +Everything::Node::Test::workspace->runtests(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |