Completed
Push — master ( a85cff...3e66dc )
by Benjamin
03:04
created

SettingsMenuTest   A

Complexity

Total Complexity 3

Size/Duplication

Total Lines 36
Duplicated Lines 0 %

Importance

Changes 4
Bugs 0 Features 0
Metric Value
dl 0
loc 36
rs 10
c 4
b 0
f 0
wmc 3

3 Methods

Rating   Name   Duplication   Size   Complexity  
A test_settings_page_is_added_to_settings_menu() 0 7 1
A setUp() 0 5 1
A test_enable_option_is_created() 0 10 1
1
<?php
2
/**
3
 * Class SettingsMenuTest
4
 *
5
 * @package WPSiteMonitor
6
 * @since 1.0.0
7
 */
8
9
use Tests\Test_Case;
10
use WPSiteMonitor\Settings_Menu;
11
12
/**
13
 * Settings Page test case.
14
 */
15
class SettingsMenuTest extends Test_Case {
16
17
	protected $settings_menu;
18
19
	public function setUp() {
20
		parent::setUp();
21
22
		$this->settings_menu = new Settings_Menu();
23
		$this->log_in();
24
	}
25
26
	/**
27
	 * Assert that the settings page is added to the settings menu successfully.
28
	 */
29
	public function test_settings_page_is_added_to_settings_menu() {
30
		global $submenu;
31
		$this->settings_menu->display_settings_page();
32
33
		$this->assertEquals( admin_url() . 'options-general.php?page=' . self::OPTION_GROUP, menu_page_url( self::OPTION_GROUP, false ) );
34
		$this->assertEquals( 'WP Site Monitor Settings', $submenu['options-general.php'][0][3] );
35
		$this->assertEquals( 'WP Site Monitor', $submenu['options-general.php'][0][0] );
36
	}
37
38
	/**
39
	 * Assert that the enable/disable toggle is registered with the settings API.
40
	 */
41
	public function test_enable_option_is_created() {
42
		global $new_whitelist_options, $wp_settings_sections, $wp_settings_fields;
43
		$this->settings_menu->init_settings();
44
45
		$section_id = self::OPTION_NAME . '_section';
46
		$this->assertContains(self::OPTION_NAME, $new_whitelist_options[self::OPTION_GROUP] );
47
		$this->assertEquals( $section_id, $wp_settings_sections[self::OPTION_GROUP][$section_id]['id'] );
48
		$this->assertEquals( 'Enable/Disable WP Site Monitor', $wp_settings_sections[self::OPTION_GROUP][$section_id]['title'] );
49
		$this->assertEquals( self::OPTION_NAME, $wp_settings_fields[self::OPTION_GROUP][$section_id][self::OPTION_NAME]['id'] );
50
		$this->assertEquals( 'Enable WP Site Monitor', $wp_settings_fields[self::OPTION_GROUP][$section_id][self::OPTION_NAME]['title'] );
51
	}
52
}
53