Skip to content
Closed
Changes from 1 commit
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
102d602
Adds empty bookmark tests.
Apr 7, 2021
a93df37
Adds tests when given bookmark instance.
Apr 7, 2021
dab9e40
Refactored to reduce params init and formatting expected data.
Apr 7, 2021
ae4c802
Speed up the test setup/teardown.
Apr 8, 2021
19a6c5e
Split out the data provider for the groups of tests.
Apr 8, 2021
58013e7
Improves the init_func_params for overriding the bookmark.
Apr 8, 2021
080cc85
Change param to arg to better match PHP docs.
Apr 8, 2021
bb83aee
Adds unhappy path to empty bookmark tests.
Apr 8, 2021
1d3f012
Adds unhappy path test cases to bookmark instance tests.
Apr 8, 2021
f97b83a
Adds @covers.
Apr 8, 2021
90b7062
Adds else path when global link is set and its link_id matches given …
Apr 8, 2021
3d2851d
Adds Path 4 - test pulling from cache when existing link ID given.
Apr 8, 2021
e365e5d
Adds Path 5 tests - pulls existing record from db.
Apr 8, 2021
fd71f83
Adds Path 6 - requested link ID does not exist in db.
Apr 8, 2021
0710645
Improves documentation and consistency.
Apr 8, 2021
9a50500
Rearranges the else branch tests to follow logic flow.
Apr 8, 2021
87caec6
Combines path 2 tests for consistency.
Apr 8, 2021
a4a6ded
Create bookmark in setUp to avoid downstream conflicts.
Apr 8, 2021
c50aeb9
Removes is numeric assertion.
Apr 8, 2021
3111683
Removes deleting bookmark from cache during tearDown.
Apr 23, 2021
6b340f0
Fixes multiline comments and removes empty line in DocBlock.
Apr 23, 2021
829df40
Create and delete bookmark using wp static methods.
Apr 23, 2021
263f7cc
Use custom WP assertSameSets.
Apr 23, 2021
9fcb19b
Removes changes to package-lock.json from PR.
Apr 25, 2021
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Improves documentation and consistency.
  • Loading branch information
hellofromtonya committed Apr 8, 2021
commit 071064514ecccfa3711eaf94865925708cab1e9a
63 changes: 36 additions & 27 deletions tests/phpunit/tests/bookmark/getBookmark.php
Original file line number Diff line number Diff line change
Expand Up @@ -35,35 +35,42 @@ public function tearDown() {
}

