summary refs log tree commit diff
diff options
context:
space:
mode:
authorSimon Wistow <simon@thegestalt.org>2011-03-07 01:33:58 +0000
committerSimon Wistow <simon@thegestalt.org>2011-03-07 01:33:58 +0000
commita1ba8869c54673400beddff04816c2d2c4a06957 (patch)
tree0b3810b1a28e97f3a620358c0bb34e6e9196e8d9
parentupdated change log (diff)
downloadnet-riak-a1ba8869c54673400beddff04816c2d2c4a06957.tar.gz
Fix remove_link
-rw-r--r--lib/Net/Riak/Object.pm7
-rw-r--r--t/90_bug_links.t3
2 files changed, 8 insertions, 2 deletions
diff --git a/lib/Net/Riak/Object.pm b/lib/Net/Riak/Object.pm
index 5efe5f9..1d2b56a 100644
--- a/lib/Net/Riak/Object.pm
+++ b/lib/Net/Riak/Object.pm
@@ -256,8 +256,11 @@ sub add_link {
 }
 
 sub remove_link {
-    my ($self, $link) = @_;
-    # XXX purge links!
+   my ($self, $link) = @_;
+   my @links = grep { $_->key ne $link->key } @{$self->links};
+   $self->_clear_links;
+   $self->append_link($_) for @links;
+   $self;
 }
 
 sub add {
diff --git a/t/90_bug_links.t b/t/90_bug_links.t
index e1f71db..dd7cc84 100644
--- a/t/90_bug_links.t
+++ b/t/90_bug_links.t
@@ -59,4 +59,7 @@ my $links = $test_links->links;
 is $links->[0]->key, 'griffinp', 'good owner for first link';
 is $links->[1]->key, 'griffins', 'good owner for second link';
 
+$test_links->remove_link($links->[0]);
+$links = $test_links->links;
+is $links->[0]->key, 'griffins', 'good owner for second link after a remove link';
 done_testing;