AlkantarClanX12

Your IP : 216.73.217.24


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

<?php

namespace Tests;

use WP_User;
use Leadbox\Careers\Hooks\ThePost;

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

    public function setUp()
    {
        // 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()
    {
        $careers = get_posts([
            'post_type' => 'careers_member',
            'posts_per_page' => -1
        ]);

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

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

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

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

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

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

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

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

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