/**
* Path 1A: Given empty bookmark and global link exists.
*
* @dataProvider data_when_empty_bookmark
*/
public function test_should_return_null( $args ) {
public function test_should_return_global_link_in_requested_output_format( $args ) {
$GLOBALS['link'] = self::$bookmark;
$args = $this->init_func_args( $args, 0 );
$actual_bookmark = get_bookmark( ...$args );

$this->assertArrayNotHasKey( 'link', $GLOBALS );
$this->assertNull( $actual_bookmark );
$expected = $this->maybe_format_expected_data( $args, $GLOBALS['link'] );

$this->assertArrayHasKey( 'link', $GLOBALS );
$this->assertSame( $expected, $actual_bookmark );
// Should bypass the cache.
$this->assertFalse( wp_cache_get( self::$bookmark->link_id, 'bookmark' ) );
}

/**
* Path 1B: Given empty bookmark and global link does not exist.
*
* @dataProvider data_when_empty_bookmark
*/
public function test_should_return_global_link_in_requested_output_format( $args ) {
$GLOBALS['link'] = self::$bookmark;
$args = $this->init_func_args( $args, 0 );
$actual_bookmark = get_bookmark( ...$args );
public function test_should_return_null( $args ) {
$args = $this->init_func_args( $args, 0 );

$expected = $this->maybe_format_expected_data( $args, $GLOBALS['link'] );
// Run the function and test results.
$actual_bookmark = get_bookmark( ...$args );

$this->assertArrayHasKey( 'link', $GLOBALS );
$this->assertSame( $expected, $actual_bookmark );
// Should bypass the cache.
$this->assertArrayNotHasKey( 'link', $GLOBALS );
$this->assertNull( $actual_bookmark );
$this->assertFalse( wp_cache_get( self::$bookmark->link_id, 'bookmark' ) );
}

/**
* Path 1 data provider, i.e. when given empty bookmark.
*/
public function data_when_empty_bookmark() {
return array(
// Unhappy path.
Expand Down Expand Up @@ -113,6 +120,8 @@ public function data_when_empty_bookmark() {
}

/**
* Path 2: Bookmark instance is given.
*
* @dataProvider data_when_instance_bookmark
*/
public function test_should_cache_bookmark_when_given_instance( $args ) {
Expand All @@ -122,6 +131,7 @@ public function test_should_cache_bookmark_when_given_instance( $args ) {
// Check the cache does not exist before the test.
$this->assertFalse( wp_cache_get( $bookmark->link_id, 'bookmark' ) );

// Run the function and test results.
get_bookmark( ...$args );

// Check the bookmark was cached.
Expand All @@ -135,14 +145,17 @@ public function test_should_cache_bookmark_when_given_instance( $args ) {
public function test_should_return_in_requested_output_format_when_given_instance( $args ) {
$args = $this->init_func_args( $args );
$bookmark = $args[0];

$expected = $this->maybe_format_expected_data( $args, $bookmark );

// Run the function and test results.
$actual_bookmark = get_bookmark( ...$args );

$this->assertSame( $expected, $actual_bookmark );
}

/**
* Path 2 data provider, i.e. when bookmark instance is given.
*/
public function data_when_instance_bookmark() {
return array(
// Unhappy path.
Expand Down Expand Up @@ -196,14 +209,12 @@ public function data_when_instance_bookmark() {
public function test_should_return_global_when_else( $args ) {
$args = $this->init_func_args( $args, self::$bookmark->link_id );
$GLOBALS['link'] = self::$bookmark;
$expected = $this->maybe_format_expected_data( $args, $GLOBALS['link'] );

// Run the function and test results.
$actual_bookmark = get_bookmark( ...$args );

$expected = $this->maybe_format_expected_data( $args, $GLOBALS['link'] );

$this->assertSame( $expected, $actual_bookmark );

// Should not cache the bookmark.
$this->assertFalse( wp_cache_get( self::$bookmark->link_id, 'bookmark' ) );
}

Expand All @@ -217,12 +228,12 @@ public function test_should_return_global_when_else( $args ) {
public function test_should_return_cached_bookmark_when_given_existing_link_id( $args ) {
// Cache the bookmark instance to setup the test.
wp_cache_add( self::$bookmark->link_id, self::$bookmark, 'bookmark' );
$args = $this->init_func_args( $args, self::$bookmark->link_id );
$args = $this->init_func_args( $args, self::$bookmark->link_id );
$expected = $this->maybe_format_expected_data( $args, self::$bookmark );

// Run the function and test results.
$actual_bookmark = get_bookmark( ...$args );

$expected = $this->maybe_format_expected_data( $args, self::$bookmark );

// For non-array output type, use assetEquals. Why? The object pulled from cache will have the same
// property values but will be a different object than the expected object.
if ( is_object( $expected ) ) {
Expand All @@ -244,20 +255,17 @@ public function test_should_return_cached_bookmark_when_given_existing_link_id(
* @param array $args Function argument list.
*/
public function test_should_return_existing_bookmark_from_database( $args ) {
$args = $this->init_func_args( $args, self::$bookmark->link_id );
$args = $this->init_func_args( $args, self::$bookmark->link_id );
$expected = $this->maybe_format_expected_data( $args, self::$bookmark );

// Validate it will run path 5 by checking:
// - the bookmark is not cached
// - global link does not exist
// - a bookmark link ID is given
// Validate it will run path 5.
$this->assertFalse( wp_cache_get( self::$bookmark->link_id, 'bookmark' ) );
$this->assertArrayNotHasKey( 'link', $GLOBALS );
$this->assertIsNumeric( $args[0] );

// Run the function and test results.
$actual_bookmark = get_bookmark( ...$args );

$expected = $this->maybe_format_expected_data( $args, self::$bookmark );

// For non-array output type, use assetEquals. Why? The object pulled from the database will have the same
// property values but will be a different object than the expected object.
if ( is_object( $expected ) ) {
Expand Down Expand Up @@ -297,7 +305,8 @@ public function test_should_return_null_when_bookmark_not_in_database( $args ) {
}

/**
* Data provider covers the "else" branch, i.e. when the bookmark argument is not empty and not an object.
* Path 3+ data provider which covers the "else" branch, i.e. when the bookmark argument is not empty and
* not an object.
*/
public function data_when_else() {
return array(
Expand Down