3
* Spring Signage Ltd - http://www.springsignage.com
4
* Copyright (C) 2015 Spring Signage Ltd
8
namespace Xibo\Tests\Integration\Widget;
10
use Xibo\Helper\Random;
11
use Xibo\OAuth2\Client\Entity\XiboLayout;
12
use Xibo\OAuth2\Client\Entity\XiboLibrary;
13
use Xibo\OAuth2\Client\Entity\XiboPdf;
14
use Xibo\OAuth2\Client\Entity\XiboPlaylist;
15
use Xibo\OAuth2\Client\Entity\XiboRegion;
16
use Xibo\OAuth2\Client\Entity\XiboWidget;
17
use Xibo\Tests\LocalWebTestCase;
19
class PdfWidgetTest extends LocalWebTestCase
21
protected $startLayouts;
23
* setUp - called before every test automatically
25
public function setup()
28
$this->startLayouts = (new XiboLayout($this->getEntityProvider()))->get(['start' => 0, 'length' => 10000]);
29
$this->startMedias = (new XiboLibrary($this->getEntityProvider()))->get(['start' => 0, 'length' => 10000]);
32
* tearDown - called after every test automatically
34
public function tearDown()
36
// tearDown all layouts that weren't there initially
37
$finalLayouts = (new XiboLayout($this->getEntityProvider()))->get(['start' => 0, 'length' => 10000]);
38
# Loop over any remaining layouts and nuke them
39
foreach ($finalLayouts as $layout) {
40
/** @var XiboLayout $layout */
42
foreach ($this->startLayouts as $startLayout) {
43
if ($startLayout->layoutId == $layout->layoutId) {
50
} catch (\Exception $e) {
51
fwrite(STDERR, 'Unable to delete ' . $layout->layoutId . '. E:' . $e->getMessage());
55
// tearDown all media files that weren't there initially
56
$finalMedias = (new XiboLibrary($this->getEntityProvider()))->get(['start' => 0, 'length' => 10000]);
57
# Loop over any remaining media files and nuke them
58
foreach ($finalMedias as $media) {
59
/** @var XiboLibrary $media */
61
foreach ($this->startMedias as $startMedia) {
62
if ($startMedia->mediaId == $media->mediaId) {
68
$media->deleteAssigned();
69
} catch (\Exception $e) {
70
fwrite(STDERR, 'Unable to delete ' . $media->mediaId . '. E:' . $e->getMessage());
77
public function testEdit()
80
$layout = (new XiboLayout($this->getEntityProvider()))->create('PDF edit Layout', 'phpunit description', '', 9);
81
# Add region to our layout
82
$region = (new XiboRegion($this->getEntityProvider()))->create($layout->layoutId, 1000,1000,200,200);
84
$media = (new XiboLibrary($this->getEntityProvider()))->create('API PDF', PROJECT_ROOT . '/tests/resources/sampleDocument.pdf');
85
# Assign media to a playlist
86
$playlist = (new XiboPlaylist($this->getEntityProvider()))->assign([$media->mediaId], 10, $region->playlists[0]['playlistId']);
87
$name = 'Edited Name';
89
$widget = $playlist->widgets[0];
90
$response = $this->client->put('/playlist/widget/' . $widget->widgetId, [
92
'duration' => $duration,
93
], ['CONTENT_TYPE' => 'application/x-www-form-urlencoded']);
94
$this->assertSame(200, $this->client->response->status());
95
$this->assertNotEmpty($this->client->response->body());
96
$object = json_decode($this->client->response->body());
97
$this->assertObjectHasAttribute('data', $object, $this->client->response->body());
98
$widgetOptions = (new XiboPdf($this->getEntityProvider()))->getById($region->playlists[0]['playlistId']);
99
$this->assertSame($name, $widgetOptions->name);
100
$this->assertSame($duration, $widgetOptions->duration);
101
$this->assertSame($media->mediaId, intval($widgetOptions->mediaIds[0]));
104
public function testDelete()
107
$layout = (new XiboLayout($this->getEntityProvider()))->create('PDF delete Layout', 'phpunit description', '', 9);
108
# Add region to our layout
109
$region = (new XiboRegion($this->getEntityProvider()))->create($layout->layoutId, 1000,1000,200,200);
111
$media = (new XiboLibrary($this->getEntityProvider()))->create('API video', PROJECT_ROOT . '/tests/resources/sampleDocument.pdf');
112
# Assign media to a region
113
$playlist = (new XiboPlaylist($this->getEntityProvider()))->assign([$media->mediaId], 10, $region->playlists[0]['playlistId']);
114
$widget = $playlist->widgets[0];
116
$this->client->delete('/playlist/widget/' . $widget->widgetId);
117
$response = json_decode($this->client->response->body());
118
$this->assertSame(200, $response->status, $this->client->response->body());