Spaces:
No application file
No application file
File size: 3,934 Bytes
d2897cd |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 |
<?php
namespace Mautic\ReportBundle\Tests\Controller\Api;
use Mautic\CoreBundle\Test\MauticMysqlTestCase;
use Symfony\Component\HttpFoundation\Response;
final class ReportApiControllerTest extends MauticMysqlTestCase
{
protected $useCleanupRollback = false;
/**
* Testing in a single method to decrease execution time from DB overhead.
*/
public function testPostGetPatchPutDeleteEndPoints(): void
{
// Create a new report
$data = json_decode(file_get_contents(__DIR__.'/data/post.json'), true);
$this->client->request('POST', '/api/reports/new', $data);
$response = $this->client->getResponse();
$responseData = json_decode($response->getContent(), true);
$this->assertSame(Response::HTTP_CREATED, $response->getStatusCode());
$this->assertTrue(isset($responseData['report']));
$this->assertEquals($data['name'], $responseData['report']['name']);
$id = $responseData['report']['id'];
$source = $data['source'];
// Get the new report
$this->client->restart();
$this->client->request('GET', sprintf('/api/reports/%s', $id));
$response = $this->client->getResponse();
$this->assertSame(Response::HTTP_OK, $response->getStatusCode());
$responseData = json_decode($response->getContent(), true);
$this->assertTrue(isset($responseData['data']));
$this->assertTrue(isset($responseData['dataColumns']));
$this->assertTrue(isset($responseData['report']));
$this->assertEquals($data['name'], $responseData['report']['name']);
// Patch a report
$data = json_decode(file_get_contents(__DIR__.'/data/patch.json'), true);
$this->client->request('PATCH', sprintf('/api/reports/%s/edit', $id), $data);
$response = $this->client->getResponse();
$this->assertSame(Response::HTTP_OK, $response->getStatusCode());
$responseData = json_decode($response->getContent(), true);
$this->assertTrue(isset($responseData['report']));
$this->assertEquals($source, $responseData['report']['source']);
$this->assertEquals($data['scheduleUnit'], $responseData['report']['scheduleUnit']);
$this->assertEquals($data['toAddress'], $responseData['report']['toAddress']);
$this->assertEquals($data['scheduleDay'], $responseData['report']['scheduleDay']);
// PUT a report
$data = json_decode(file_get_contents(__DIR__.'/data/put.json'), true);
$this->client->request('PUT', sprintf('/api/reports/%s/edit', $id), $data);
$response = $this->client->getResponse();
$this->assertSame(Response::HTTP_OK, $response->getStatusCode());
$responseData = json_decode($response->getContent(), true);
$this->assertTrue(isset($responseData['report']));
$this->assertEquals($data['name'], $responseData['report']['name']);
$this->assertEquals($data['source'], $responseData['report']['source']);
$this->assertEquals($data['scheduleUnit'], $responseData['report']['scheduleUnit']);
$this->assertEquals($data['toAddress'], $responseData['report']['toAddress']);
$this->assertEquals($data['scheduleDay'], $responseData['report']['scheduleDay']);
$this->assertEmpty($responseData['report']['filters']);
// DELETE a report
$this->client->request('DELETE', sprintf('/api/reports/%s/delete', $id), $data);
$response = $this->client->getResponse();
$this->assertSame(Response::HTTP_OK, $response->getStatusCode());
$this->assertTrue(isset($responseData['report']));
$this->assertEquals($data['name'], $responseData['report']['name']);
$this->client->request('GET', sprintf('/api/reports/%s', $id), $data);
$response = $this->client->getResponse();
$this->assertSame(Response::HTTP_NOT_FOUND, $response->getStatusCode());
}
}
|