diff --git a/application/modules/admin/controllers/MultimediaController.php b/application/modules/admin/controllers/MultimediaController.php index 862609e15ad5fcbe3274fc00e73bb3e818658ab6..4a250a0b799359bd904d493fa3a6a65b358b4984 100644 --- a/application/modules/admin/controllers/MultimediaController.php +++ b/application/modules/admin/controllers/MultimediaController.php @@ -20,6 +20,8 @@ */ class Admin_MultimediaController extends ZendAfi_Controller_Action { + use Trait_Translator; + public function getRessourceDefinitions() { return [ @@ -171,6 +173,14 @@ disponible', 'device' => $device]); $this->_forward('index'); } + + + public function deleteHoldAction() { + $hold = Class_Multimedia_DeviceHold::find($this->_getParam('id')); + $hold->delete(); + $this->_redirect('/admin/multimedia/holds/id/'.$hold->getIdDevice()); + $this->_helper->notify($this->_('Réservation supprimée')); + } } ?> diff --git a/application/modules/admin/views/scripts/multimedia/holds.phtml b/application/modules/admin/views/scripts/multimedia/holds.phtml index 4b0bdf21c13591f07caa57ac9d6bed59bfaf9dc3..ce699105bfad768d6bbf41c4433e2d2ed0c66d6c 100644 --- a/application/modules/admin/views/scripts/multimedia/holds.phtml +++ b/application/modules/admin/views/scripts/multimedia/holds.phtml @@ -4,7 +4,7 @@ echo $this->tagModelTable( $this->device->getNextHolds(), [$this->_('Utilisateur'), $this->_('Début'), $this->_('Fin')], ['username', 'startHHMM', 'endHHMM'], - [], + [['action' => 'delete-hold', 'content' => $this->boutonIco('type=del')]], 'multimedia_holds', 'jour'); diff --git a/tests/application/modules/admin/controllers/MultimediaControllerTest.php b/tests/application/modules/admin/controllers/MultimediaControllerTest.php index 431e98ab9b2375ddabbdc83ceda9040ea77716ff..1e6301ab1dc53817b9491916ca6ac4981b0c87f6 100644 --- a/tests/application/modules/admin/controllers/MultimediaControllerTest.php +++ b/tests/application/modules/admin/controllers/MultimediaControllerTest.php @@ -21,7 +21,7 @@ require_once 'AdminAbstractControllerTestCase.php'; require_once 'TimeSourceForTest.php'; -abstract class Admin_MultimetiaControllerTestCase extends Admin_AbstractControllerTestCase { +abstract class Admin_MultimediaControllerTestCase extends Admin_AbstractControllerTestCase { public function setUp() { parent::setUp(); @@ -36,7 +36,7 @@ abstract class Admin_MultimetiaControllerTestCase extends Admin_AbstractControll -class Admin_MultimediaControllerIndexTest extends Admin_MultimetiaControllerTestCase { +class Admin_MultimediaControllerIndexTest extends Admin_MultimediaControllerTestCase { public function setUp() { parent::setUp(); @@ -113,7 +113,7 @@ class Admin_MultimediaControllerIndexTest extends Admin_MultimetiaControllerTest -class Admin_MultimediaControllerEditTest extends Admin_MultimetiaControllerTestCase { +class Admin_MultimediaControllerEditTest extends Admin_MultimediaControllerTestCase { public function setUp() { parent::setUp(); @@ -192,7 +192,7 @@ class Admin_MultimediaControllerEditTest extends Admin_MultimetiaControllerTestC -class Admin_MultimediaControllerBrowseTest extends Admin_MultimetiaControllerTestCase { +class Admin_MultimediaControllerBrowseTest extends Admin_MultimediaControllerTestCase { public function setUp() { parent::setUp(); @@ -259,7 +259,7 @@ class Admin_MultimediaControllerBrowseTest extends Admin_MultimetiaControllerTes -class Admin_MultimediaControllerAddTest extends Admin_MultimetiaControllerTestCase { +class Admin_MultimediaControllerAddTest extends Admin_MultimediaControllerTestCase { public function setUp() { parent::setUp(); $this->dispatch('/admin/multimedia/add', true); @@ -275,7 +275,7 @@ class Admin_MultimediaControllerAddTest extends Admin_MultimetiaControllerTestCa -class Admin_MultimediaControllerDeleteTest extends Admin_MultimetiaControllerTestCase { +class Admin_MultimediaControllerDeleteTest extends Admin_MultimediaControllerTestCase { public function setUp() { parent::setUp(); $this->dispatch('/admin/multimedia/delete/id/255', true); @@ -292,7 +292,7 @@ class Admin_MultimediaControllerDeleteTest extends Admin_MultimetiaControllerTes -class Admin_MultimediaControllerHoldsTest extends Admin_MultimetiaControllerTestCase { +class Admin_MultimediaControllerHoldsTest extends Admin_MultimediaControllerTestCase { public function setUp() { parent::setUp(); @@ -341,6 +341,12 @@ class Admin_MultimediaControllerHoldsTest extends Admin_MultimetiaControllerTest } + /** @test */ + public function secondRowShouldContainsActionToDeleteHold() { + $this->assertXPath('//tr[2]//td//a[contains(@href, "multimedia/delete-hold/id/3")]'); + } + + /** @test */ public function firstRowShouldContainsGroup2012_09_13() { $this->assertXPathContentContains('//tr[3]//td', '2012-09-13'); @@ -369,7 +375,7 @@ class Admin_MultimediaControllerHoldsTest extends Admin_MultimetiaControllerTest -class Admin_MultimediaControllerHoldsOnUnknownDeviceTest extends Admin_MultimetiaControllerTestCase { +class Admin_MultimediaControllerHoldsOnUnknownDeviceTest extends Admin_MultimediaControllerTestCase { public function setUp() { parent::setUp(); $this->dispatch('/admin/multimedia/holds/id/9999999999', true); @@ -382,4 +388,35 @@ class Admin_MultimediaControllerHoldsOnUnknownDeviceTest extends Admin_Multimeti } } + + + +class Admin_MultimediaControllerDeleteHoldTest extends Admin_MultimediaControllerTestCase { + protected $_hold; + + public function setUp() { + parent::setUp(); + Storm_Test_ObjectWrapper::onLoaderOfModel('Class_Multimedia_DeviceHold') + ->whenCalled('delete') + ->answers(true); + + $this->_hold = Class_Multimedia_DeviceHold::newInstanceWithId(3) + ->setIdDevice(10); + + $this->dispatch('/admin/multimedia/delete-hold/id/3', true); + } + + + /** @test */ + public function holdShouldHaveBeenDeleted() { + $this->assertSame($this->_hold, Class_Multimedia_DeviceHold::getFirstAttributeForLastCallOn('delete')); + } + + + /** @test */ + public function responseShouldRedirectToHoldsIdTen() { + $this->assertRedirectTo('/admin/multimedia/holds/id/10'); + } +} + ?> \ No newline at end of file