fix some tag method issues:
authorTony Cook <tony@develop-help.com>
Fri, 6 Sep 2013 11:01:19 +0000 (21:01 +1000)
committerTony Cook <tony@develop-help.com>
Fri, 6 Sep 2013 11:01:19 +0000 (21:01 +1000)
 - tag_ids returned a tag count rather than the ids

 - allow collection_with_tags to work on the all_visible_products
   collection

site/cgi-bin/modules/BSE/TB/TagOwner.pm
site/cgi-bin/modules/Products.pm
t/050-local/030-tags.t

index 7c64e90..76ff930 100644 (file)
@@ -6,7 +6,7 @@ use strict;
 use BSE::TB::Tags;
 use BSE::TB::TagMembers;
 
-our $VERSION = "1.003";
+our $VERSION = "1.004";
 
 =head1 NAME
 
@@ -147,7 +147,7 @@ Returns all existing tags on the object as tag ids.
 sub tag_ids {
   my ($self) = @_;
 
-  return map $_->{id}, BSE::DB->single->run("Tag_ids.by_owner", $self->tag_owner_type, $self->id);
+  return map $_->{id}, BSE::DB->single->query("Tag_ids.by_owner", $self->tag_owner_type, $self->id);
 }
 
 =item tag_members
index b298047..af2d438 100644 (file)
@@ -2,10 +2,10 @@ package Products;
 use strict;
 use Squirrel::Table;
 use vars qw(@ISA $VERSION);
-@ISA = qw(Squirrel::Table);
+@ISA = qw(Squirrel::Table BSE::TB::TagOwners);
 use Product;
 
-our $VERSION = "1.002";
+our $VERSION = "1.003";
 
 sub rowClass {
   return 'Product';
@@ -45,6 +45,8 @@ sub all_visible_product_tags {
     };
 }
 
+*all_visible_products = \&all_visible_children;
+
 sub visible_children {
   my ($class, $id) = @_;
 
index 4d76b23..d9fee1f 100644 (file)
@@ -1,7 +1,7 @@
 #!perl -w
 use strict;
 use BSE::Test ();
-use Test::More tests => 36;
+use Test::More tests => 38;
 use File::Spec;
 use Carp qw(confess);
 
@@ -71,6 +71,24 @@ for my $title ("A" .. "Z") {
   ok($all_set, "all kid tags set");
 }
 
+{
+  my @tags = $kids[0]->tag_objects;
+  my @ids = sort map $_->id, @tags;
+  is_deeply([ sort $kids[0]->tag_ids ], \@ids, "check tag_ids works");
+}
+
+{
+  my $tag_info = Products->collection_with_tags
+    (
+     "all_visible_products",
+     [ "iPod: Nano" ],
+     { args => [ $parent->id ] },
+    );
+  my @expect = map $_->id, sort { $a->id <=> $b->id } @kids{"I", "J"};
+  my @found = map $_->id, sort { $a->id <=> $b->id } @{$tag_info->{objects}};
+  is_deeply(\@found, \@expect, "collection with tags on all_visible_products");
+}
+
 is_deeply([ map $_->title, $parent->children ],
          [ reverse("A" .. "Z") ],
          "check the childrent are in place");