<?php

///...

#[DataProvider('invalidDataLeadsToUnprocessableEntityProvider')]
public function invalidDataLeadsToUnprocessableEntity(ApiTester $I, Example $example): void
{
    // 1. 'Arrange'
    $user = UserFactory::createOne()->_real();
    $I->amLoggedInAs($user);

    // 2. 'Act'
    $data = [$example['property'] => $example['value']];
    $I->sendPatch('/api/users/1', $data);

    // 3. 'Assert'
    $I->seeResponseCodeIs(422);
    $I->seeResponseIsJson();
}

protected function invalidDataLeadsToUnprocessableEntityProvider(): array
{
    return [
        [
            'property' => 'login',
            'value' => '<',
        ],
        [
            'property' => 'login',
            'value' => '&',
        ],
        [
            'property' => 'login',
            'value' => '"',
        ],
        [
            'property' => 'login',
            'value' => '>',
        ],
        [
            'property' => 'firstname',
            'value' => '<',
        ],
        [
            'property' => 'firstname',
            'value' => '&',
        ],
        [
            'property' => 'firstname',
            'value' => '"',
        ],
        [
            'property' => 'firstname',
            'value' => '>',
        ],
        [
            'property' => 'lastname',
            'value' => '<',
        ],
        [
            'property' => 'lastname',
            'value' => '&',
        ],
        [
            'property' => 'lastname',
            'value' => '"',
        ],
        [
            'property' => 'lastname',
            'value' => '>',
        ],
        [
            'property' => 'email',
            'value' => 'badMail',
        ],
        [
            'property' => 'email',
            'value' => 'mail.fr',
        ],
        [
            'property' => 'email',
            'value' => 'mail@example',
        ],
    ];
}