Merge pull request #19921 from eileenmcnaughton/tear
[civicrm-core.git] / tests / phpunit / CRM / Core / Smarty / plugins / CrmMoneyTest.php
1 <?php
2
3 /**
4 * Class CRM_Core_Smarty_plugins_CrmMoneyTest
5 * @group headless
6 */
7 class CRM_Core_Smarty_plugins_CrmMoneyTest extends CiviUnitTestCase {
8
9 public function setUp(): void {
10 parent::setUp();
11 require_once 'CRM/Core/Smarty.php';
12
13 // Templates should normally be file names, but for unit-testing it's handy to use "string:" notation
14 require_once 'CRM/Core/Smarty/resources/String.php';
15 civicrm_smarty_register_string_resource();
16 }
17
18 /**
19 * @return array
20 */
21 public function moneyCases() {
22 $cases = [];
23 $cases[] = ['$ 4.00', '{assign var="amount" value="4.00"}{$amount|crmMoney:USD}'];
24 $cases[] = ['€ 1,234.00', '{assign var="amount" value="1234.00"}{$amount|crmMoney:EUR}'];
25 $cases[] = [
26 '$ <input size="10" style="background-color:#EBECE4" readonly="readonly" name="eachPaymentAmount" type="text" id="eachPaymentAmount" class="crm-form-text">',
27 '{assign var="amount" value=\'<input size="10" style="background-color:#EBECE4" readonly="readonly" name="eachPaymentAmount" type="text" id="eachPaymentAmount" class="crm-form-text">\'}{$amount|crmMoney:USD}',
28 ];
29 return $cases;
30 }
31
32 /**
33 * @dataProvider moneyCases
34 * @param $expected
35 * @param $input
36 */
37 public function testMoney($expected, $input) {
38 $smarty = CRM_Core_Smarty::singleton();
39 $actual = $smarty->fetch('string:' . $input);
40 $this->assertEquals($expected, $actual, "Process input=[$input]");
41 }
42
43 }