From 690369cc4ba53ccc43e7df7de6e0fbcd70909b36 Mon Sep 17 00:00:00 2001 From: Philipp Date: Tue, 19 Oct 2021 22:03:24 +0200 Subject: [PATCH] Fixings & add tests --- .../Introduction/Depository/Introduction.php | 1 - .../Introduction/Entity/Introduction.php | 26 ++-- .../Introduction/Factory/Introduction.php | 11 +- .../Introduction/Factory/IntroductionTest.php | 117 ++++++++++++++++++ 4 files changed, 132 insertions(+), 23 deletions(-) create mode 100644 tests/src/Contact/Introduction/Factory/IntroductionTest.php diff --git a/src/Contact/Introduction/Depository/Introduction.php b/src/Contact/Introduction/Depository/Introduction.php index 3a4498cf3..249252d44 100644 --- a/src/Contact/Introduction/Depository/Introduction.php +++ b/src/Contact/Introduction/Depository/Introduction.php @@ -68,7 +68,6 @@ class Introduction extends BaseDepository { return [ 'uid' => $introduction->uid, - 'fid' => $introduction->fid, 'contact-id' => $introduction->cid, 'suggest-cid' => $introduction->sid, 'knowyou' => $introduction->knowyou ? 1 : 0, diff --git a/src/Contact/Introduction/Entity/Introduction.php b/src/Contact/Introduction/Entity/Introduction.php index 119fd1e06..7485f8181 100644 --- a/src/Contact/Introduction/Entity/Introduction.php +++ b/src/Contact/Introduction/Entity/Introduction.php @@ -26,7 +26,6 @@ use Friendica\BaseEntity; /** * @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 @@ -43,8 +42,6 @@ class Introduction extends BaseEntity /** @var int */ protected $sid; /** @var int|null */ - protected $fid; - /** @var int|null */ protected $cid; /** @var bool */ protected $knowyou; @@ -64,7 +61,6 @@ class Introduction extends BaseEntity /** * @param int $uid * @param int $sid - * @param int|null $fid * @param int|null $cid * @param bool $knowyou * @param bool $duplex @@ -74,18 +70,18 @@ class Introduction extends BaseEntity * @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; } /** diff --git a/src/Contact/Introduction/Factory/Introduction.php b/src/Contact/Introduction/Factory/Introduction.php index 35275de7f..8aa5b7591 100644 --- a/src/Contact/Introduction/Factory/Introduction.php +++ b/src/Contact/Introduction/Factory/Introduction.php @@ -37,7 +37,6 @@ class Introduction extends BaseFactory implements ICanCreateFromTableRow return new Entity\Introduction( $row['uid'] ?? 0, $row['suggest-cid'] ?? 0, - $row['fid'] ?? null, $row['contact-id'] ?? null, !empty($row['knowyou']), !empty($row['duplex']), @@ -51,18 +50,16 @@ class Introduction extends BaseFactory implements ICanCreateFromTableRow public function createNew( int $uid, - int $cid, + int $sid, string $note, - int $fid = null, - int $sid = null, + int $cid = null, bool $knowyou = false, bool $duplex = false ): Entity\Introduction { return $this->createFromTableRow([ 'uid' => $uid, - 'fid' => $fid, - 'contact-id' => $cid, 'suggest-cid' => $sid, + 'contact-id' => $cid, 'knowyou' => $knowyou, 'duplex' => $duplex, 'note' => $note, @@ -72,7 +69,7 @@ class Introduction extends BaseFactory implements ICanCreateFromTableRow ]); } - public function createDummy(int $id): Entity\Introduction + public function createDummy(?int $id): Entity\Introduction { return $this->createFromTableRow(['id' => $id]); } diff --git a/tests/src/Contact/Introduction/Factory/IntroductionTest.php b/tests/src/Contact/Introduction/Factory/IntroductionTest.php new file mode 100644 index 000000000..9f45c54b0 --- /dev/null +++ b/tests/src/Contact/Introduction/Factory/IntroductionTest.php @@ -0,0 +1,117 @@ + [ + '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]); + } +}