Files
piratepoet/tests/unit/API/SegmentsTest.php
Jonathan Labreuille 2e88d7cce0 Added API/Endpoint abstract class
- (re)Added Endpoints folder to both API and Router
- fixed syntax in namespaces
- xhr.responseJSON is returned to the fail()
- fixed Router endpoints (view in browser, cron,...)
2016-08-02 17:08:43 +02:00

136 lines
3.9 KiB
PHP

<?php
use \MailPoet\API\Endpoints\Segments;
use \MailPoet\Models\Segment;
class SegmentsTest extends MailPoetTest {
function _before() {
$this->segment_1 = Segment::createOrUpdate(array('name' => 'Segment 1'));
$this->segment_2 = Segment::createOrUpdate(array('name' => 'Segment 2'));
$this->segment_3 = Segment::createOrUpdate(array('name' => 'Segment 3'));
}
function testItCanGetASegment() {
$router = new Segments();
$response = $router->get(/* missing id */);
expect($response)->false();
$response = $router->get('not_an_id');
expect($response)->false();
$response = $router->get($this->segment_1->id());
expect($response['name'])->equals($this->segment_1->name);
}
function testItCanGetListingData() {
$router = new Segments();
$response = $router->listing();
expect($response)->hasKey('filters');
expect($response)->hasKey('groups');
expect($response['count'])->equals(3);
expect($response['items'])->count(3);
expect($response['items'][0]['name'])->equals($this->segment_1->name);
expect($response['items'][1]['name'])->equals($this->segment_2->name);
expect($response['items'][2]['name'])->equals($this->segment_3->name);
}
function testItCanSaveASegment() {
$segment_data = array(
'name' => 'New Segment'
);
$router = new Segments();
$response = $router->save(/* missing data */);
expect($response['result'])->false();
expect($response['errors'][0])->equals('Please specify a name');
$response = $router->save($segment_data);
expect($response['result'])->true();
$segment = Segment::where('name', 'New Segment')->findOne();
expect($segment->name)->equals($segment_data['name']);
}
function testItCannotSaveDuplicate() {
$duplicate_entry = array(
'name' => 'Segment 1'
);
$router = new Segments();
$response = $router->save($duplicate_entry);
expect($response['result'])->false();
expect($response['errors'][0])->equals(
'Another record already exists. Please specify a different "name".'
);
}
function testItCanRestoreASegment() {
$this->segment_1->trash();
$trashed_segment = Segment::findOne($this->segment_1->id());
expect($trashed_segment->deleted_at)->notNull();
$router = new Segments();
$response = $router->restore($this->segment_1->id());
expect($response)->true();
$restored_segment = Segment::findOne($this->segment_1->id());
expect($restored_segment->deleted_at)->null();
}
function testItCanTrashASegment() {
$router = new Segments();
$response = $router->trash($this->segment_2->id());
expect($response)->true();
$trashed_segment = Segment::findOne($this->segment_2->id());
expect($trashed_segment->deleted_at)->notNull();
}
function testItCanDeleteASegment() {
$router = new Segments();
$response = $router->delete($this->segment_3->id());
expect($response)->equals(1);
$deleted_segment = Segment::findOne($this->segment_3->id());
expect($deleted_segment)->false();
}
function testItCanDuplicateASegment() {
$router = new Segments();
$response = $router->duplicate($this->segment_1->id());
expect($response['name'])->equals('Copy of '.$this->segment_1->name);
$duplicated_segment = Segment::findOne($response['id']);
expect($duplicated_segment->name)->equals('Copy of '.$this->segment_1->name);
}
function testItCanBulkDeleteSegments() {
expect(Segment::count())->equals(3);
$segments = Segment::findMany();
foreach($segments as $segment) {
$segment->trash();
}
$router = new Segments();
$response = $router->bulkAction(array(
'action' => 'delete',
'listing' => array('group' => 'trash')
));
expect($response)->equals(3);
$response = $router->bulkAction(array(
'action' => 'delete',
'listing' => array('group' => 'trash')
));
expect($response)->equals(0);
}
function _after() {
Segment::deleteMany();
}
}