]> git.mxchange.org Git - friendica.git/blob - tests/src/Moderation/Factory/ReportTest.php
Reports: The reporting contact id is added
[friendica.git] / tests / src / Moderation / Factory / ReportTest.php
1 <?php
2 /**
3  * @copyright Copyright (C) 2010-2022, the Friendica project
4  *
5  * @license GNU AGPL version 3 or any later version
6  *
7  * This program is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU Affero General Public License as
9  * published by the Free Software Foundation, either version 3 of the
10  * License, or (at your option) any later version.
11  *
12  * This program is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15  * GNU Affero General Public License for more details.
16  *
17  * You should have received a copy of the GNU Affero General Public License
18  * along with this program.  If not, see <https://www.gnu.org/licenses/>.
19  *
20  */
21
22 namespace Friendica\Test\src\Moderation\Factory;
23
24 use Friendica\Moderation\Factory;
25 use Friendica\Moderation\Entity;
26 use Friendica\Test\MockedTest;
27 use Psr\Log\NullLogger;
28
29 class ReportTest extends MockedTest
30 {
31         public function dataCreateFromTableRow(): array
32         {
33                 return [
34                         'default' => [
35                                 'row' => [
36                                         'id'          => 11,
37                                         'uid'         => 12,
38                                         'reporter-id' => 14,
39                                         'cid'         => 13,
40                                         'comment'     => '',
41                                         'forward'     => false,
42                                         'created'     => null
43                                 ],
44                                 'postUriIds' => [],
45                                 'assertion'  => new Entity\Report(
46                                         12,
47                                         14,
48                                         13,
49                                         new \DateTime('now', new \DateTimeZone('UTC')),
50                                         '',
51                                         false,
52                                         [],
53                                         11,
54                                 ),
55                         ],
56                         'full' => [
57                                 'row' => [
58                                         'id'          => 11,
59                                         'uid'         => 12,
60                                         'reporter-id' => 14,
61                                         'cid'         => 13,
62                                         'comment'     => 'Report',
63                                         'forward'     => true,
64                                         'created'     => '2021-10-12 12:23:00'
65                                 ],
66                                 'postUriIds' => [89, 90],
67                                 'assertion'  => new Entity\Report(
68                                         12,
69                                         14,
70                                         13,
71                                         new \DateTime('2021-10-12 12:23:00', new \DateTimeZone('UTC')),
72                                         'Report',
73                                         true,
74                                         [89, 90],
75                                         11
76                                 ),
77                         ],
78                 ];
79         }
80
81         public function assertReport(Entity\Report $assertion, Entity\Report $report)
82         {
83                 self::assertEquals(
84                         $assertion->id,
85                         $report->id
86                 );
87                 self::assertEquals($assertion->uid, $report->uid);
88                 self::assertEquals($assertion->reporterId, $report->reporterId);
89                 self::assertEquals($assertion->cid, $report->cid);
90                 self::assertEquals($assertion->comment, $report->comment);
91                 self::assertEquals($assertion->forward, $report->forward);
92                 // No way to test "now" at the moment
93                 //self::assertEquals($assertion->created, $report->created);
94                 self::assertEquals($assertion->postUriIds, $report->postUriIds);
95         }
96
97         /**
98          * @dataProvider dataCreateFromTableRow
99          */
100         public function testCreateFromTableRow(array $row, array $postUriIds, Entity\Report $assertion)
101         {
102                 $factory = new Factory\Report(new NullLogger());
103
104                 $this->assertReport($factory->createFromTableRow($row, $postUriIds), $assertion);
105         }
106
107         public function dataCreateFromReportsRequest(): array
108         {
109                 return [
110                         'default' => [
111                                 'uid'         => 12,
112                                 'reporter-id' => 14,
113                                 'cid'         => 13,
114                                 'comment'     => '',
115                                 'forward'     => false,
116                                 'postUriIds'  => [],
117                                 'assertion'   => new Entity\Report(
118                                         12,
119                                         14,
120                                         13,
121                                         new \DateTime('now', new \DateTimeZone('UTC')),
122                                         '',
123                                         false,
124                                         [],
125                                         null
126                                 ),
127                         ],
128                         'full' => [
129                                 'uid'         => 12,
130                                 'reporter-id' => 14,
131                                 'cid'         => 13,
132                                 'comment'     => 'Report',
133                                 'forward'     => true,
134                                 'postUriIds'  => [89, 90],
135                                 'assertion'   => new Entity\Report(
136                                         12,
137                                         14,
138                                         13,
139                                         new \DateTime('now', new \DateTimeZone('UTC')),
140                                         'Report',
141                                         true,
142                                         [89, 90],
143                                         null
144                                 ),
145                         ],
146                 ];
147         }
148
149         /**
150          * @dataProvider dataCreateFromReportsRequest
151          */
152         public function testCreateFromReportsRequest(int $uid, int $reporter, int $cid, string $comment, bool $forward, array $postUriIds, Entity\Report $assertion)
153         {
154                 $factory = new Factory\Report(new NullLogger());
155
156                 $this->assertReport($factory->createFromReportsRequest($uid, $reporter, $cid, $comment, $forward, $postUriIds), $assertion);
157         }
158 }