GroupTest
extends TestCase
in package
implements
HeadlessInterface, HookInterface, TransactionalInterface
uses
ContactTestTrait, EntityTrait, Api3TestTrait
FIXME - Add test description.
Tips:
- With HookInterface, you may implement CiviCRM hooks directly in the test class. Simply create corresponding functions (e.g. "hook_civicrm_post(...)" or similar).
- With TransactionalInterface, any data changes made by setUp() or test****() functions will rollback automatically -- as long as you don't manipulate schema or truncate tables. If this test needs to manipulate schema or truncate tables, then either: a. Do all that using setupHeadless() and Civi\Test. b. Disable TransactionalInterface, and handle all setup/teardown yourself.
Tags
Table of Contents
Interfaces
- HeadlessInterface
- Interface HeadlessInterface
- HookInterface
- TransactionalInterface
- Interface HeadlessInterface
Properties
- $apiversion : int
- API version to use for any api calls.
- $_apiversion : int
- Api version - easier to override than just a define
- $ids : array<string|int, mixed>
- Array of IDs created to support the test.
- $tablesToCleanUp : array<string|int, mixed>
- Track tables we have modified during a test.
- $testRecords : array<string|int, mixed>
- Records created which will be deleted during tearDown
Methods
- assertAPIArrayComparison() : mixed
- Check that api returned 'is_error' => 1 else provide full message
- assertAPIDeleted() : mixed
- Check that a deleted item has been deleted.
- assertAPIFailure() : void
- Check that api returned 'is_error' => 1.
- assertAPISuccess() : mixed
- Check that api returned 'is_error' => 0.
- callAPIAndDocument() : array<string|int, mixed>|int
- callAPIFailure() : array<string|int, mixed>|int
- This function exists to wrap api functions.
- callAPISuccess() : array<string|int, mixed>|int
- wrap api functions.
- callAPISuccessGetCount() : array<string|int, mixed>|int
- This function exists to wrap api getValue function & check the result so we can ensure they succeed & throw exceptions without littering the test with checks There is a type check in this
- callAPISuccessGetSingle() : array<string|int, mixed>|int
- This function exists to wrap api getsingle function & check the result so we can ensure they succeed & throw exceptions without litterering the test with checks
- callAPISuccessGetValue() : array<string|int, mixed>|int
- This function wraps the getValue api and checks the result.
- civicrm_api() : array<string|int, mixed>|int
- A stub for the API interface. This can be overriden by subclasses to change how the API is called.
- contactDelete() : void
- Delete contact, ensuring it is not the domain contact
- createLoggedInUser() : int
- Emulate a logged in user since certain functions use that.
- dataProvider() : array<string|int, mixed>
- groupContactCreate() : int
- Function to add a Group.
- groupCreate() : int
- Add a Group.
- groupDelete() : mixed
- Delete a Group.
- householdCreate() : int
- Generic function to create Household, to be used in test cases
- individualCreate() : int
- Generic function to create Individual, to be used in test cases
- organizationCreate() : int
- Generic function to create Organisation, to be used in test cases
- runApi4Legacy() : array<string|int, mixed>|int
- Emulate v3 syntax so we can run api3 tests on v4
- sampleContact() : array<string|int, mixed>
- Helper function for getting sample contact properties.
- setUpHeadless() : CiviEnvBuilder
- Civi\Test has many helpers, like install(), uninstall(), sql(), and sqlFile(). See: https://github.com/civicrm/org.civicrm.testapalooza/blob/master/civi-test.md
- testAll() : void
- Test CRM_Contact_Form_Search_Custom_Group::all().
- testColumns() : void
- Test CRM_Contact_Form_Search_Custom_Group::columns() It returns an array of translated name => keys
- testContactIDs() : void
- Test CRM_Contact_Form_Search_Custom_Group::contactIDs().
- testSummary() : void
- Test CRM_Contact_Form_Search_Custom_Group::summary() It returns NULL
- testTemplateFile() : void
- Test CRM_Contact_Form_Search_Custom_Group::templateFile() Returns the path to the file as a string
- testWhereFalse() : void
- Test CRM_Contact_Form_Search_Custom_Group::where( ) With false argument it returns '(1)'
- testWhereNoArgs() : void
- Test CRM_Contact_Form_Search_Custom_Group::where( ) With no arguments it returns '(1)'
- testWhereTrue() : void
- Test CRM_Contact_Form_Search_Custom_Group::where( ) With true argument it returns list of contact IDs
- versionThreeAndFour() : array<string|int, mixed>
- Get the api versions to test.
- createTestEntity() : array<string|int, mixed>
- Create an entity, recording it's details for tearDown.
- runApi4LegacyChain() : array<string|int, mixed>
- setTestEntity() : void
- Set the test entity on the class for access.
- setTestEntityID() : void
- setup() : void
- Set up tags and groups for test.
- _contactCreate() : int
- Private helper function for calling civicrm_contact_add.
- replaceFormValuesPlaceholders() : array<string|int, mixed>
- Replace placeholder form values with created IDS.
- replaceIDSPlaceholders() : array<string|int, mixed>
Properties
$apiversion
API version to use for any api calls.
public
int
$apiversion
= 4
$_apiversion
Api version - easier to override than just a define
protected
int
$_apiversion
= 3
$ids
Array of IDs created to support the test.
protected
array<string|int, mixed>
$ids
= []
e.g $this->ids = ['Event' => ['descriptive_key' => $eventID], 'Group' => [$groupID]];
$tablesToCleanUp
Track tables we have modified during a test.
protected
array<string|int, mixed>
$tablesToCleanUp
= []
Set up functions that add entities can register the relevant tables here for the cleanup process.
$testRecords
Records created which will be deleted during tearDown
protected
array<string|int, mixed>
$testRecords
= []
Methods
assertAPIArrayComparison()
Check that api returned 'is_error' => 1 else provide full message
public
assertAPIArrayComparison(array<string|int, mixed> $result, mixed $expected[, array<string|int, mixed> $valuesToExclude = [] ][, string $prefix = '' ]) : mixed
Parameters
- $result : array<string|int, mixed>
- $expected : mixed
- $valuesToExclude : array<string|int, mixed> = []
- $prefix : string = ''
-
Extra test to add to message.
assertAPIDeleted()
Check that a deleted item has been deleted.
public
assertAPIDeleted(mixed $entity, mixed $id) : mixed
Parameters
- $entity : mixed
- $id : mixed
assertAPIFailure()
Check that api returned 'is_error' => 1.
public
assertAPIFailure(array<string|int, mixed> $apiResult[, string $prefix = '' ][, string|null $expectedError = NULL ]) : void
Parameters
- $apiResult : array<string|int, mixed>
-
Api result.
- $prefix : string = ''
-
Extra test to add to message.
- $expectedError : string|null = NULL
assertAPISuccess()
Check that api returned 'is_error' => 0.
public
assertAPISuccess(array<string|int, mixed> $apiResult[, string $prefix = '' ]) : mixed
Parameters
- $apiResult : array<string|int, mixed>
-
Api result.
- $prefix : string = ''
-
Extra test to add to message.
callAPIAndDocument()
public
callAPIAndDocument(string $entity, string $action, array<string|int, mixed> $params) : array<string|int, mixed>|int
Parameters
- $entity : string
- $action : string
- $params : array<string|int, mixed>
Return values
array<string|int, mixed>|intcallAPIFailure()
This function exists to wrap api functions.
public
callAPIFailure(string $entity, string $action[, array<string|int, mixed> $params = [] ][, string $expectedErrorMessage = NULL ][, null $extraOutput = NULL ]) : array<string|int, mixed>|int
so we can ensure they fail where expected & throw exceptions without litterering the test with checks
Parameters
- $entity : string
- $action : string
- $params : array<string|int, mixed> = []
- $expectedErrorMessage : string = NULL
-
Error.
- $extraOutput : null = NULL
Return values
array<string|int, mixed>|intcallAPISuccess()
wrap api functions.
public
callAPISuccess(string $entity, string $action[, array<string|int, mixed> $params = [] ][, mixed $checkAgainst = NULL ]) : array<string|int, mixed>|int
so we can ensure they succeed & throw exceptions without litterering the test with checks
Parameters
- $entity : string
- $action : string
- $params : array<string|int, mixed> = []
- $checkAgainst : mixed = NULL
-
Optional value to check result against, implemented for getvalue,. getcount, getsingle. Note that for getvalue the type is checked rather than the value for getsingle the array is compared against an array passed in - the id is not compared (for better or worse )
Return values
array<string|int, mixed>|intcallAPISuccessGetCount()
This function exists to wrap api getValue function & check the result so we can ensure they succeed & throw exceptions without littering the test with checks There is a type check in this
public
callAPISuccessGetCount(string $entity, array<string|int, mixed> $params[, int $count = NULL ]) : array<string|int, mixed>|int
Parameters
- $entity : string
- $params : array<string|int, mixed>
- $count : int = NULL
Return values
array<string|int, mixed>|intcallAPISuccessGetSingle()
This function exists to wrap api getsingle function & check the result so we can ensure they succeed & throw exceptions without litterering the test with checks
public
callAPISuccessGetSingle(string $entity, array<string|int, mixed> $params[, array<string|int, mixed> $checkAgainst = NULL ]) : array<string|int, mixed>|int
Parameters
- $entity : string
- $params : array<string|int, mixed>
- $checkAgainst : array<string|int, mixed> = NULL
-
Array to compare result against.
- boolean
- integer
- double
- string
- array
- object
Return values
array<string|int, mixed>|intcallAPISuccessGetValue()
This function wraps the getValue api and checks the result.
public
callAPISuccessGetValue(string $entity, array<string|int, mixed> $params[, string $type = NULL ]) : array<string|int, mixed>|int
Parameters
- $entity : string
- $params : array<string|int, mixed>
- $type : string = NULL
-
Per http://php.net/manual/en/function.gettype.php possible types.
- boolean
- integer
- double
- string
- array
- object
Return values
array<string|int, mixed>|intcivicrm_api()
A stub for the API interface. This can be overriden by subclasses to change how the API is called.
public
civicrm_api(mixed $entity, mixed $action[, array<string|int, mixed> $params = [] ]) : array<string|int, mixed>|int
Parameters
- $entity : mixed
- $action : mixed
- $params : array<string|int, mixed> = []
Return values
array<string|int, mixed>|intcontactDelete()
Delete contact, ensuring it is not the domain contact
public
contactDelete(int $contactID) : void
Parameters
- $contactID : int
-
Contact ID to delete
createLoggedInUser()
Emulate a logged in user since certain functions use that.
public
createLoggedInUser() : int
value to store a record in the DB (like activity)
Tags
Return values
int —Contact ID of the created user.
dataProvider()
public
dataProvider() : array<string|int, mixed>
Return values
array<string|int, mixed>groupContactCreate()
Function to add a Group.
public
groupContactCreate(int $groupID[, int $totalCount = 10 ][, bool $random = FALSE ]) : int
Parameters
- $groupID : int
- $totalCount : int = 10
- $random : bool = FALSE
Tags
Return values
int —groupId of created group
groupCreate()
Add a Group.
public
groupCreate([array<string|int, mixed> $params = [] ][, string $identifier = 'group' ]) : int
Parameters
- $params : array<string|int, mixed> = []
- $identifier : string = 'group'
Return values
int —groupId of created group
groupDelete()
Delete a Group.
public
groupDelete(int $gid) : mixed
Parameters
- $gid : int
householdCreate()
Generic function to create Household, to be used in test cases
public
householdCreate([array<string|int, mixed> $params = [] ][, int|string $identifier = 'household_0' ]) : int
Parameters
- $params : array<string|int, mixed> = []
-
parameters for civicrm_contact_add api function call
- $identifier : int|string = 'household_0'
-
If the identifier is numeric (discouraged) it will affect which contact is loaded. Numeric identifiers and values for random other than FALSE are generally discouraged in favour if specifying data in params where variety is needed.
Return values
int —id of Household created
individualCreate()
Generic function to create Individual, to be used in test cases
public
individualCreate([array<string|int, mixed> $params = [] ][, int|string $identifier = 'individual_0' ][, bool $random = FALSE ]) : int
Parameters
- $params : array<string|int, mixed> = []
-
parameters for civicrm_contact_add api function call
- $identifier : int|string = 'individual_0'
-
If the identifier is numeric (discouraged) it will affect which contact is loaded. Numeric identifiers and values for random other than FALSE are generally discouraged in favour if specifying data in params where variety is needed.
- $random : bool = FALSE
-
Random is deprecated.
Return values
int —id of Individual created
organizationCreate()
Generic function to create Organisation, to be used in test cases
public
organizationCreate([array<string|int, mixed> $params = [] ][, int|string $identifier = 'organization_0' ]) : int
Parameters
- $params : array<string|int, mixed> = []
-
parameters for civicrm_contact_add api function call
- $identifier : int|string = 'organization_0'
-
If the identifier is numeric (discouraged) it will affect which contact is loaded. Numeric identifiers and values for random other than FALSE are generally discouraged in favour if specifying data in params where variety is needed.
Return values
int —id of Organisation created
runApi4Legacy()
Emulate v3 syntax so we can run api3 tests on v4
public
runApi4Legacy(mixed $v3Entity, mixed $v3Action[, array<string|int, mixed> $v3Params = [] ]) : array<string|int, mixed>|int
Parameters
- $v3Entity : mixed
- $v3Action : mixed
- $v3Params : array<string|int, mixed> = []
Tags
Return values
array<string|int, mixed>|intsampleContact()
Helper function for getting sample contact properties.
public
sampleContact(string $contact_type[, int $seq = 0 ][, bool $random = FALSE ]) : array<string|int, mixed>
Parameters
- $contact_type : string
-
enum contact type: Individual, Organization
- $seq : int = 0
-
sequence number for the values of this type
- $random : bool = FALSE
Return values
array<string|int, mixed> —properties of sample contact (ie. $params for API call)
setUpHeadless()
Civi\Test has many helpers, like install(), uninstall(), sql(), and sqlFile(). See: https://github.com/civicrm/org.civicrm.testapalooza/blob/master/civi-test.md
public
setUpHeadless() : CiviEnvBuilder
Return values
CiviEnvBuildertestAll()
Test CRM_Contact_Form_Search_Custom_Group::all().
public
testAll(array<string|int, mixed> $formValues, array<string|int, mixed> $contactIDs) : void
Parameters
- $formValues : array<string|int, mixed>
- $contactIDs : array<string|int, mixed>
Tags
testColumns()
Test CRM_Contact_Form_Search_Custom_Group::columns() It returns an array of translated name => keys
public
testColumns() : void
testContactIDs()
Test CRM_Contact_Form_Search_Custom_Group::contactIDs().
public
testContactIDs(mixed $formValues, mixed $contactIDs) : void
Parameters
- $formValues : mixed
- $contactIDs : mixed
Tags
testSummary()
Test CRM_Contact_Form_Search_Custom_Group::summary() It returns NULL
public
testSummary() : void
testTemplateFile()
Test CRM_Contact_Form_Search_Custom_Group::templateFile() Returns the path to the file as a string
public
testTemplateFile() : void
testWhereFalse()
Test CRM_Contact_Form_Search_Custom_Group::where( ) With false argument it returns '(1)'
public
testWhereFalse() : void
testWhereNoArgs()
Test CRM_Contact_Form_Search_Custom_Group::where( ) With no arguments it returns '(1)'
public
testWhereNoArgs() : void
testWhereTrue()
Test CRM_Contact_Form_Search_Custom_Group::where( ) With true argument it returns list of contact IDs
public
testWhereTrue() : void
versionThreeAndFour()
Get the api versions to test.
public
versionThreeAndFour() : array<string|int, mixed>
Return values
array<string|int, mixed>createTestEntity()
Create an entity, recording it's details for tearDown.
protected
createTestEntity(string $entity, array<string|int, mixed> $values[, string $identifier = 'default' ]) : array<string|int, mixed>
Parameters
- $entity : string
- $values : array<string|int, mixed>
- $identifier : string = 'default'
Return values
array<string|int, mixed>runApi4LegacyChain()
protected
runApi4LegacyChain(string $key, mixed $params, string $mainEntity, array<string|int, mixed> $result, bool $sequential) : array<string|int, mixed>
Parameters
- $key : string
- $params : mixed
- $mainEntity : string
- $result : array<string|int, mixed>
- $sequential : bool
Tags
Return values
array<string|int, mixed>setTestEntity()
Set the test entity on the class for access.
protected
setTestEntity(string $entity, array<string|int, mixed> $values, string $identifier) : void
This follows the ids patter and also the api4TestTrait pattern.
Parameters
- $entity : string
- $values : array<string|int, mixed>
- $identifier : string
setTestEntityID()
protected
setTestEntityID(string $entity, int $id, string $identifier) : void
Parameters
- $entity : string
- $id : int
- $identifier : string
setup()
Set up tags and groups for test.
protected
setup() : void
_contactCreate()
Private helper function for calling civicrm_contact_add.
private
_contactCreate(array<string|int, mixed> $params[, string $identifier = 'Contact' ]) : int
Parameters
- $params : array<string|int, mixed>
-
For civicrm_contact_add api function call.
- $identifier : string = 'Contact'
Return values
int —id of contact created
replaceFormValuesPlaceholders()
Replace placeholder form values with created IDS.
private
replaceFormValuesPlaceholders(array<string|int, mixed> $formValues) : array<string|int, mixed>
Parameters
- $formValues : array<string|int, mixed>
Return values
array<string|int, mixed>replaceIDSPlaceholders()
private
replaceIDSPlaceholders(array<string|int, mixed> $contactIDs) : array<string|int, mixed>
Parameters
- $contactIDs : array<string|int, mixed>