1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
<?php
namespace Integration\Db;
use lucatume\WPBrowser\TestCase\WPTestCase; use SolidWP\Mail\Admin\SettingsScreen; use SolidWP\Mail\Repository\SettingsRepository;
class SettingsRepositoryTest extends WPTestCase {
private SettingsRepository $repository;
public function setUp(): void { parent::setUp(); $settings_screen = new SettingsScreen(); $this->repository = new SettingsRepository( $settings_screen ); }
/** * @dataProvider settingsDataProvider * @param array $settings The settings to set * @param bool $expectedLogsDisabled The expected result for logs_disabled() * @param bool $expectedUseUnmatched The expected result for use_unmatched_connections() */ public function testSettings( array $settings, bool $expectedLogsDisabled, bool $expectedUseUnmatched ): void { update_option( SettingsScreen::SETTINGS_SLUG, $settings );
$logsDisabled = $this->repository->logs_disabled(); $useUnmatched = $this->repository->use_unmatched_connections();
$this->assertSame( $expectedLogsDisabled, $logsDisabled ); $this->assertSame( $expectedUseUnmatched, $useUnmatched ); }
/** * Data provider for combined settings test cases. * * @return array<string, array{settings: array, expectedLogsDisabled: bool, expectedUseUnmatched: bool}> */ public function settingsDataProvider(): array { return [ 'both disabled' => [ 'settings' => [ 'disable_logs' => 'no', 'use_unmatched_connections' => 'no', ], 'expectedLogsDisabled' => false, 'expectedUseUnmatched' => false, ], 'both enabled' => [ 'settings' => [ 'disable_logs' => 'yes', 'use_unmatched_connections' => 'yes', ], 'expectedLogsDisabled' => true, 'expectedUseUnmatched' => true, ], 'mixed settings' => [ 'settings' => [ 'disable_logs' => 'yes', 'use_unmatched_connections' => 'no', ], 'expectedLogsDisabled' => true, 'expectedUseUnmatched' => false, ], 'partial settings (only disable_logs)' => [ 'settings' => [ 'disable_logs' => 'yes', ], 'expectedLogsDisabled' => true, 'expectedUseUnmatched' => false, ], 'partial settings (only use_unmatched_connections)' => [ 'settings' => [ 'use_unmatched_connections' => 'yes', ], 'expectedLogsDisabled' => false, 'expectedUseUnmatched' => true, ], 'mixed valid and invalid values' => [ 'settings' => [ 'disable_logs' => 'yes', 'use_unmatched_connections' => 'invalid', ], 'expectedLogsDisabled' => true, 'expectedUseUnmatched' => false, ], ]; } }
|