Merge pull request #16004 from civicrm/5.20
[civicrm-core.git] / tests / phpunit / CRMTraits / Page / PageTestTrait.php
1 <?php
2 /*
3 +--------------------------------------------------------------------+
4 | Copyright CiviCRM LLC. All rights reserved. |
5 | |
6 | This work is published under the GNU AGPLv3 license with some |
7 | permitted exceptions and without any warranty. For full license |
8 | and copyright information, see https://civicrm.org/licensing |
9 +--------------------------------------------------------------------+
10 */
11
12 /**
13 * Trait CRMTraits_Page_PageTestTrait
14 *
15 * Trait for testing quickform pages in unit tests.
16 */
17 trait CRMTraits_Page_PageTestTrait {
18
19 /**
20 * Content from the rendered page.
21 *
22 * @var string
23 */
24 protected $pageContent;
25
26 /**
27 * @var \CRM_Core_Page
28 */
29 protected $page;
30
31 /**
32 * @var string
33 */
34 protected $tplName;
35
36 /**
37 * Variables assigned to smarty.
38 *
39 * @var array
40 */
41 protected $smartyVariables = [];
42
43 protected $context;
44
45 /**
46 * @param string $content
47 * @param string $context
48 * @param string $tplName
49 * @param CRM_Core_Page $object
50 */
51 public function checkPageContent(&$content, $context, $tplName, &$object) {
52 $this->pageContent = $content;
53 $this->tplName = $tplName;
54 $this->page = $object;
55 $this->context = $context;
56 // Ideally we would validate $content as valid html here.
57 // Suppress console output.
58 $content = '';
59 $this->smartyVariables = CRM_Core_Smarty::singleton()->get_template_vars();
60 }
61
62 /**
63 * Assert that the page output contains the expected strings.
64 *
65 * @param $expectedStrings
66 */
67 protected function assertPageContains($expectedStrings) {
68 unset($this->smartyVariables['config']);
69 unset($this->smartyVariables['session']);
70 foreach ($expectedStrings as $expectedString) {
71 $this->assertContains($expectedString, $this->pageContent, print_r($this->contributions, TRUE) . print_r($this->smartyVariables, TRUE));
72 }
73 }
74
75 /**
76 * Assert that the expected variables have been assigned to Smarty.
77 *
78 * @param $expectedVariables
79 */
80 protected function assertSmartyVariables($expectedVariables) {
81 foreach ($expectedVariables as $variableName => $expectedValue) {
82 $this->assertEquals($expectedValue, $this->smartyVariables[$variableName]);
83 }
84 }
85
86 /**
87 * Check an array assigned to smarty for the inclusion of the expected variables.
88 *
89 * @param string $variableName
90 * @param $index
91 * @param $expected
92 */
93 protected function assertSmartyVariableArrayIncludes($variableName, $index, $expected) {
94 $smartyVariable = $this->smartyVariables[$variableName];
95 if ($index !== NULL) {
96 $smartyVariable = $smartyVariable[$index];
97 }
98 foreach ($expected as $key => $value) {
99 $this->assertEquals($value, $smartyVariable[$key], 'Checking ' . $key);
100 }
101 }
102
103 /**
104 * Set up environment to listen for page content.
105 */
106 protected function listenForPageContent() {
107 $this->hookClass->setHook('civicrm_alterContent', [
108 $this,
109 'checkPageContent',
110 ]);
111 }
112
113 }