0
0
Fork 0
mirror of https://github.com/salesagility/SuiteCRM.git synced 2025-02-05 22:49:44 +00:00
salesagility_SuiteCRM/tests/api/V8/CreateRelationShipByLinkCest.php
j.dang cd0aabc705 Fix - API Create Relationship via Link
- Revert old endpoint code for backward compatibility.
- Add new createRelationshipByLink endpoint and test.
- Update Postman collection with new endpoint.
- Remove access tokens in Postman collection.
- Replace IDs with placeholders in Postman collection.
2019-08-21 11:50:32 +01:00

159 lines
3.7 KiB
PHP

<?php
namespace Test\Api\V8;
use ApiTester;
use \Exception;
use \Codeception\Exception\ModuleException;
require_once __DIR__ . '/../../../include/utils.php';
class CreateRelationShipByLinkCest
{
/**
* @param ApiTester $I
*
* @throws ModuleException
*/
public function _before(ApiTester $I)
{
$I->login();
}
/**
* @param ApiTester $I
*
* @throws Exception
*/
public function shouldWork(ApiTester $I)
{
$accountId = $I->createAccount();
$contactId = $I->createContact();
$accountLabel = translate('Accounts');
$contactLabel = translate('Contacts');
$linkName = 'contacts';
$expectedMessage = sprintf(
'%s record with id %s has been related to %s record with id %s using link %s',
$contactLabel,
$contactId,
$accountLabel,
$accountId,
$linkName
);
$endpoint = $I->getInstanceURL() . '/Api/V8/module/Accounts/{id}/relationships/{linkFieldName}';
$endpoint = str_replace(
[
'{id}',
'{linkFieldName}'
],
[
$accountId,
$linkName
],
$endpoint
);
$payload = [
'data' => [
'type' => 'Contacts',
'id' => $contactId,
]
];
$I->sendPOST($endpoint, $payload);
$I->seeResponseCodeIs(201);
$I->seeResponseIsJson();
$responseJson = $I->grabResponse();
$responseArray = json_decode($responseJson, true);
$I->assertNotEmpty($responseArray);
$I->assertArrayHasKey('meta', $responseArray);
$I->assertNotEmpty($responseArray['meta']);
$I->assertArrayHasKey('message', $responseArray['meta']);
$I->assertNotEmpty($responseArray['meta']['message']);
$I->assertEquals(
$expectedMessage,
$responseArray['meta']['message']
);
$I->assertArrayHasKey('sourceModule', $responseArray['meta']);
$I->assertEquals(
'Accounts',
$responseArray['meta']['sourceModule']
);
$I->assertArrayHasKey('sourceModuleLabel', $responseArray['meta']);
$I->assertEquals(
$accountLabel,
$responseArray['meta']['sourceModuleLabel']
);
$I->assertArrayHasKey('sourceId', $responseArray['meta']);
$I->assertEquals(
$accountId,
$responseArray['meta']['sourceId']
);
$I->assertArrayHasKey('relatedModule', $responseArray['meta']);
$I->assertEquals(
'Contacts',
$responseArray['meta']['relatedModule']
);
$I->assertArrayHasKey('relatedModuleLabel', $responseArray['meta']);
$I->assertEquals(
$contactLabel,
$responseArray['meta']['relatedModuleLabel']
);
$I->assertArrayHasKey('relatedId', $responseArray['meta']);
$I->assertEquals(
$contactId,
$responseArray['meta']['relatedId']
);
$I->assertArrayHasKey('relationshipLink', $responseArray['meta']);
$I->assertEquals(
$linkName,
$responseArray['meta']['relationshipLink']
);
$I->deleteRelationship(
[
'tableName' => 'accounts_contacts',
'sourceIdName' => 'account_id',
'relatedIdName' => 'contact_id',
],
[
'sourceId' => $accountId,
'relatedId' => $contactId,
]
);
$I->deleteBean('accounts', $accountId);
$I->deleteBean('contacts', $contactId);
}
}