respect-validation/tests/feature/Rules/EmojiTest.php
Henrique Moody 951c16e8e6
Refactor the NotEmoji rule
Since we have the ability to use `not` as a prefix, having rules that
validate negative behaviour makes them a bit inflexible, verbose, and
harder to understand.

This commit will refactor the `NotEmoji` and rename it to `Emoji`. It
will no longer check if the string contains emojis, but rather if the
string is an emoji or not. I’m also adding support to more emojis, since
the rule was a bit outdated.

This change will make the validator more strict, but will make it useful
in other scenarios. However, later on, I would like to create a rule
called `has` which, could use a validator like `Emoji` to check if the
input _has_ emojis.

Assisted-by: Cursor (claude-4.5-opus-high)
2025-12-29 11:16:25 +01:00

24 lines
858 B
PHP

<?php
/*
* Copyright (c) Alexandre Gomes Gaigalas <alganet@gmail.com>
* SPDX-License-Identifier: MIT
*/
declare(strict_types=1);
test('default template', catchAll(
fn() => v::emoji()->assert('☎︎'),
fn(string $message, string $fullMessage, array $messages) => expect()
->and($message)->toBe('"☎︎" must be an emoji')
->and($fullMessage)->toBe('- "☎︎" must be an emoji')
->and($messages)->toBe(['emoji' => '"☎︎" must be an emoji']),
));
test('inverted template', catchAll(
fn() => v::not(v::emoji())->assert('🐼'),
fn(string $message, string $fullMessage, array $messages) => expect()
->and($message)->toBe('"🐼" must not be an emoji')
->and($fullMessage)->toBe('- "🐼" must not be an emoji')
->and($messages)->toBe(['notEmoji' => '"🐼" must not be an emoji']),
));