Skip to content

Commit 385580c

Browse files
committed
Add a basic test for webhook admin page
1 parent fe2b77d commit 385580c

1 file changed

Lines changed: 92 additions & 0 deletions

File tree

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
<?php
2+
3+
namespace WP_Ultimo\Admin_Pages;
4+
5+
use WP_Ajax_UnitTestCase;
6+
use WP_Ultimo\Models\Webhook;
7+
use WP_Ultimo\Faker;
8+
9+
class Webhook_Edit_Admin_PageTest extends WP_Ajax_UnitTestCase {
10+
11+
/**
12+
* Instance of Webhook_Edit_Admin_Page to test.
13+
*
14+
* @var Webhook_Edit_Admin_Page
15+
*/
16+
protected $admin_page;
17+
18+
/**
19+
* Faker instance
20+
*
21+
* @var Faker
22+
*/
23+
protected $faker;
24+
25+
/**
26+
* Sets up the test scenario.
27+
*/
28+
public function setUp(): void {
29+
parent::setUp();
30+
31+
// Initialize faker
32+
$this->faker = new Faker();
33+
34+
// Create the admin page instance
35+
$this->admin_page = new Webhook_Edit_Admin_Page();
36+
37+
// Generate a fake webhook using the Faker class
38+
$this->faker->generate_fake_webhook(1);
39+
}
40+
41+
/**
42+
* Test output_default_widget_payload outputs valid payload data.
43+
*/
44+
public function test_output_default_widget_payload_with_valid_event(): void {
45+
// Get the generated webhook from faker
46+
$webhooks = $this->faker->get_fake_data_generated('webhooks');
47+
$webhook = $webhooks[0];
48+
49+
// Set up the method to return our fake webhook
50+
$this->admin_page = $this->getMockBuilder(Webhook_Edit_Admin_Page::class)
51+
->setMethods(['get_object'])
52+
->getMock();
53+
$this->admin_page->method('get_object')->willReturn($webhook);
54+
55+
ob_start();
56+
$this->admin_page->output_default_widget_payload();
57+
$output = ob_get_clean();
58+
59+
$this->assertStringContainsString(
60+
'Loading Payload',
61+
$output,
62+
'The payload output does not match the expected JSON data.'
63+
);
64+
$this->assertGreaterThan(100, strlen($output), 'The payload output is too short.');
65+
}
66+
67+
/**
68+
* Test output_default_widget_payload handles missing event payload.
69+
*/
70+
public function test_output_default_widget_payload_with_no_payload(): void {
71+
// Create a webhook with an unknown event
72+
$webhook = wu_create_webhook(
73+
[
74+
'name' => 'Test Webhook',
75+
'webhook_url' => 'https://example.com',
76+
'event' => 'unknown_event',
77+
'active' => true,
78+
]
79+
);
80+
81+
$this->admin_page = $this->getMockBuilder(Webhook_Edit_Admin_Page::class)
82+
->setMethods(['get_object'])
83+
->getMock();
84+
$this->admin_page->method('get_object')->willReturn($webhook);
85+
86+
ob_start();
87+
$this->admin_page->output_default_widget_payload();
88+
$output = ob_get_clean();
89+
90+
$this->assertStringContainsString('{}', trim($output), 'The payload output for an unknown event should be an empty JSON object.');
91+
}
92+
}

0 commit comments

Comments
 (0)