X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Ft%2Fticket%2Fcircular_links.t;fp=rt%2Ft%2Fticket%2Fcircular_links.t;h=b6695feea27322078e1e128e3d3571f80c3234eb;hb=e131b1f71f08b69abb832c1687d1f29682d171f8;hp=0000000000000000000000000000000000000000;hpb=d05d7346bb2387fd9d0354923d577275c5c7f019;p=freeside.git diff --git a/rt/t/ticket/circular_links.t b/rt/t/ticket/circular_links.t new file mode 100644 index 000000000..b6695feea --- /dev/null +++ b/rt/t/ticket/circular_links.t @@ -0,0 +1,45 @@ +use strict; +use warnings; + +use RT::Test tests => undef; + +my ( $foo, $bar, $baz ) = RT::Test->create_tickets( + { Queue => 'General' }, + { Subject => 'foo' }, + { Subject => 'bar' }, + { Subject => 'baz' } +); + +diag "test circular DependsOn"; +my ( $status, $msg ) = $foo->AddLink( Type => 'DependsOn', Target => $bar->id ); +ok( $status, "foo depends on bar" ); +( $status, $msg ) = $foo->AddLink( Type => 'DependsOn', Base => $bar->id ); +ok( !$status, "foo can't be depended on bar" ); +( $status, $msg ) = $bar->AddLink( Type => 'DependsOn', Target => $foo->id ); +ok( !$status, "bar can't depend on foo back" ); +( $status, $msg ) = $bar->AddLink( Type => 'DependsOn', Target => $baz->id ); +ok( $status, "bar depends on baz" ); +( $status, $msg ) = $baz->AddLink( Type => 'DependsOn', Target => $foo->id ); +ok( !$status, "baz can't depend on foo back" ); + + +diag "test circular MemberOf"; +( $status, $msg ) = $foo->AddLink( Type => 'MemberOf', Target => $bar->id ); +ok( $status, "foo is a member of bar" ); +( $status, $msg ) = $foo->AddLink( Type => 'MemberOf', Base => $bar->id ); +ok( !$status, "foo can't have member bar" ); +( $status, $msg ) = $bar->AddLink( Type => 'MemberOf', Target => $foo->id ); +ok( !$status, "bar can't be a member of foo" ); +( $status, $msg ) = $bar->AddLink( Type => 'MemberOf', Target => $baz->id ); +ok( $status, "baz is a member of bar" ); +( $status, $msg ) = $baz->AddLink( Type => 'DependsOn', Target => $foo->id ); +ok( !$status, "baz can't be a member of foo" ); + + +diag "test circular RefersTo"; +( $status, $msg ) = $foo->AddLink( Type => 'RefersTo', Target => $bar->id ); +ok( $status, "foo refers to bar" ); +( $status, $msg ) = $foo->AddLink( Type => 'RefersTo', Base => $bar->id ); +ok( $status, "foo can be referred to by bar" ); + +done_testing;