ryanwelcher
2/26/2016 - 7:04 PM

Core Unit Test Example

Core Unit Test Example

<?php

/**
 *
 *
 */
Tests_Component_FunctionInCamelCase extends WP_UnitTestCase {


	/**
	 * Use this to create items that are needed for every test.
	 * This is run before each test.
	 *
	 * Optional.
	 */
	function setUp() {}

	/**
	 * Use this to reset the test environment
	 * This is run after each test.
	 *
	 * Optional.
	 */
	function tearDown() {}


	function test_desciption_of_what_is_expected() {

		// 1: Do any setup needed for this specific test.
		$user = $this->factory()->user->create_and_get( array(
			'display_name' => 'John Doe',
		) );
		$post = $this->factory()->post->create_and_get( array(
			'post_author' => $user->ID,
			'post_title'  => 'Hello World',
		));

		add_filter( 'the_title', array( $this, 'filter_prepend_to_the_title') );

		// 2: Get the data we need to run the assertions.
		$title = get_the_title( $post->ID );

		// 3: Run any cleanup needed so we don't interfere with other tests.
		remove_filter(  'the_title', array( $this, 'filter_prepend_to_the_title') );

		// 4: Run the assertions. We do this after cleanup because the test will stop running if the assertion fails.
		$this->assertSame( 'Hello World with tests', $title );
	}

	/**
	 * Filter callback for the test above
	 * @param $title
	 *
	 * @return string
	 */
	function filter_prepend_to_the_title( $title ) {
		return $title . ' with tests';
	}
}