sAddAttachmentName = ''; $this->sRemoveAttachmentName = ''; $_REQUEST['transaction_id'] = 'test_transaction'; $_REQUEST['attachment_plugin'] = 'in_form'; $oDocument = new \ormDocument('Test', 'text/plain', 'test.txt'); $this->EventService_RegisterListener(EVENT_ADD_ATTACHMENT_TO_OBJECT, [$this, 'OnAddAttachment']); $this->EventService_RegisterListener(EVENT_REMOVE_ATTACHMENT_FROM_OBJECT, [$this, 'OnRemoveAttachment']); $oAttachment = MetaModel::NewObject('Attachment', [ 'item_class' => 'UserRequest', 'temp_id' => 'test_transaction', 'contents' => $oDocument, ]); $oAttachment->DBInsert(); $oTicket = $this->CreateTicket(1); $_REQUEST['removed_attachments'] = [$oAttachment->GetKey()]; $this->InvokeNonPublicStaticMethod(\AttachmentPlugIn::class, 'UpdateAttachments', [$oTicket]); $this->assertEquals('test.txt', $this->sAddAttachmentName); $this->assertEquals('test.txt', $this->sRemoveAttachmentName); } public function OnAddAttachment(EventData $oData) { $this->debug('OnAddAttachment'); $this->assertEquals('UserRequest', get_class($oData->Get('object'))); $oAttachment = $oData->Get('attachment'); /** @var \ormDocument $oDocument */ $oDocument = $oAttachment->Get('contents'); $this->sAddAttachmentName = $oDocument->GetFileName(); } public function OnRemoveAttachment(EventData $oData) { $this->debug('OnRemoveAttachment'); $this->assertEquals('UserRequest', get_class($oData->Get('object'))); $oAttachment = $oData->Get('attachment'); /** @var \ormDocument $oDocument */ $oDocument = $oAttachment->Get('contents'); $this->sRemoveAttachmentName = $oDocument->GetFileName(); } public function testSetItemOnObjectWithDefinedOrganization() { $iOrgId = $this->GivenObjectInDB('Organization', ['name' => 'TestOrg']); $oUserRequest = $this->GivenObject('UserRequest', ['title' => 'TestUserRequest', 'org_id'=>$iOrgId]); $oAttachment = new \Attachment(); $oAttachment->SetItem($oUserRequest); $this->assertEquals($iOrgId, $oAttachment->Get('item_org_id'),'The org_id should be the one of the contact'); } public function testSetItemOnObjectWithoutDefinedOrganization() { $oUserRequest = $this->GivenObject('TriggerOnObjectCreate', ['target_class' => 'UserRequest','description'=>'TestUserRequest']); $oAttachment = new \Attachment(); $oAttachment->SetItem($oUserRequest); $this->assertEquals(0, $oAttachment->Get('item_org_id'),'The org_id should be the one of the contact'); } public function testSetDefaultOrgIdWhenLoggedInWithContact() { $iContactOrgId = $this->GivenObjectInDB('Organization', ['name' => 'TestOrg']); $this->GivenUserLoggedInWithContact($iContactOrgId); $oAttachment = new \Attachment(); $oAttachment->SetDefaultOrgId(); $this->assertEquals($iContactOrgId, $oAttachment->Get('item_org_id'),'The org_id should be the one of the contact'); } public function testSetDefaultOrgIdWhenLoggedInWithoutContact() { $this->GivenUserLoggedInWithoutContact(); $oAttachment = new \Attachment(); $oAttachment->SetDefaultOrgId(); $this->assertEquals(0, $oAttachment->Get('item_org_id'),'The org_id should be left undefined'); } }