HEX
Server: Apache
System: Linux srv-plesk28.ps.kz 5.14.0-284.18.1.el9_2.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Jun 29 17:06:27 EDT 2023 x86_64
User: greencl1 (10085)
PHP: 8.1.33
Disabled: apache_setenv,dl,eval,exec,openlog,passthru,pcntl_exec,pcntl_fork,popen,posix_getpwuid,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,proc_close,proc_get_status,proc_nice,proc_open,proc_terminate,shell_exec,socket_create,socket_create_listen,socket_create_pair,syslog,system,socket_listen,stream_socket_server
Upload Files
File: /var/www/vhosts/greenclinic.kz/test.greenclinic.kz/vendor/october/rain/tests/Parse/BracketTest.php
<?php

use October\Rain\Parse\Bracket as TextParser;

class BracketTest extends TestCase
{

    public function testParseCombination()
    {
        $content = '{welcome}';
        $content .= '{posts}{title}{/posts}';
        $vars = [
            'welcome' => 'Hello!',
            'posts' => [
                ['title' => 'Foo'],
                ['title' => 'Bar'],
            ]
        ];
        $result = TextParser::parse($content, $vars);
        $this->assertEquals('Hello!FooBar', $result);
    }

    public function testParseSingleKey()
    {
        $content = '{foo} {foo} {foo}';
        $vars = ['foo' => 'bar'];
        $result = TextParser::parse($content, $vars);
        $this->assertEquals('bar bar bar', $result);
    }

    public function testParseLoopingKey()
    {
        $content = '';
        $content .= '{posts}{title}{/posts}';
        // $content .= '{posts}{sound}{/posts}';
        $vars = ['posts' => [
            ['title' => 'Dog', 'sound' => 'Woof!'],
            ['title' => 'Cat', 'sound' => 'Meow!'],
        ]];
        $result = TextParser::parse($content, $vars);
        $this->assertEquals('DogCat', $result);
    }

    public function testParseWithFilters()
    {
        $filters = [];
        $filters['upper'] = function($value) { return strtoupper($value); };
        $filters['lower'] = function($value) { return strtolower($value); };

        $content = '';
        $content .= '{foo} {foo|upper} {foo|lower} ';
        $content .= '{posts}{title}{title|upper}{title|lower}{/posts}';
        $vars = [
            'foo' => 'Bar',
            'posts' => [
                ['title' => 'Dog'],
                ['title' => 'Cat'],
            ]
        ];
        $result = TextParser::parse($content, $vars, ['filters' => $filters]);
        $this->assertEquals('Bar BAR bar DogDOGdogCatCATcat', $result);
    }

}