aboutsummaryrefslogtreecommitdiff
path: root/t
diff options
context:
space:
mode:
authordakkar <dakkar@thenautilus.net>2016-12-27 16:34:27 +0000
committerdakkar <dakkar@thenautilus.net>2016-12-27 16:34:27 +0000
commitc6ffe49bff0a41046d4dd64d1f293f925b0f37e1 (patch)
tree54dc94688787f810d921ddd0df0188797d492909 /t
parentlist & show moderation queue contents (diff)
downloadSietima-c6ffe49bff0a41046d4dd64d1f293f925b0f37e1.tar.gz
Sietima-c6ffe49bff0a41046d4dd64d1f293f925b0f37e1.tar.bz2
Sietima-c6ffe49bff0a41046d4dd64d1f293f925b0f37e1.zip
mailstore: retrieve_ids_by_tags
Diffstat (limited to 't')
-rw-r--r--t/lib/Test/Sietima/MailStore.pm9
-rw-r--r--t/tests/sietima/mailstore.t30
2 files changed, 39 insertions, 0 deletions
diff --git a/t/lib/Test/Sietima/MailStore.pm b/t/lib/Test/Sietima/MailStore.pm
index 030e5fc..64c7b41 100644
--- a/t/lib/Test/Sietima/MailStore.pm
+++ b/t/lib/Test/Sietima/MailStore.pm
@@ -25,6 +25,15 @@ sub store ($self,$mail,@tags) {
return $id;
}
+sub retrieve_ids_by_tags ($self,@tags){
+ my @ret;
+ for my $m (values $self->_mails->%*) {
+ next unless all { $m->{tags}{$_} } @tags;
+ push @ret, $m->{id};
+ }
+ return \@ret;
+}
+
sub retrieve_by_tags ($self,@tags){
my @ret;
for my $m (values $self->_mails->%*) {
diff --git a/t/tests/sietima/mailstore.t b/t/tests/sietima/mailstore.t
index b7991a5..c03fc1c 100644
--- a/t/tests/sietima/mailstore.t
+++ b/t/tests/sietima/mailstore.t
@@ -81,6 +81,36 @@ sub test_store($store) {
);
};
+ subtest 'retrieving ids by tag' => sub {
+ my $tag1 = $store->retrieve_ids_by_tags('tag1');
+ is(
+ $tag1,
+ bag { item $stored_id{1}; item $stored_id{3}; end },
+ 'tag1 should have ids 1 & 3',
+ );
+
+ my $tag2 = $store->retrieve_ids_by_tags('tag2');
+ is(
+ $tag2,
+ bag { item $stored_id{1}; item $stored_id{2}; end },
+ 'tag1 should have ids 1 & 2',
+ );
+
+ my $tag12 = $store->retrieve_ids_by_tags('tag2','tag1');
+ is(
+ $tag12,
+ bag { item $stored_id{1}; end },
+ 'tag1+tag2 should have id 1',
+ );
+
+ my $tag_all = $store->retrieve_ids_by_tags();
+ is(
+ $tag_all,
+ bag { item $stored_id{1}; item $stored_id{2}; item $stored_id{3}; end },
+ 'no tags should retrieve all ids',
+ );
+ };
+
subtest 'removing' => sub {
$store->remove($stored_id{2});
is(