forked from extern/egroupware
127 lines
4.1 KiB
PHP
127 lines
4.1 KiB
PHP
|
<?php
|
||
|
|
||
|
/**
|
||
|
* Test for contact entry widget, which displays the value of a particular field
|
||
|
* (specified by field attribute) from a particular contact (specified
|
||
|
* by value attribute).
|
||
|
*
|
||
|
* This is just the server side, client has it's own issues (but no automatic test)
|
||
|
* see infolog/templates/test/entry_test.xet for a test template to use for
|
||
|
* manual client side verification.
|
||
|
*
|
||
|
* @link http://www.egroupware.org
|
||
|
* @author Nathan Gray
|
||
|
* @package api
|
||
|
* @copyright (c) 2019 Nathan Gray
|
||
|
* @license http://opensource.org/licenses/gpl-license.php GPL - GNU General Public License
|
||
|
*/
|
||
|
|
||
|
namespace EGroupware\Api\Etemplate\Widget;
|
||
|
|
||
|
require_once realpath(__DIR__.'/../WidgetBaseTest.php');
|
||
|
|
||
|
use EGroupware\Api\Etemplate;
|
||
|
|
||
|
class EntryTest extends \EGroupware\Api\Etemplate\WidgetBaseTest {
|
||
|
|
||
|
const TEST_TEMPLATE = 'api.entry_test_contact';
|
||
|
|
||
|
public static function setUpBeforeClass() {
|
||
|
parent::setUpBeforeClass();
|
||
|
}
|
||
|
|
||
|
public function tearDown()
|
||
|
{
|
||
|
// Delete all elements
|
||
|
foreach($this->elements as $id)
|
||
|
{
|
||
|
list($app, $id) = explode(':',$id);
|
||
|
|
||
|
$bo_class = "{$app}_bo";
|
||
|
$bo = new $bo_class();
|
||
|
$bo->delete($id, true, false, true);
|
||
|
}
|
||
|
|
||
|
parent::tearDown();
|
||
|
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Test that the correct value is extracted, based on the value attribute,
|
||
|
* or if it is missing try the ID. This goes to contact, rather than
|
||
|
* abstract test class.
|
||
|
*/
|
||
|
public function testContact()
|
||
|
{
|
||
|
// Create a test contact
|
||
|
$test_contact = $this->make_contact();
|
||
|
|
||
|
// Instanciate the template
|
||
|
$etemplate = new Etemplate();
|
||
|
$etemplate->read(static::TEST_TEMPLATE, 'test');
|
||
|
|
||
|
// Content - IDs are important, they should match valid contacts
|
||
|
$content = array(
|
||
|
'entry_id' => $GLOBALS['egw_info']['user']['person_id'],
|
||
|
'info_contact' => $test_contact
|
||
|
);
|
||
|
|
||
|
$result = $this->mockedExec($etemplate, $content);
|
||
|
$data = array();
|
||
|
foreach($result as $response)
|
||
|
{
|
||
|
if($response['type'] == 'et2_load')
|
||
|
{
|
||
|
$data = $response['data']['data'];
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// Check that the entry was found
|
||
|
$this->assertNotEmpty($data['content'][Entry::ID_PREFIX.'widget']);
|
||
|
$this->assertNotEmpty($data['content'][Entry::ID_PREFIX.'entry_id']);
|
||
|
$this->assertNotEmpty($data['content'][Entry::ID_PREFIX.'info_contact_email']);
|
||
|
$this->assertNotEmpty($data['content'][Entry::ID_PREFIX.'info_contact']);
|
||
|
$this->assertEmpty($data['content'][Entry::ID_PREFIX.'no_value']);
|
||
|
|
||
|
// Check that the value is present - exact value is pulled client side
|
||
|
$this->assertNotEmpty($data['content'][Entry::ID_PREFIX.'widget']['email']);
|
||
|
$this->assertNotEmpty($data['content'][Entry::ID_PREFIX.'entry_id']['n_fn']);
|
||
|
|
||
|
$this->assertEquals($GLOBALS['egw_info']['user']['account_email'], $data['content'][Entry::ID_PREFIX.'entry_id']['email']);
|
||
|
$this->assertEquals($GLOBALS['egw_info']['user']['account_fullname'], $data['content'][Entry::ID_PREFIX.'entry_id']['n_fn']);
|
||
|
|
||
|
// Values are to be done as labels
|
||
|
$this->assertEquals('label', $data['modifications'][Entry::ID_PREFIX.'widget[email]']['type'], 'Unexpected widget type');
|
||
|
$this->assertEquals('label', $data['modifications'][Entry::ID_PREFIX.'entry_id[n_fn]']['type'], 'Unexpected widget type');
|
||
|
$this->assertEquals('label', $data['modifications'][Entry::ID_PREFIX.'info_contact_email[email]']['type'], 'Unexpected widget type');
|
||
|
$this->assertEquals('label', $data['modifications'][Entry::ID_PREFIX.'info_contact[email]']['type'], 'Unexpected widget type');
|
||
|
$this->assertEquals('label', $data['modifications'][Entry::ID_PREFIX.'no_value[email]']['type'], 'Unexpected widget type');
|
||
|
|
||
|
// No errors
|
||
|
$this->assertEmpty($data['validation_errors']);
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Make a contact so we can test
|
||
|
*/
|
||
|
protected function make_contact()
|
||
|
{
|
||
|
$bo = new \addressbook_bo();
|
||
|
$element = array(
|
||
|
'n_fn' => "Mr Test Guy",
|
||
|
'n_family' => 'Guy',
|
||
|
'n_fileas' => 'Test Organisation: Guy, Test',
|
||
|
'n_given' => 'Test',
|
||
|
'n_prefix' => 'Mr',
|
||
|
'org_name' => 'Test Organisation',
|
||
|
'tel_cell' => '555-4321',
|
||
|
'tel_home' => '66 12 34 56',
|
||
|
'bday' => "1995-07-28T10:52:54Z"
|
||
|
);
|
||
|
$element_id = $bo->save($element, true, true, true, true);
|
||
|
$this->elements[] = 'addressbook:'.$element_id;
|
||
|
return $element_id;
|
||
|
}
|
||
|
}
|