Skip to content

Commit bf004d0

Browse files
committed
ISSUE-337: fix the rest of tests
1 parent f09b1f9 commit bf004d0

17 files changed

+194
-319
lines changed

src/Controller/ListController.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -79,15 +79,15 @@ public function deleteList(Request $request, SubscriberList $list): JsonResponse
7979

8080
$this->subscriberListRepository->remove($list);
8181

82-
return new JsonResponse(null, Response::HTTP_OK, [], true);
82+
return new JsonResponse(null, Response::HTTP_NO_CONTENT, [], false);
8383
}
8484

8585
#[Route('/lists/{id}/members', name: 'get_subscriber_from_list', methods: ['GET'])]
8686
public function getListMembers(Request $request, SubscriberList $list): JsonResponse
8787
{
8888
$this->requireAuthentication($request);
8989

90-
$subscribers = $this->subscriberRepository->findSubscribersBySubscribedList($list->getId());
90+
$subscribers = $this->subscriberRepository->getSubscribersBySubscribedListId($list->getId());
9191

9292
$json = $this->serializer->serialize($subscribers, 'json', [
9393
AbstractNormalizer::GROUPS => 'SubscriberListMembers',
@@ -96,7 +96,7 @@ public function getListMembers(Request $request, SubscriberList $list): JsonResp
9696
return new JsonResponse($json, Response::HTTP_OK, [], true);
9797
}
9898

99-
#[Route('/lists/{id}/count', name: 'get_subscribers_count_from_list', methods: ['GET'])]
99+
#[Route('/lists/{id}/subscribers/count', name: 'get_subscribers_count_from_list', methods: ['GET'])]
100100
public function getSubscribersCount(Request $request, SubscriberList $list): JsonResponse
101101
{
102102
$this->requireAuthentication($request);

src/Controller/SessionController.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public function createSession(Request $request): JsonResponse
7272
$token = $this->createAndPersistToken($administrator);
7373
$json = $this->serializer->serialize($token, 'json');
7474

75-
return new JsonResponse($json, Response::HTTP_OK, [], true);
75+
return new JsonResponse($json, Response::HTTP_CREATED, [], true);
7676
}
7777

7878
/**
@@ -92,7 +92,7 @@ public function deleteAction(Request $request, AdministratorToken $token): JsonR
9292

9393
$this->tokenRepository->remove($token);
9494

95-
return new JsonResponse(null, Response::HTTP_OK, [], true);
95+
return new JsonResponse(null, Response::HTTP_NO_CONTENT, [], false);
9696
}
9797

9898
/**

src/Controller/SubscriberController.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,7 @@ public function __construct(
4848
* Creates a new subscriber (if the provided data is valid and there is no subscriber with the given email
4949
* address yet).
5050
*/
51-
#[Route('/subscriber', name: 'create_subscriber', methods: ['POST'])]
51+
#[Route('/subscribers', name: 'create_subscriber', methods: ['POST'])]
5252
public function postAction(Request $request): JsonResponse
5353
{
5454
$this->requireAuthentication($request);

src/EventListener/ExceptionListener.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace PhpList\RestBundle\EventListener;
66

7+
use Exception;
78
use Symfony\Component\HttpFoundation\JsonResponse;
89
use Symfony\Component\HttpKernel\Event\ExceptionEvent;
910
use Symfony\Component\HttpKernel\Exception\AccessDeniedHttpException;
@@ -27,7 +28,7 @@ public function onKernelException(ExceptionEvent $event): void
2728
], $exception->getStatusCode());
2829

2930
$event->setResponse($response);
30-
} elseif ($exception instanceof \Exception) {
31+
} elseif ($exception instanceof Exception) {
3132
$response = new JsonResponse([
3233
'message' => $exception->getMessage(),
3334
], 500);

tests/Integration/Controller/AbstractControllerTest.php renamed to tests/Integration/Controller/AbstractTestController.php

Lines changed: 20 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
namespace PhpList\RestBundle\Tests\Integration\Controller;
66

7+
use Doctrine\ORM\Tools\SchemaTool;
78
use PhpList\Core\TestingSupport\Traits\DatabaseTestTrait;
89
use PhpList\RestBundle\Tests\Integration\Controller\Fixtures\AdministratorFixture;
910
use PhpList\RestBundle\Tests\Integration\Controller\Fixtures\AdministratorTokenFixture;
@@ -18,13 +19,23 @@
1819
*
1920
* @author Oliver Klee <oliver@phplist.com>
2021
*/
21-
abstract class AbstractControllerTest extends WebTestCase
22+
abstract class AbstractTestController extends WebTestCase
2223
{
2324
use DatabaseTestTrait;
2425

2526
protected function setUp(): void
2627
{
28+
parent::setUp();
29+
self::createClient();
2730
$this->setUpDatabaseTest();
31+
$this->loadSchema();
32+
}
33+
34+
protected function tearDown(): void
35+
{
36+
$schemaTool = new SchemaTool($this->entityManager);
37+
$schemaTool->dropDatabase();
38+
parent::tearDown();
2839
}
2940

3041
/**
@@ -50,7 +61,14 @@ protected function jsonRequest(
5061
$serverWithContentType = $server;
5162
$serverWithContentType['CONTENT_TYPE'] = 'application/json';
5263

53-
return self::getClient()->request($method, $uri, $parameters, $files, $serverWithContentType, $content);
64+
return self::getClient()->request(
65+
$method,
66+
$uri,
67+
$parameters,
68+
$files,
69+
$serverWithContentType,
70+
$content
71+
);
5472
}
5573

5674
/**
@@ -225,7 +243,6 @@ protected function assertHttpConflict(): void
225243

226244
self::assertSame(
227245
[
228-
'code' => Response::HTTP_CONFLICT,
229246
'message' => 'This resource already exists.',
230247
],
231248
$this->getDecodedJsonResponseContent()

tests/Integration/Controller/Fixtures/AdministratorFixture.php

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,17 @@ public function load(ObjectManager $manager): void
3333
$row = array_combine($headers, $data);
3434

3535
$admin = new Administrator();
36+
$this->setSubjectId($admin, (int)$row['id']);
3637
$admin->setLoginName($row['loginname']);
3738
$admin->setEmailAddress($row['email']);
38-
$this->setSubjectProperty($admin,'creationDate', new DateTime($row['created']));
3939
$admin->setPasswordHash($row['password']);
40-
$this->setSubjectProperty($admin,'passwordChangeDate', new DateTime($row['passwordchanged']));
4140
$admin->setDisabled((bool) $row['disabled']);
4241
$admin->setSuperUser((bool) $row['superuser']);
42+
4343
$manager->persist($admin);
44+
45+
$this->setSubjectProperty($admin,'creationDate', new DateTime($row['created']));
46+
$this->setSubjectProperty($admin,'passwordChangeDate', new DateTime($row['passwordchanged']));
4447
}
4548

4649
fclose($handle);

tests/Integration/Controller/Fixtures/AdministratorTokenFixture.php

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -29,20 +29,27 @@ public function load(ObjectManager $manager): void
2929
}
3030

3131
$headers = fgetcsv($handle);
32-
33-
$administratorRepository = $manager->getRepository(Administrator::class);
32+
$adminRepository = $manager->getRepository(Administrator::class);
3433

3534
while (($data = fgetcsv($handle)) !== false) {
3635
$row = array_combine($headers, $data);
3736

37+
$admin = $adminRepository->find($row['adminid']);
38+
if ($admin === null) {
39+
$admin = new Administrator();
40+
$this->setSubjectId($admin,(int)$row['adminid']);
41+
$admin->setSuperUser(true);
42+
$manager->persist($admin);
43+
}
44+
3845
$adminToken = new AdministratorToken();
39-
$this->setSubjectId($adminToken,$row['id']);
46+
$this->setSubjectId($adminToken,(int)$row['id']);
4047
$adminToken->setKey($row['value']);
41-
$this->setSubjectProperty($adminToken,'expiry', new DateTime($row['expires']));
42-
$adminToken->setAdministrator($administratorRepository->find($row['adminid']));
43-
$this->setSubjectProperty($adminToken,'creationDate', new DateTime($row['created']));
44-
48+
$adminToken->setAdministrator($admin);
4549
$manager->persist($adminToken);
50+
51+
$this->setSubjectProperty($adminToken,'expiry', new DateTime($row['expires']));
52+
$this->setSubjectProperty($adminToken, 'creationDate', (bool) $row['entered']);
4653
}
4754

4855
fclose($handle);
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
id,entered,modified,email,confirmed,blacklisted,bouncecount,uniqid,htmlemail,disabled
22
1,"2016-07-22 15:01:17","2016-08-23 19:50:43","oliver@example.com",1,1,17,"95feb7fe7e06e6c11ca8d0c48cb46e89",1,1
3+
2,"2016-07-22 15:01:17","2016-08-23 19:50:43","oliver1@example.com",1,1,17,"95feb7fe7e06e6c11ca8d0c48cb46e87",1,1
4+
3,"2016-07-22 15:01:17","2016-08-23 19:50:43","oliver2@example.com",1,1,17,"95feb7fe7e06e6c11ca8d0c48cb46e86",1,1

tests/Integration/Controller/Fixtures/SubscriberFixture.php

Lines changed: 19 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,15 @@
66

77
use DateTime;
88
use Doctrine\Bundle\FixturesBundle\Fixture;
9-
use Doctrine\DBAL\Connection;
109
use Doctrine\Persistence\ObjectManager;
10+
use PhpList\Core\Domain\Model\Subscription\Subscriber;
11+
use PhpList\Core\TestingSupport\Traits\ModelTestTrait;
1112
use RuntimeException;
1213

1314
class SubscriberFixture extends Fixture
1415
{
16+
use ModelTestTrait;
17+
1518
public function load(ObjectManager $manager): void
1619
{
1720
$csvFile = __DIR__ . '/Subscriber.csv';
@@ -26,41 +29,25 @@ public function load(ObjectManager $manager): void
2629
}
2730

2831
$headers = fgetcsv($handle);
29-
if ($headers === false) {
30-
throw new RuntimeException('Could not read headers from CSV file.');
31-
}
32-
33-
/** @var Connection $connection */
34-
$connection = $manager->getConnection();
35-
36-
$insertQuery = "
37-
INSERT INTO phplist_user_user (
38-
id, entered, modified, email, confirmed, blacklisted, bouncecount,
39-
uniqid, htmlemail, disabled, extradata
40-
) VALUES (
41-
:id, :creation_date, :modification_date, :email, :confirmed, :blacklisted, :bounce_count,
42-
:unique_id, :html_email, :disabled, :extra_data
43-
)
44-
";
45-
46-
$stmt = $connection->prepare($insertQuery);
4732

4833
while (($data = fgetcsv($handle)) !== false) {
4934
$row = array_combine($headers, $data);
5035

51-
$stmt->executeStatement([
52-
'id' => (int) $row['id'],
53-
'creation_date' => (new DateTime($row['entered']))->format('Y-m-d H:i:s'),
54-
'modification_date' => (new DateTime($row['modified']))->format('Y-m-d H:i:s'),
55-
'email' => $row['email'],
56-
'confirmed' => (bool) $row['confirmed'] ? 1 : 0,
57-
'blacklisted' => (bool) $row['blacklisted'] ? 1 : 0,
58-
'bounce_count' => (int) $row['bouncecount'],
59-
'unique_id' => $row['uniqueid'],
60-
'html_email' => (bool) $row['htmlemail'] ? 1 : 0,
61-
'disabled' => (bool) $row['disabled'] ? 1 : 0,
62-
'extra_data' => $row['extradata'],
63-
]);
36+
$subscriber = new Subscriber();
37+
$this->setSubjectId($subscriber,(int)$row['id']);
38+
39+
$subscriber->setEmail($row['email']);
40+
$subscriber->setConfirmed((bool) $row['confirmed']);
41+
$subscriber->setBlacklisted((bool) $row['blacklisted']);
42+
$subscriber->setBounceCount((int) $row['bouncecount']);
43+
$subscriber->setHtmlEmail((bool) $row['htmlemail']);
44+
$subscriber->setDisabled((bool) $row['disabled']);
45+
46+
$manager->persist($subscriber);
47+
// avoid pre-persist
48+
$subscriber->setUniqueId($row['uniqid']);
49+
$this->setSubjectProperty($subscriber,'creationDate', new DateTime($row['entered']));
50+
$this->setSubjectProperty($subscriber,'modificationDate', new DateTime($row['modified']));
6451
}
6552

6653
fclose($handle);

tests/Integration/Controller/Fixtures/SubscriberListFixture.php

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,25 +30,33 @@ public function load(ObjectManager $manager): void
3030

3131
$headers = fgetcsv($handle);
3232

33+
$adminRepository = $manager->getRepository(Administrator::class);
34+
3335
while (($data = fgetcsv($handle)) !== false) {
3436
$row = array_combine($headers, $data);
35-
$admin = new Administrator();
36-
$this->setSubjectId($admin,(int)$row['owner']);
37+
$admin = $adminRepository->find($row['owner']);
38+
if ($admin === null) {
39+
$admin = new Administrator();
40+
$this->setSubjectId($admin,(int)$row['owner']);
41+
$admin->setSuperUser(true);
42+
$admin->setDisabled(false);
43+
$manager->persist($admin);
44+
}
3745

3846
$subscriberList = new SubscriberList();
3947
$this->setSubjectId($subscriberList,(int)$row['id']);
4048
$subscriberList->setName($row['name']);
4149
$subscriberList->setDescription($row['description']);
42-
$this->setSubjectProperty($subscriberList,'creationDate', new DateTime($row['entered']));
43-
$this->setSubjectProperty($subscriberList,'modificationDate', new DateTime($row['modified']));
4450
$subscriberList->setListPosition((int)$row['listorder']);
4551
$subscriberList->setSubjectPrefix($row['prefix']);
4652
$subscriberList->setPublic((bool) $row['active']);
4753
$subscriberList->setCategory($row['category']);
4854
$subscriberList->setOwner($admin);
4955

50-
$manager->persist($admin);
5156
$manager->persist($subscriberList);
57+
58+
$this->setSubjectProperty($subscriberList,'creationDate', new DateTime($row['entered']));
59+
$this->setSubjectProperty($subscriberList,'modificationDate', new DateTime($row['modified']));
5260
}
5361

5462
fclose($handle);

0 commit comments

Comments
 (0)