// file tests/integration/SubmissionHandlingTest.php
class SubmissionHandlingTest extends \Codeception\TestCase\WPTestCase {
public function test_good_request() {
$request = new WP_Rest_Request();
$handler = new Acme\Signup\SubmissionHandler();
$response = $handler->handle( $request );
$this->assertIntsanceOf( WP_REST_Response::class, $response );
$this->assertEquals( 200, $response->get_status() );
$this->assertInstanceOf( Acme\Signup\Submission_Good::class, $handler->last_submission() );
$this->assertEquals( 'luca', $handler->last_submission()->name() );
public function test_bad_email_request() {
$request = new WP_Rest_Request();
$request->set_body_params( [ 'name' => 'luca', 'email' => 'not-a-valid-email' ] );
$handler = new Acme\Signup\SubmissionHandler();
$response = $handler->handle( $request );
$this->assertIntsanceOf( WP_REST_Response::class, $response );
$this->assertEquals( 400, $response->get_status() );
$this->assertInstanceOf( Acme\Signup\Submission_Bad::class, $handler->last_submission() );
$this->assertEquals( 'luca', $handler->last_submission()->name() );
$this->assertEquals( 'not-a-valid-email', $handler->last_submission()->email() );