+
+ CRM_Core_BAO_ConfigSetting::enableComponent('CiviMail');
+ CRM_Core_Config::singleton()->userPermissionClass->permissions = ['access CiviMail', 'delete in CiviMail'];
+ $menuItem = [
+ 'permission' => 'access CiviMail, delete in CiviMail',
+ 'operator' => 'AND',
+ ];
+ $this->assertTrue(CRM_Core_BAO_Navigation::checkPermission($menuItem));
+ $menuItem['operator'] = 'OR';
+ $this->assertTrue(CRM_Core_BAO_Navigation::checkPermission($menuItem));
+ CRM_Core_Config::singleton()->userPermissionClass->permissions = ['delete in CiviMail'];
+ $this->assertTrue(CRM_Core_BAO_Navigation::checkPermission($menuItem));
+ CRM_Core_Config::singleton()->userPermissionClass->permissions = ['access CiviCRM'];
+ $this->assertFalse(CRM_Core_BAO_Navigation::checkPermission($menuItem));
+ CRM_Core_Config::singleton()->userPermissionClass->permissions = ['access CiviMail', 'delete in CiviMail'];
+ CRM_Core_BAO_ConfigSetting::disableComponent('CiviMail');
+ $this->assertFalse(CRM_Core_BAO_Navigation::checkPermission($menuItem));