Skip to content
This repository has been archived by the owner on Feb 20, 2024. It is now read-only.

Commit

Permalink
Merge pull request #86 from jongotlin/external-calls
Browse files Browse the repository at this point in the history
External calls
  • Loading branch information
Nyholm committed Nov 9, 2015
2 parents b105806 + 23fc0ff commit 14f6849
Show file tree
Hide file tree
Showing 4 changed files with 77 additions and 5 deletions.
10 changes: 10 additions & 0 deletions Event/BackupEvent.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
<?php

namespace Dizda\CloudBackupBundle\Event;

use Symfony\Component\EventDispatcher\Event;

class BackupEvent extends Event
{
const BACKUP_COMPLETED = 'dizda.cloudbackup.backup_completed';
}
24 changes: 19 additions & 5 deletions Manager/BackupManager.php
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@

namespace Dizda\CloudBackupBundle\Manager;

use Dizda\CloudBackupBundle\Event\BackupEvent;
use Psr\Log\LoggerInterface;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
use Symfony\Component\Filesystem\Exception\IOException;

class BackupManager
Expand All @@ -28,21 +30,29 @@ class BackupManager
private $processor;

/**
* @param LoggerInterface $logger
* @param DatabaseManager $database
* @param ClientManager $client
* @param ProcessorManager $processor
* @var EventDispatcherInterface
*/
private $eventDispatcher;

/**
* @param LoggerInterface $logger
* @param DatabaseManager $database
* @param ClientManager $client
* @param ProcessorManager $processor
* @param EventDispatcherInterface $eventDispatcher
*/
public function __construct(
LoggerInterface $logger,
DatabaseManager $database,
ClientManager $client,
ProcessorManager $processor
ProcessorManager $processor,
EventDispatcherInterface $eventDispatcher
) {
$this->logger = $logger;
$this->dbm = $database;
$this->cm = $client;
$this->processor = $processor;
$this->eventDispatcher = $eventDispatcher;
}

/**
Expand Down Expand Up @@ -84,6 +94,10 @@ public function execute()
return false;
}

if ($successful) {
$this->eventDispatcher->dispatch(BackupEvent::BACKUP_COMPLETED, new BackupEvent());
}

return $successful;
}

Expand Down
1 change: 1 addition & 0 deletions Resources/config/services.yml
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,7 @@ services:
- @dizda.cloudbackup.manager.database
- @dizda.cloudbackup.manager.client
- @dizda.cloudbackup.manager.processor
- @event_dispatcher

dizda.cloudbackup.manager.processor:
class: Dizda\CloudBackupBundle\Manager\ProcessorManager
Expand Down
47 changes: 47 additions & 0 deletions Tests/Manager/BackupManagerTest.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?php

namespace Dizda\CloudBackupBundle\Tests\Manager;

use Dizda\CloudBackupBundle\Event\BackupEvent;
use Dizda\CloudBackupBundle\Manager\BackupManager;

class BackupManagerTest extends \PHPUnit_Framework_TestCase
{
public function testBackupCompletedEventIsCalledOnSuccess()
{
$loggerMock = $this->getMock('Psr\Log\LoggerInterface');
$databaseManagerMock = $this->getMockBuilder('Dizda\CloudBackupBundle\Manager\DatabaseManager')
->disableOriginalConstructor()->getMock();
$clientManagerMock = $this->getMockBuilder('Dizda\CloudBackupBundle\Manager\ClientManager')
->disableOriginalConstructor()->getMock();
$processorManagerMock = $this->getMockBuilder('Dizda\CloudBackupBundle\Manager\ProcessorManager')
->disableOriginalConstructor()->getMock();
$eventDispatcherMock = $this->getMock('Symfony\Component\EventDispatcher\EventDispatcherInterface');
$eventDispatcherMock->expects($this->once())->method('dispatch')->with(BackupEvent::BACKUP_COMPLETED);

$backupManager = new BackupManager(
$loggerMock, $databaseManagerMock, $clientManagerMock, $processorManagerMock, $eventDispatcherMock
);
$backupManager->execute();
}

public function testBackupCompletedEventIsNotCalledWhenFailed()
{
$loggerMock = $this->getMock('Psr\Log\LoggerInterface');
$databaseManagerMock = $this->getMockBuilder('Dizda\CloudBackupBundle\Manager\DatabaseManager')
->disableOriginalConstructor()->getMock();
$clientManagerMock = $this->getMockBuilder('Dizda\CloudBackupBundle\Manager\ClientManager')
->disableOriginalConstructor()->getMock();
$processorManagerMock = $this->getMockBuilder('Dizda\CloudBackupBundle\Manager\ProcessorManager')
->disableOriginalConstructor()->getMock();
$processorManagerMock->expects($this->once())->method('copyFolders')
->will($this->throwException(new \Exception()));
$eventDispatcherMock = $this->getMock('Symfony\Component\EventDispatcher\EventDispatcherInterface');
$eventDispatcherMock->expects($this->never())->method('dispatch')->with(BackupEvent::BACKUP_COMPLETED);

$backupManager = new BackupManager(
$loggerMock, $databaseManagerMock, $clientManagerMock, $processorManagerMock, $eventDispatcherMock
);
$backupManager->execute();
}
}

0 comments on commit 14f6849

Please sign in to comment.