AlkantarClanX12

Your IP : 216.73.217.24


Current Path : /www/capitalgmcbuickregina_830/public/wp-content/plugins/leadbox-staff/tests/
Upload File :
Current File : /www/capitalgmcbuickregina_830/public/wp-content/plugins/leadbox-staff/tests/ShortcodeTest.php

<?php

namespace Tests;

use WP_User;
use Leadbox\Staff\Hooks\ThePost;

class ShortcodeTest extends StaffPluginTestCase
{
    public $mockPosts;
    public $mockTerms;
    public $mockQuery;

    public function setUp(): void
    {
        // User required for post-factory taxonomies
        $user_id = $this->factory->user->create();
        $user = new WP_User($user_id);
        $user->set_role('administrator');
        wp_set_current_user($user->ID);

        parent::setUp();

        $this->mockTerms = $this->factory->term->create_many(10, [], $this->term_generation_definitions);
        $this->mockPosts = $this->factory->post->create_many(10, [], $this->post_generation_definitions);
    }

    public function test_shortcode_generic()
    {
        $staff = get_posts([
            'post_type' => 'staff_member',
            'posts_per_page' => -1
        ]);

        $response = do_shortcode('[staff]');

        foreach ($staff as $member) {
            $snippet = 'mailto:' . get_field('email', $member->ID);
            $this->assertIsNumeric(strpos($response, $snippet), 'Needle not found in string.');
        }
    }

    public function test_shortcode_department_unlimited()
    {
        $terms = array_map(function ($term) {
            return get_term($term, 'departments')->slug;
        }, $this->mockTerms);

        $this->assertRenderedShortcode($terms[0]);
    }

    public function test_shortcode_department_limited()
    {
        $terms = array_map(function ($term) {
            return get_term($term, 'departments')->slug;
        }, $this->mockTerms);

        $this->assertRenderedShortcode($terms[1]);
    }

    public function assertRenderedShortcode($term)
    {
        $staff = get_posts([
            'post_type' => 'staff_member',
            'posts_per_page' => -1,
            'tax_query' => array(
                array(
                    'taxonomy' => 'departments',
                    'field' => 'slug',
                    'terms' => $term,
                ),
            ),
        ]);

        $response = do_shortcode("[staff type=\"{$term}\"]");

        foreach ($staff as $member) {
            $snippet = 'mailto:' . get_field('email', $member->ID);
            $this->assertIsNumeric(strpos($response, $snippet));
        }

        $responseCount = count(explode('<div class="staff-member', $response)) - 1;
        $this->assertEquals($responseCount, count($staff));
    }
}