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();
->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]));
}
/**
* @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();
}
}