Merge pull request #23283 from eileenmcnaughton/import_saved_map
[civicrm-core.git] / tests / phpunit / api / v4 / Action / RecentItemsTest.php
index 4c81a618e13b23b490b331777a733e0a6f8cbbcb..f08e96583037ac5b724e88072d7271a36cadbed1 100644 (file)
 
 namespace api\v4\Action;
 
-use api\v4\UnitTestCase;
+use api\v4\Api4TestBase;
 use Civi\Api4\Activity;
+use Civi\Api4\RecentItem;
+use Civi\Test\TransactionalInterface;
 
 /**
  * @group headless
  */
-class RecentItemsTest extends UnitTestCase {
+class RecentItemsTest extends Api4TestBase implements TransactionalInterface {
 
   public function testAddDeleteActivity(): void {
     $cid = $this->createLoggedInUser();
@@ -36,20 +38,23 @@ class RecentItemsTest extends UnitTestCase {
       ->addValue('subject', 'Hello recent!')
       ->execute()->first()['id'];
     $this->assertEquals(1, $this->getRecentItemCount(['type' => 'Activity', 'id' => $aid1]));
-    $this->assertStringContainsString('Hello recent!', \CRM_Utils_Recent::get()[0]['title']);
+    $recentItem = RecentItem::get(FALSE)->execute()->first();
+    $this->assertStringContainsString('Hello recent!', $recentItem['title']);
+    $this->assertStringContainsString("id=$aid1", $recentItem['view_url']);
+    $this->assertEquals('fa-slideshare', $recentItem['icon']);
 
     $aid2 = Activity::create(FALSE)
       ->addValue('activity_type_id:name', 'Meeting')
       ->addValue('source_contact_id', $cid)
       ->addValue('subject', 'Goodbye recent!')
       ->execute()->first()['id'];
-    $this->assertEquals(1, $this->getRecentItemCount(['type' => 'Activity', 'id' => $aid2]));
-    $this->assertStringContainsString('Goodbye recent!', \CRM_Utils_Recent::get()[0]['title']);
+    $this->assertEquals(1, $this->getRecentItemCount(['type' => 'Activity', 'entity_id' => $aid2]));
+    $this->assertStringContainsString('Goodbye recent!', RecentItem::get(FALSE)->execute()[0]['title']);
 
     Activity::delete(FALSE)->addWhere('id', '=', $aid1)->execute();
 
-    $this->assertEquals(0, $this->getRecentItemCount(['type' => 'Activity', 'id' => $aid1]));
-    $this->assertEquals(1, $this->getRecentItemCount(['type' => 'Activity', 'id' => $aid2]));
+    $this->assertEquals(0, $this->getRecentItemCount(['entity_type' => 'Activity', 'entity_id' => $aid1]));
+    $this->assertEquals(1, $this->getRecentItemCount(['entity_type' => 'Activity', 'entity_id' => $aid2]));
   }
 
   /**
@@ -57,16 +62,11 @@ class RecentItemsTest extends UnitTestCase {
    * @return int
    */
   private function getRecentItemCount($props) {
-    $count = 0;
-    foreach (\CRM_Utils_Recent::get() as $item) {
-      foreach ($props as $key => $val) {
-        if (($item[$key] ?? NULL) != $val) {
-          continue 2;
-        }
-      }
-      ++$count;
+    $recent = RecentItem::get(FALSE);
+    foreach ($props as $key => $val) {
+      $recent->addWhere($key, '=', $val);
     }
-    return $count;
+    return $recent->execute()->count();
   }
 
 }