packages/ztd-query-mysql/tests/Unit/Rewrite/Upsert/ConflictPredicateTest.php

1<?php
2
3declare(strict_types=1);
4
5namespace Tests\Unit\Rewrite\Upsert;
6
7use PHPUnit\Framework\Attributes\CoversClass;
8use PHPUnit\Framework\TestCase;
9use ZtdQuery\Platform\MySql\Rewrite\Upsert\ConflictPredicate;
10
11#[\PHPUnit\Framework\Attributes\UsesClass(\ZtdQuery\Platform\MySql\Sql\MySqlIdentifierQuoter::class)]
12#[CoversClass(ConflictPredicate::class)]
13final class ConflictPredicateTest extends TestCase
14{
15    public function testConflictPredicate(): void
16    {
17        $predicate = new ConflictPredicate(new \ZtdQuery\Platform\MySql\Sql\MySqlIdentifierQuoter());
18        self::assertSame('((old.`id` = incoming.`id` AND old.`code` = incoming.`code`) OR (old.`email` = incoming.`email`))', $predicate->conflictPredicate(['PRIMARY' => ['id', 'code'], 'uq' => ['email'], 'empty' => []], 'old', 'incoming'));
19        self::assertSame('FALSE', $predicate->conflictPredicate(['empty' => []], 'old', 'incoming'));
20    }
21
22}
23