/**
* @property-read int $uid
* @property-read int $sid
- * @property-read int|null $fid
* @property-read int|null $cid
* @property-read bool $knowyou
* @property-read bool $duplex
/** @var int */
protected $sid;
/** @var int|null */
- protected $fid;
- /** @var int|null */
protected $cid;
/** @var bool */
protected $knowyou;
/**
* @param int $uid
* @param int $sid
- * @param int|null $fid
* @param int|null $cid
* @param bool $knowyou
* @param bool $duplex
* @param bool $ignore
* @param int|null $id
*/
- public function __construct(int $uid, int $sid, ?int $fid, ?int $cid, bool $knowyou, bool $duplex, string $note, string $hash, \DateTime $datetime, bool $ignore, ?int $id)
+ public function __construct(int $uid, int $sid, ?int $cid, bool $knowyou, bool $duplex, string $note, string $hash, \DateTime $datetime, bool $ignore, ?int $id)
{
- $this->uid = $uid;
- $this->sid = $sid;
- $this->fid = $fid;
- $this->cid = $cid;
- $this->knowyou = $knowyou;
- $this->duplex = $duplex;
- $this->note = $note;
- $this->hash = $hash;
- $this->ignore = $ignore;
- $this->id = $id;
+ $this->uid = $uid;
+ $this->sid = $sid;
+ $this->cid = $cid;
+ $this->knowyou = $knowyou;
+ $this->duplex = $duplex;
+ $this->note = $note;
+ $this->hash = $hash;
+ $this->datetime = $datetime;
+ $this->ignore = $ignore;
+ $this->id = $id;
}
/**
--- /dev/null
+<?php
+
+namespace Friendica\Test\src\Contact\Introduction\Factory;
+
+use Friendica\Contact\Introduction\Factory\Introduction;
+use PHPUnit\Framework\TestCase;
+use Psr\Log\NullLogger;
+
+class IntroductionTest extends TestCase
+{
+ public function dataRow()
+ {
+ return [
+ 'default' => [
+ 'input' => [
+ 'uid' => 42,
+ 'suggest-cid' => 13,
+ 'contact-id' => 24,
+ 'knowyou' => 1,
+ 'duplex' => 1,
+ 'note' => 'a note',
+ 'hash' => '12345',
+ 'datetime' => '1970-01-01 00:00:00',
+ 'ignore' => 0,
+ 'id' => 56,
+ ],
+ 'assertion' => [
+ 'uid' => 42,
+ 'suggest-cid' => 13,
+ 'contact-id' => 24,
+ 'knowyou' => true,
+ 'duplex' => true,
+ 'note' => 'a note',
+ 'hash' => '12345',
+ 'datetime' => new \DateTime('1970-01-01 00:00:00', new \DateTimeZone('UTC')),
+ 'ignore' => false,
+ 'id' => 56,
+ ]
+ ],
+ 'empty' => [
+ 'input' => [
+ ],
+ 'assertion' => [
+ 'uid' => 0,
+ 'suggest-cid' => 0,
+ 'contact-id' => null,
+ 'knowyou' => false,
+ 'duplex' => false,
+ 'note' => '',
+ 'ignore' => false,
+ 'id' => null,
+ ]
+ ],
+ ];
+ }
+
+ public function assertIntro(\Friendica\Contact\Introduction\Entity\Introduction $intro, array $assertion)
+ {
+ self::assertEquals($intro->id, $assertion['id'] ?? null);
+ self::assertEquals($intro->uid, $assertion['uid'] ?? 0);
+ self::assertEquals($intro->sid, $assertion['suggest-cid'] ?? 0);
+ self::assertEquals($intro->cid, $assertion['contact-id'] ?? null);
+ self::assertEquals($intro->knowyou, $assertion['knowyou'] ?? false);
+ self::assertEquals($intro->duplex, $assertion['duplex'] ?? false);
+ self::assertEquals($intro->note, $assertion['note'] ?? '');
+ if (isset($assertion['hash'])) {
+ self::assertEquals($intro->hash, $assertion['hash']);
+ } else {
+ self::assertIsString($intro->hash);
+ }
+ if (isset($assertion['datetime'])) {
+ self::assertEquals($intro->datetime, $assertion['datetime']);
+ } else {
+ self::assertInstanceOf(\DateTime::class, $intro->datetime);
+ }
+ self::assertEquals($intro->ignore, $assertion['ignore'] ?? false);
+ }
+
+ /**
+ * @dataProvider dataRow
+ */
+ public function testCreateFromTableRow(array $input, array $assertion)
+ {
+ $factory = new Introduction(new NullLogger());
+
+ $intro = $factory->createFromTableRow($input);
+ $this->assertIntro($intro, $assertion);
+ }
+
+ /**
+ * @dataProvider dataRow
+ */
+ public function testCreateNew(array $input, array $assertion)
+ {
+ $factory = new Introduction(new NullLogger());
+
+ $intro = $factory->createNew($input['uid'] ?? 0, $input['sid'] ?? 0, $input['note'] ?? '');
+
+ $this->assertIntro($intro, [
+ 'uid' => $input['uid'] ?? 0,
+ 'sid' => $input['sid'] ?? 0,
+ 'note' => $input['note'] ?? '',
+ ]);
+ }
+
+ /**
+ * @dataProvider dataRow
+ */
+ public function testCreateDummy(array $input, array $assertion)
+ {
+ $factory = new Introduction(new NullLogger());
+
+ $intro = $factory->createDummy($input['id'] ?? null);
+
+ $this->assertIntro($intro, ['id' => $input['id'] ?? null]);
+ }
+}