make();
expect(fn () => $handler->produce($plugin))
->toThrow(RuntimeException::class, 'does not implement produce()');
});
test('default handle webhook returns 404 json', function (): void {
$handler = new class extends PluginHandler
{
public function key(): string
{
return 'stub';
}
public function name(): string
{
return 'Stub';
}
public function description(): string
{
return 'Stub handler';
}
public function icon(): string
{
return 'cube';
}
};
$response = $handler->handleWebhook(Request::create('/', 'GET'), Plugin::factory()->make());
expect($response->getStatusCode())->toBe(404);
});
test('configure browser stage sets html from markup', function (): void {
$handler = new class extends PluginHandler
{
public function key(): string
{
return 'stub';
}
public function name(): string
{
return 'Stub';
}
public function description(): string
{
return 'Stub handler';
}
public function icon(): string
{
return 'cube';
}
};
$stage = new BrowserStage;
$handler->configureBrowserStage($stage, 'x', Plugin::factory()->make());
$html = (new ReflectionClass(BrowserStage::class))->getProperty('html');
$html->setAccessible(true);
expect($html->getValue($stage))->toBe('x');
});
test('default output is html', function (): void {
$handler = new class extends PluginHandler
{
public function key(): string
{
return 'stub';
}
public function name(): string
{
return 'Stub';
}
public function description(): string
{
return 'Stub handler';
}
public function icon(): string
{
return 'cube';
}
};
expect($handler->output())->toBe(PluginOutput::Html);
});