summaryrefslogtreecommitdiff
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;