/**
  * Tests that the same topLinks information is returned when looking up links for
  * influencers by tags or by influencer uids
  */
 public function testParams()
 {
     // Add Tags
     $tagAddParams = array('influencers' => array($this->infUid, $this->infUid2), 'tags' => array($this->testTag));
     Traackr\Influencers::tagAdd($tagAddParams);
     $infs = array($this->infUid, $this->infUid2);
     $tags = array($this->testTag);
     // First test that we have top links to compare
     $posts = Traackr\Analysis::toplinks(array('influencers' => $infs, 'count' => 1));
     # 1 post
     $this->assertCount(1, $posts['links']);
     #just 1 post see above
     $this->assertTrue(in_array($posts['links'][0]['linkbacks'][0]['influencer_uid'], $infs));
     Traackr\TraackrApi::setJsonOutput(true);
     $posts1 = Traackr\Analysis::toplinks(array('influencers' => $infs));
     $posts2 = Traackr\Analysis::toplinks(array('tags' => $tags));
     $this->assertJsonStringEqualsJsonString($posts1, $posts2);
     // Remove Tags
     $tagRemoveParams = array('all' => true, 'tags' => array($this->testTag));
     Traackr\Influencers::tagRemove($tagRemoveParams);
 }
 public function testTagList()
 {
     $tags = Traackr\AccountMgmt::tagList();
     // $tags_list = array_reduce($tags, function(&$results, $item) { $results[] = $item['tag']; }, array());
     foreach ($tags['account']['tags'] as $tag) {
         if ($tag['tag'] == $this->infTag) {
             $this->assertSame(0, $tag['ref_count']);
         }
     }
     Traackr\Influencers::tagAdd(array('influencers' => $this->infUid, 'tags' => $this->infTag));
     $tags = Traackr\AccountMgmt::tagList();
     foreach ($tags['account']['tags'] as $tag) {
         if ($tag['tag'] == $this->infTag) {
             $this->assertSame(1, $tag['ref_count']);
         }
     }
     $tags = Traackr\AccountMgmt::tagList(array('tag_prefix_filter' => 'traackr-api'));
     foreach ($tags['account']['tags'] as $tag) {
         if ($tag['tag'] == $this->infTag) {
             $this->assertSame(1, $tag['ref_count']);
         }
     }
     Traackr\Influencers::tagRemove(array('influencers' => $this->infUid, 'tags' => $this->infTag));
 }
 public function testSearch()
 {
     Traackr\Influencers::tagAdd(array('influencers' => $this->infUid, 'tags' => $this->infTag));
     sleep(1);
     // Make sure tag operation is done indexing
     // Finds result with prefix
     $inf = Traackr\Influencers::search(array('keywords' => 'traackr', 'tags' => 'traackr-api-', 'is_tag_prefix' => true));
     $this->assertGreaterThan(0, $inf['influencers'], 'No results found');
     // No result with exact tag match
     $inf = Traackr\Influencers::search(array('keywords' => 'traackr', 'tags' => 'traackr-api-', 'is_tag_prefix' => false));
     $this->assertCount(0, $inf['influencers'], 'Results found');
     // Test tags_exclusive
     Traackr\Influencers::tagAdd(array('influencers' => $this->infUid2, 'tags' => array($this->infTag, $this->infTag2)));
     sleep(1);
     // Make sure tag operation is done indexing
     $infs = Traackr\Influencers::search(array('keywords' => 'traackr', 'tags' => $this->infTag));
     $this->assertCount(2, $infs['influencers'], 'No results found');
     $infs = Traackr\Influencers::search(array('keywords' => 'traackr', 'tags' => $this->infTag, 'tags_exclusive' => $this->infTag2));
     $this->assertCount(1, $infs['influencers'], 'Results found');
     Traackr\Influencers::tagRemove(array('influencers' => array($this->infUid, $this->infUid2), 'tags' => array($this->infTag, $this->infTag2)));
 }