mirror of
https://github.com/FH-Complete/FHC-Core.git
synced 2026-07-21 17:02:19 +00:00
using phpunit to test controllers which are running in codeigniter3 requires further request/response mocking; setup of swagger-ui and swagger openapi doc generation for bookmark.php; WIP integration tests with ci3 & phpunit, maybe annotation generation solution for swagger annotations
This commit is contained in:
committed by
Johann Hoffmann
parent
37fa899540
commit
664796c69f
@@ -0,0 +1,80 @@
|
||||
<?php
|
||||
// tests/Integration/ApiControllerTest.php
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
|
||||
class BookmarkIntegrationTest extends TestCase
|
||||
{
|
||||
/** @var CI_Controller */
|
||||
protected $CI;
|
||||
|
||||
public function setUp()
|
||||
{
|
||||
// Grab the global CI instance
|
||||
$this->CI =& get_instance();
|
||||
|
||||
// Make sure we're in a clean state:
|
||||
// - no lingering URI segments
|
||||
// - fresh router rules
|
||||
$this->CI->uri->uri_string = '';
|
||||
$this->CI->router->_set_routing([]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Simulate a GET to /api/users and assert JSON list
|
||||
*/
|
||||
public function testGetUsersReturnsJsonArray()
|
||||
{
|
||||
// 1) Fake server variables
|
||||
$_SERVER['REQUEST_METHOD'] = 'GET';
|
||||
// you can use PATH_INFO or REQUEST_URI depending on your config
|
||||
$_SERVER['PATH_INFO'] = '/api/users';
|
||||
$_GET = []; $_POST = [];
|
||||
|
||||
// 2) Re-run routing so CI picks up our fake path
|
||||
$this->CI->router->_set_routing();
|
||||
$this->CI->uri->_set_uri_string('/api/users');
|
||||
$this->CI->router->set_class('api');
|
||||
$this->CI->router->set_method('users');
|
||||
|
||||
// 3) Capture the output
|
||||
ob_start();
|
||||
// This is the entry point:
|
||||
// core/CodeIgniter.php will look at $RTR->class/method
|
||||
// instantiate your Api controller, call ->users()
|
||||
require BASEPATH . 'core/CodeIgniter.php';
|
||||
$output = ob_get_clean();
|
||||
|
||||
// 4) Assert JSON shape, status header, etc.
|
||||
$this->assertNotEmpty($output, 'No output at all');
|
||||
$decoded = json_decode($output, true);
|
||||
$this->assertIsArray($decoded, 'Expected JSON array');
|
||||
// more fine‐grained assertions…
|
||||
}
|
||||
|
||||
/**
|
||||
* Simulate a POST to /api/users
|
||||
*/
|
||||
public function testCreateUser()
|
||||
{
|
||||
$_SERVER['REQUEST_METHOD'] = 'POST';
|
||||
$_SERVER['PATH_INFO'] = '/api/users';
|
||||
$_POST = [
|
||||
'name' => 'Alice',
|
||||
'email' => 'alice@example.com',
|
||||
];
|
||||
$_GET = [];
|
||||
|
||||
$this->CI->router->_set_routing();
|
||||
$this->CI->uri->_set_uri_string('/api/users');
|
||||
$this->CI->router->set_class('api');
|
||||
$this->CI->router->set_method('users');
|
||||
|
||||
ob_start();
|
||||
require BASEPATH . 'core/CodeIgniter.php';
|
||||
$out = ob_get_clean();
|
||||
|
||||
$this->assertStringContainsString('"id":', $out);
|
||||
$this->assertMatchesRegularExpression('/201 Created/', xdebug_get_headers());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user